Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraradermache2013-01-28 13:37:38 +0000
committeraradermache2013-01-28 13:37:38 +0000
commitebd5809581875b8c12cb622ae81c8067d668b945 (patch)
treef854e1f8841efea14d48498360f65cbb9926e202
parent2744195194144042bef2c17eda5e1ef35d009933 (diff)
downloadorg.eclipse.papyrus-ebd5809581875b8c12cb622ae81c8067d668b945.tar.gz
org.eclipse.papyrus-ebd5809581875b8c12cb622ae81c8067d668b945.tar.xz
org.eclipse.papyrus-ebd5809581875b8c12cb622ae81c8067d668b945.zip
Initial version for migration of Qompass designer from 0.9.2 to the trunk (0.10)
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/.classpath7
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/.project28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/META-INF/MANIFEST.MF18
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/about.html28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/build.properties9
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/icons/codegen.gifbin0 -> 114 bytes
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/plugin.properties12
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/plugin.xml58
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/Activator.java50
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/handler/GenerateCodeHandler.java116
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/preferences/CodegenPreferencePage.java114
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.classpath8
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.jetproperties4
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.project39
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF26
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/about.html28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/build.properties11
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppBindBody.java167
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppBindHeader.java186
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppClassBody.java147
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppClassHeader.java278
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppInterfaceHeader.java160
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppPackageHeader.java203
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppTemplateHeader.java288
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppElementDoc.java58
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppOperationDoc.java82
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppParamDoc.java57
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppAttributeDeclaration.java124
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppAttributeImplementation.java105
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAllIncludesDeclaration.java89
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAttributesDeclaration.java59
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAttributesImplementation.java71
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassFriendDeclaration.java52
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeClassDeclaration.java72
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeDeclaration.java88
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeFriendDeclaration.java71
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassInheritedDeclarations.java130
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassInlineOperationsImplementation.java63
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassOperationsDeclaration.java68
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassOperationsImplementation.java63
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassTypeAndEnum.java134
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassTypeAndEnumPackage.java97
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppEnumerationDefinition.java113
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceAllIncludesDeclaration.java113
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceIncludeDeclaration.java71
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceInheritedDeclarations.java84
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfacePublicOperationsDeclaration.java69
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationDeclaration.java142
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationImplementation.java171
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationParameters.java64
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationParametersWithoutDefaultValue.java62
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationReturnType.java118
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationTemplateImplementation.java158
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOwnerPackageIncludeDeclaration.java82
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppParameter.java76
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppParameterWithoutDefaultValue.java111
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppPrimitiveTypeDefinition.java90
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppStaticAttributeImplementation.java102
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateBindingParameter.java63
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateDeclaration.java69
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateInlineOperationsImplementation.java75
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateParameter.java68
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/plugin.properties12
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/plugin.xml10
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Activator.java65
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java36
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java46
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenConstants.java31
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenPreferenceInitializer.java36
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenUtils.java48
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/ModelElementsCreator.java420
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java164
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/GenUtils.java765
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java74
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppBindBody.cpp.jet87
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppBindHeader.h.jet115
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppClassBody.cpp.jet71
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppClassHeader.h.jet192
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppInterfaceHeader.h.jet99
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppPackageHeader.h.jet138
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppTemplateHeader.h.jet202
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppElementDoc.doc.jet27
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppOperationDoc.doc.jet47
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppParamDoc.doc.jet23
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/generator.skeleton19
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/generatorTwoArgs.skeleton19
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassAllIncludesDeclaration.util.jet47
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassAttributesDeclaration.util.jet28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassFriendDeclaration.util.jet18
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeClassDeclaration.util.jet28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeDeclaration.util.jet49
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeFriendDeclaration.util.jet38
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassInheritedDeclarations.util.jet96
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassInlineOperationsImplementation.util.jet30
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassOperationsDeclaration.util.jet35
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassOperationsImplementation.util.jet30
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassTypeAndEnum.util.jet93
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassTypeAndEnumPackage.util.jet59
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/enum/CppEnumerationDefinition.util.jet72
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceAllIncludesDeclaration.util.jet72
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceIncludeDeclaration.util.jet29
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceInheritedDeclarations.util.jet49
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfacePublicOperationsDeclaration.util.jet34
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationDeclaration.util.jet96
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationImplementation.util.jet99
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationParameters.util.jet35
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationParametersWithoutDefaultValue.util.jet33
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationReturnType.util.jet76
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationTemplateImplementation.util.jet90
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/package/CppOwnerPackageIncludeDeclaration.util.jet40
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/parameter/CppParameter.util.jet36
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/parameter/CppParameterWithoutDefaultValue.util.jet56
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppAttributeDeclaration.util.jet78
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppAttributeImplementation.util.jet58
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppClassAttributesImplementation.util.jet37
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppStaticAttributeImplementation.util.jet56
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateBindingParameter.util.jet35
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateDeclaration.h.jet33
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateInlineOperationsImplementation.util.jet42
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateParameter.util.jet34
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/type/CppPrimitiveTypeDefinition.util.jet53
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/.classpath7
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/.project28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/META-INF/MANIFEST.MF18
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/about.html28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/build.properties11
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/icons/transfo_cpp.gifbin0 -> 352 bytes
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.di17
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.notation348
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.uml37
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/plugin.properties12
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/plugin.xml54
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/Cpp.ecore160
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/Cpp.genmodel106
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.di38
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.notation650
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.uml4143
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.di35
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.notation922
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.uml376
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppArray.java135
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppConst.java108
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppConstInit.java79
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppDefault.java107
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppExternClass.java77
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppExternLibrary.java77
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppFactory.java232
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppFriend.java80
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInclude.java193
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInit.java79
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInline.java52
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppNoCodeGen.java52
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppPackage.java2316
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppPtr.java111
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppRef.java80
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppRoot.java50
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplate.java77
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplateBinding.java79
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplateParameter.java79
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppType.java79
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVirtual.java52
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVisibility.java79
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVisibilityKind.java235
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/ManualGeneration.java81
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/Union.java52
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppArrayImpl.java348
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppConstImpl.java280
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppConstInitImpl.java226
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppDefaultImpl.java287
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppExternClassImpl.java224
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppExternLibraryImpl.java224
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppFactoryImpl.java399
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppFriendImpl.java219
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppIncludeImpl.java454
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppInitImpl.java226
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppInlineImpl.java158
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppNoCodeGenImpl.java158
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppPackageImpl.java1170
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppPtrImpl.java287
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppRefImpl.java219
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppRootImpl.java156
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateBindingImpl.java226
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateImpl.java224
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateParameterImpl.java226
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTypeImpl.java226
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppVirtualImpl.java158
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppVisibilityImpl.java226
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/ManualGenerationImpl.java224
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/UnionImpl.java158
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppAdapterFactory.java518
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppResourceFactoryImpl.java52
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppResourceImpl.java28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppSwitch.java571
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppXMLProcessor.java50
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/Activator.java52
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/StUtils.java243
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/StdStereo.java17
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/.classpath7
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/.project28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/META-INF/MANIFEST.MF37
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/about.html28
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/about.ini17
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/build.properties10
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/plugin.properties12
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/plugin.xml13
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/Papyrus_32x32.gifbin0 -> 518 bytes
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/save_edit.gifbin0 -> 639 bytes
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/transfo_cpp.gifbin0 -> 352 bytes
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/transfo_cpp_old.gifbin0 -> 630 bytes
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/undo_edit.gifbin0 -> 355 bytes
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/AbstractCppPanelView.java97
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/Activator.java158
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/Activator.properties96
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/CommandSupport.java78
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/CppPanelView.java104
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/StUtils.java243
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/listeners/UMLElementPanelListener.java74
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppAbstractPanel.java428
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppClassPanel.java205
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppDefaultPanel.java91
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppGeneralizationPanel.java254
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppOperationPanel.java627
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPackagePanel.java177
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppParameterPanel.java340
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPrimitiveTypePanel.java161
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPropertyPanel.java375
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppTemplateBindingPanel.java174
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppTemplateParameterPanel.java176
-rw-r--r--extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/PanelFactory.java133
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.project28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF22
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/build.properties21
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/connector.pngbin0 -> 228 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/connector.svg80
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/deploy.gifbin0 -> 148 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/fcm.gifbin0 -> 123 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/hires/connector.pngbin0 -> 770 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/port.gifbin0 -> 95 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/target.gifbin0 -> 111 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.ecore268
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.genmodel178
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.di54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation1726
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml694
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/palettes/palette-classdep.xml29
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/palettes/palette-composite.xml23
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/plugin.xml74
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/schema/fcmEmbeddingRule.exsd106
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/schema/fcmPortMappingRule.exsd106
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/Activator.java17
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ActualChoice.java237
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/AutoIndex.java56
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/AutoIndexPerNode.java21
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CompImplTemplate.java81
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigOption.java54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigurableElementInstance.java56
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Configuration.java100
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigurationProperty.java60
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Connector.java108
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConnectorConfiguration.java83
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerPort.java21
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerRule.java102
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerRuleKind.java208
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CopyAttributeValue.java83
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CppLibrary.java96
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/DeploymentPlan.java83
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/DerivedElement.java83
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ExtendedSignature.java83
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ExternalLibrary.java54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/FCMFactory.java334
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/FCMPackage.java3816
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ImplementationGroup.java59
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ImplementationProperties.java171
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InitPrecedence.java90
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InstanceConfigurator.java54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InteractionComponent.java111
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptionKind.java260
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptionRule.java134
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptorConfiguration.java83
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/JavaLibrary.java45
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/OperatingSystem.java54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Part.java75
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Port.java162
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/PortKind.java137
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/RuleApplication.java100
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Singleton.java54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Target.java182
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/TargetArchitecture.java54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Template.java140
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/TemplateKind.java367
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/UseInstanceConfigurator.java81
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/AutoIndexImpl.java162
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/AutoIndexPerNodeImpl.java43
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CompImplTemplateImpl.java228
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigOptionImpl.java160
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurableElementInstanceImpl.java162
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurationImpl.java263
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurationPropertyImpl.java162
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConnectorConfigurationImpl.java223
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConnectorImpl.java282
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ContainerPortImpl.java43
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ContainerRuleImpl.java267
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CopyAttributeValueImpl.java222
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CppLibraryImpl.java257
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/DeploymentPlanImpl.java222
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/DerivedElementImpl.java222
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ExtendedSignatureImpl.java222
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ExternalLibraryImpl.java160
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/FCMFactoryImpl.java611
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/FCMPackageImpl.java1836
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ImplementationGroupImpl.java159
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ImplementationPropertiesImpl.java419
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InitPrecedenceImpl.java235
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InstanceConfiguratorImpl.java160
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InteractionComponentImpl.java290
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InterceptionRuleImpl.java331
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/JavaLibraryImpl.java149
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/OperatingSystemImpl.java160
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PartImpl.java201
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PortImpl.java409
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PortKindImpl.java338
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/RuleApplicationImpl.java263
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/SingletonImpl.java160
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TargetArchitectureImpl.java160
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TargetImpl.java447
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TemplateImpl.java328
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/UseInstanceConfiguratorImpl.java221
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/CommandSupport.java58
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/ConnectorTypeUtil.java29
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMAdapterFactory.java718
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMResourceFactoryImpl.java56
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMResourceImpl.java32
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMSwitch.java848
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMUtil.java233
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMXMLProcessor.java54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/IEmbeddingRule.java16
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/IMappingRule.java41
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/MapUtil.java405
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/fcm/profile/Activator.java51
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.project34
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF45
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/about.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.acceleo26
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.properties14
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ADLInFlowPort.gifbin0 -> 322 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gifbin0 -> 1064 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/Stereotype.gifbin0 -> 248 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/allocation.gifbin0 -> 143 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/depPlan.gifbin0 -> 104 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/deploy.gifbin0 -> 148 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ec3m-16x16.gifbin0 -> 1014 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ec3m-32x32.gifbin0 -> 1370 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/sample.gifbin0 -> 983 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/selConnector.gifbin0 -> 125 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/selContainer.gifbin0 -> 124 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/sync.gifbin0 -> 296 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml347
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd109
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/instanceConfig.exsd109
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/language.exsd109
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Activator.java52
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CommandSupport.java100
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConfigUtils.java80
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConnectorUtils.java167
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CreationUtils.java67
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Description.java64
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Log.java75
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ModelManagement.java143
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/OperationUtils.java129
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/PortUtils.java219
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ProjectManagement.java41
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/RunnableWithResult.java15
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/StUtils.java424
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Stereotypes.java9
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Utils.java541
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/AcceleoDriver.java328
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/EnumService.java130
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/EnumService.mtl21
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/StUtils.mtl9
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/TransformationContext.mtl43
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.java437
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.mtl71
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/test.mtl30
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/utils_cpp.mtl78
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/AllocUtils.java280
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java521
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Composite.java89
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/CopyCompositeOpt.java197
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepCreation.java611
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepPlanUtils.java311
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java448
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java161
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/FlatCopy.java178
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/GatherConfigData.java38
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/InstanceDeployer.java49
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/PartialCopy.java45
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AllocationDialog.java302
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AttributeLabelProvider.java21
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ChooseConfigOpt.java233
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ChoosePorts.java231
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigOptionLabelProvider.java34
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigureInstanceDialog.java515
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigurePortDialog.java360
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConnectorSelectionDialog.java349
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ContainerDialog.java290
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/DialogUtils.java89
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/GenerationOptionsDialog.java119
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/InstanceLabelProvider.java24
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/NameLabelProvider.java11
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/PortLabelProvider.java63
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/QNameLabelProvider.java11
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/RuleLabelProvider.java25
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/EmbeddingRule.java66
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/ExternalGenerator.java65
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IEmbeddingRule.java32
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IExternalGenerator.java31
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IInstanceConfigurator.java38
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/ILangSupport.java101
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/InstanceConfigurator.java108
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/LanguageSupport.java50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/generate/GenerateCode.java189
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/generate/GenerationOptions.java19
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/AddProfileAndModelLibsHandler.java299
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/AllocateHandler.java89
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CmdHandler.java140
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/ConfigureInstanceHandler.java127
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/ConfigurePortHandler.java120
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CreateDepPlanHandler.java126
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CreatePlatformHandler.java76
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenCollaborationUseHandler.java38
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenConnectionPatternHandler.java35
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/InstantiateDepPlanHandler.java94
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectConnectorHandler.java87
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectContainerHandler.java119
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SyncHandler.java95
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/CopyListener.java26
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/DepPlanListener.java46
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/InterfaceListener.java75
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/ModelListener.java41
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/OperationListener.java56
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/ParameterListener.java48
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/PortListener.java62
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/make/GenerateMakefile.java103
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/make/ShowFiles.java90
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferenceConstants.java33
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferenceInitializer.java37
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferencePage.java75
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java428
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompTypeSync.java40
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/DepPlanSync.java132
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/ConnectorBinding.java420
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppInclude.java71
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppIncludeWOB.java62
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiation.java224
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiationListener.java339
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateUtils.java295
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/AbstractContainerTrafo.java116
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java484
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java131
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Composite.java235
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java470
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerContext.java58
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java555
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Copy.java855
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java407
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java359
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java455
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/PrefixConstants.java36
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java87
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationException.java11
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/UpdateUtils.java61
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterComments.java32
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterSignatures.java36
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterStateMachines.java72
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterTemplate.java64
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FixTemplateSync.java38
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.classpath7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.project35
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/META-INF/MANIFEST.MF25
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/build.properties8
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.xml12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Activator.java52
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CCNamedProjectWizard.java49
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CDTMainWizardPageV.java33
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CppLanguageSupport.java264
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/.classpath7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/.project28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/META-INF/MANIFEST.MF15
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/build.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/AddPorts.xml109
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/CodeCompilation.xml22
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/CodeGeneration.xml30
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentDev.xml76
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentImplementation.xml85
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentModel.xml75
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/DeploymentPlan.xml57
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/Main.xml69
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteAddComponents.xml31
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteAddPorts.xml21
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteMain.xml81
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteNewModel.xml29
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/NewModel.xml31
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/OpenExample.xml31
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/PlatformModel.xml51
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/Validation.xml35
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/index.xml1
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocconcepts.xml15
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocdevguide.xml21
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocreference.xml25
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/bibliography.html60
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/codegen.html60
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/connector-container.html114
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/input-models.html67
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/overview.html55
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/DefineNewPortKinds.html34
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/createContainers.html44
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/createInteractionComponents.html58
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/developer.html57
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/org.eclipse.papyrus.qompass.designer.core.html34
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/arrow.pngbin0 -> 741 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-after-trafo.pngbin0 -> 14202 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-before-trafo.pngbin0 -> 17169 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-selection.pngbin0 -> 48922 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-aggregation.pngbin0 -> 5155 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-connector.pngbin0 -> 14509 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-interceptor.pngbin0 -> 5511 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-interceptor2.pngbin0 -> 5025 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-selection.pngbin0 -> 41152 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/deployment.pdfbin0 -> 41197 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/deployment.pngbin0 -> 18047 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-flex-eWare-small.pngbin0 -> 23920 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-marte.pngbin0 -> 4584 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-papyrus.pngbin0 -> 10227 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.odgbin0 -> 21814 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.pdfbin0 -> 23896 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.pngbin0 -> 31781 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.vsdbin0 -> 57344 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/qompass-0.33.jpgbin0 -> 22983 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/qompass.jpgbin0 -> 141908 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-after-trafo.pngbin0 -> 8870 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-before-trafo.pngbin0 -> 14650 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-selection.pngbin0 -> 26512 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-aggregation.pngbin0 -> 8424 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-interceptor.pngbin0 -> 10141 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-interceptor2.pngbin0 -> 8384 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-selection.pngbin0 -> 41752 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/statemachine-rule.pngbin0 -> 18516 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/toolchain.odgbin0 -> 170601 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/toolchain.pngbin0 -> 106200 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/trace2.pngbin0 -> 49769 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/component.html33
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/container.html54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/interactionComponent.html61
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/port.html26
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/portKind.html27
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/trafos.html40
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/sitestyle.css13
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.di23
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.notation669
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.uml173
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/plugin.xml30
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/src/org/eclipse/papyrus/qompass/designer/doc/Activator.java51
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/toc.xml23
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/.classpath7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/.project28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/META-INF/MANIFEST.MF16
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/build.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/icons/validate.gifbin0 -> 99 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/plugin.xml271
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/Activator.java50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/ValidationDelegateClientSelector.java23
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/AggregationKindValid.java54
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/BehaviorsWithoutSpecification.java47
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConfigurationAttributeNotSet.java42
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConnectorCallMultiplicity.java68
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConnectorConnectable.java53
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java42
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/InitialEntryPoints.java67
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/InstanceSpecificationSlotForAllProperties.java55
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/OperationsAreImplemented.java38
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/OperationsWithTwoReturnValues.java43
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/PortIsCorrectlyTyped.java36
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/PortKindUnset.java42
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/SystemHasNoPorts.java52
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedPorts.java68
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedProvPorts.java13
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedReqPorts.java13
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.project35
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF16
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/build.acceleo26
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/build.properties10
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/Activator.java50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/ParseVSL.java181
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/ParseVSL.mtl23
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/.classpath7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/.project34
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/META-INF/MANIFEST.MF18
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/build.acceleo26
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/build.properties17
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/help/modellibs-core-examples.xml13
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/help/modellibs-core-library.xml15
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/hello-world.html130
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/producer-consumer.html125
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/allocate.pngbin0 -> 18690 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/c-cpp-view.pngbin0 -> 60218 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/configure-instance.pngbin0 -> 28563 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/deployment-plan.pngbin0 -> 17253 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/hello-world.pngbin0 -> 19321 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/platform.pngbin0 -> 13034 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/system.pngbin0 -> 3521 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/dep-plans.pngbin0 -> 7688 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/generated-container.pngbin0 -> 12742 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/pull-consumer.pngbin0 -> 23901 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/push-consumer.pngbin0 -> 13675 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/push-producer.pngbin0 -> 10169 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/system-pull.pngbin0 -> 17185 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/system-push.pngbin0 -> 10459 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/corba.html16
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/core.html16
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/osal.html16
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/statemachine.html16
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.di40
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation528
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml244
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.di53
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation1010
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml439
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.di47
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.notation1235
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.uml546
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/In.pngbin0 -> 838 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/In.svg64
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/InOut.pngbin0 -> 1939 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/InOut.svg64
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Out.pngbin0 -> 872 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Out.svg58
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Provided.pngbin0 -> 1611 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Provided.svg105
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/ProvidedRequired.pngbin0 -> 1401 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/ProvidedRequired.svg124
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Required.pngbin0 -> 1190 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Required.svg108
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.di23
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.notation256
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.uml75
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di92
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation3896
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml1503
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.di50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.notation1362
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.uml497
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.di140
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.notation6838
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.uml10542
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.di56
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.notation1566
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.uml417
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.di20
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.notation195
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.uml82
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.di23
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.notation119
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.uml65
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.di29
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.notation51
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.uml50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/plugin.xml120
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/Activator.java50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/CallEventConfigurator.java49
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/HelloWorldModelWizard.java8
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/ModelCopyWizard.java129
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/ProducerConsumerModelWizard.java8
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/Marshalling.mtl70
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachine.mtl53
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachineUtil.java48
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachineUtil.mtl12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/TransitionService.java50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/TransitionService.mtl8
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/acceptableEvents.mtl106
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/embeddingrules/AccordCall.java81
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ExtendedPort.java107
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ExtendedPort2.java80
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ProvideInterface.java29
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PullConsumer.java111
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushConsumer.java67
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushProdPullCons.java70
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushProducer.java80
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/UseConjIntf.java111
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/UseInterface.java30
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/tmpModel/HelloWorldTmp.uml144
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath7
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.project28
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF29
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/about.html28
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/build.properties13
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_16x16.gifbin0 -> 197 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_9x9.gifbin0 -> 179 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_grp.gifbin0 -> 361 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_grp_disabled.gifbin0 -> 173 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkpd_16x16.gifbin0 -> 139 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkpd_9x9.gifbin0 -> 123 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/debug.gifbin0 -> 348 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/properties.gifbin0 -> 577 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcp_11x12.gifbin0 -> 313 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcp_16x16.gifbin0 -> 348 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcpd_11x12.gifbin0 -> 302 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcpd_16x16.gifbin0 -> 316 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/plugin.xml193
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/schema/traceMechanism.exsd109
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/Activator.java90
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/ITraceMechanism.java74
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/MarkerUtils.java84
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceActions.java206
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceFunctions.java112
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceMechanism.java88
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceState.java20
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TracepointConstants.java32
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/AbstractTracepointCommand.java168
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleBreakpointActivationCommand.java40
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleBreakpointCommand.java41
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleTracepointActivationCommand.java41
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleTracepointCommand.java52
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/TracepointPropertiesCommand.java81
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/dialogs/TraceActionSelection.java293
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/AbstractCommandHandler.java165
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleBreakpointActivationHandler.java33
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleBreakpointHandler.java33
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleTracepointActivationHandler.java33
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleTracepointHandler.java33
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/TracepointPropertiesHandler.java33
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/BinaryEncodedMChoiceFieldEditor.java132
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/MultipleChoiceFieldEditor.java234
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferenceConstants.java51
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferenceInitializer.java53
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferencePage.java106
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath7
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.project34
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF19
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/about.html28
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/build.acceleo26
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/build.properties13
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/help/tocconcepts.xml7
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image001.gifbin0 -> 2182 bytes
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image002.gifbin0 -> 2123 bytes
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image003.gifbin0 -> 1323 bytes
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image004.jpgbin0 -> 3340 bytes
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image005.jpgbin0 -> 36908 bytes
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image006.jpgbin0 -> 4937 bytes
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image007.gifbin0 -> 21539 bytes
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image008.jpgbin0 -> 44181 bytes
-rwxr-xr-xextraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image009.jpgbin0 -> 43754 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/userguide.htm213
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.di76
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation1315
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml428
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.di53
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.notation1090
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.uml457
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.di52
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.notation1078
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.uml771
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/plugin.xml54
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/Activator.java51
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/ClientServerTraceTestModelWizard.java11
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorOTF.java53
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorTrace.java40
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/QompassTraceMechanism.java181
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/TraceUtils.java45
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceCout.mtl14
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceLTTng.mtl172
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceOTF.mtl28
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.classpath7
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.project28
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/META-INF/MANIFEST.MF22
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/about.html28
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/build.properties10
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/contexts.xml13
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/breakpoint_view.gifbin0 -> 204 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/gotoobj_tsk.gifbin0 -> 372 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/skip_brkp.gifbin0 -> 204 bytes
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/plugin.xml34
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/Activator.java78
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/views/TraceViewImages.java44
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/views/TracepointView.java521
804 files changed, 126969 insertions, 0 deletions
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/.classpath b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/.project b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/.project
new file mode 100644
index 00000000000..6973103854a
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.cpp.codegen.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/META-INF/MANIFEST.MF b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..3185b83f1ec
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.cpp.codegen.ui;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.cpp.codegen.ui.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.common;bundle-version="2.8.0",
+ org.eclipse.emf.ecore;bundle-version="2.8.0",
+ org.eclipse.papyrus.infra.core;bundle-version="0.9.2",
+ org.eclipse.uml2.uml;bundle-version="4.0.0",
+ org.eclipse.papyrus.cpp.codegen;bundle-version="0.9.2",
+ org.eclipse.jface.text;bundle-version="3.8.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/about.html b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/build.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/build.properties
new file mode 100644
index 00000000000..93bba3b6fa4
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/build.properties
@@ -0,0 +1,9 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ icons/,\
+ plugin.properties,\
+ plugin.xml,\
+ about.html
+src.includes = about.html
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/icons/codegen.gif b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/icons/codegen.gif
new file mode 100644
index 00000000000..c416117e54e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/icons/codegen.gif
Binary files differ
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/plugin.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/plugin.properties
new file mode 100644
index 00000000000..53638e41626
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus C++ code generation UI (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/plugin.xml b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/plugin.xml
new file mode 100644
index 00000000000..36360f14f02
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/plugin.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.views.modelexplorer.modelexplorer.popup">
+ <command
+ commandId="org.eclipse.papyrus.cpp.codegen.command"
+ icon="icons/codegen.gif"
+ label="Generate C++ code"
+ style="push"
+ tooltip="Generate C++ code">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu">
+ <command
+ commandId="org.eclipse.papyrus.cpp.codegen.command"
+ icon="icons/codegen.gif"
+ label="Generate C++ code"
+ style="push"
+ tooltip="Generate C++ code">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ description="Generate C++ code"
+ id="org.eclipse.papyrus.cpp.codegen.command"
+ name="dummy">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.handlers">
+ <handler
+ class="org.eclipse.papyrus.cpp.codegen.ui.handler.GenerateCodeHandler"
+ commandId="org.eclipse.papyrus.cpp.codegen.command">
+ </handler>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.papyrus.infra.core.sasheditor.preferences.generalcategory"
+ class="org.eclipse.papyrus.cpp.codegen.ui.preferences.CodegenPreferencePage"
+ id="org.eclipse.papyrus.cpp.codegen.ui.preferences.CodeGenPreferencePage"
+ name="C++ code generation"/>
+ </extension>
+</plugin>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/Activator.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/Activator.java
new file mode 100644
index 00000000000..a8f74c72d82
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.papyrus.cpp.codegen.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.cpp.codegen.ui"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/handler/GenerateCodeHandler.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/handler/GenerateCodeHandler.java
new file mode 100644
index 00000000000..af25725a9ba
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/handler/GenerateCodeHandler.java
@@ -0,0 +1,116 @@
+/*******************************************************************************
+ * Copyright (c) 2012 CEA LIST
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.ui.handler;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenUtils;
+import org.eclipse.papyrus.cpp.codegen.transformation.ModelElementsCreator;
+import org.eclipse.papyrus.infra.core.utils.BusinessModelResolver;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Classifier;
+
+/**
+ * <b><u>SyncURI Handler</u></b>
+ * <p>
+ * Install a filter that only shows events corresponding to a selected URI
+ */
+public class GenerateCodeHandler extends AbstractHandler {
+
+ // ------------------------------------------------------------------------
+ // Execution
+ // ------------------------------------------------------------------------
+
+ private EObject selectedEObj;
+
+ @Override
+ public boolean isEnabled() {
+ // intercept isEnabled operation in order to get selected eObject.
+
+ // Get current selection
+ Object selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
+
+ // Get first element if the selection is an IStructuredSelection
+ if(selection instanceof IStructuredSelection) {
+ IStructuredSelection structuredSelection = (IStructuredSelection)selection;
+ selection = structuredSelection.getFirstElement();
+ }
+
+ // Treat non-null selected object (try to adapt and return EObject)
+ if(selection != null) {
+ Object businessObject = BusinessModelResolver.getInstance().getBusinessModel(selection);
+ if(businessObject instanceof EObject) {
+
+ selectedEObj = (EObject)businessObject;
+ return true;
+ }
+ }
+
+ selectedEObj = null;
+ return super.isEnabled();
+ }
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+
+ if(selectedEObj instanceof Classifier) {
+ Classifier classifier = (Classifier)selectedEObj;
+
+ URI uri = classifier.eResource().getURI();
+
+ // URIConverter uriConverter = resource.getResourceSet().getURIConverter();
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ if(uri.segmentCount() < 2) {
+ return null;
+ }
+ IProject modelProject = root.getProject(uri.segment(1));
+ if(modelProject.exists()) {
+ String name = classifier.getName();
+
+ // get the container for the current element
+ String headerSuffix = CppCodeGenUtils.getHeaderSuffix();
+ String bodySuffix = CppCodeGenUtils.getBodySuffix();
+ ModelElementsCreator mec = new ModelElementsCreator(modelProject, headerSuffix, bodySuffix, CppCodeGenUtils.getCommentHeader());
+ IContainer srcPkg = mec.getContainer(classifier);
+ try {
+ mec.createPackageableElement(srcPkg, null, classifier);
+
+ IFile cppFile = srcPkg.getFile(new Path(name + "." + bodySuffix));
+ IFile hFile = srcPkg.getFile(new Path(name + "." + headerSuffix));
+ if(!cppFile.exists()) {
+ return null;
+ }
+ if(cppFile != null) {
+ cppFile.refreshLocal(0, null);
+ }
+ if(hFile != null) {
+ hFile.refreshLocal(0, null);
+ }
+ } catch (CoreException coreException) {
+ return null;
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/preferences/CodegenPreferencePage.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/preferences/CodegenPreferencePage.java
new file mode 100644
index 00000000000..6a5c689bba0
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen.ui/src/org/eclipse/papyrus/cpp/codegen/ui/preferences/CodegenPreferencePage.java
@@ -0,0 +1,114 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.ui.preferences;
+
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+import org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+
+/**
+ * This class represents a preference page that is contributed to the
+ * Preferences dialog. By subclassing <samp>FieldEditorPreferencePage </samp>,
+ * we can use the field support built into JFace that allows us to create a page
+ * that is small and knows how to save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They are stored in the preference store that belongs to the main plug-in class. That way, preferences
+ * can be accessed directly via the preference store.
+ */
+
+public class CodegenPreferencePage extends FieldEditorPreferencePage implements
+ IWorkbenchPreferencePage {
+
+ private Document pCommentDoc = new Document();
+
+ public CodegenPreferencePage() {
+ super(GRID);
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription("This preferences page allows to customize Papyrus C++ code generation");
+ }
+
+ public void addTextField(String name, String label, Document currentDoc) {
+ // ///////////////////////////////////////////////////////////////////////
+ // Create a Group for the text
+ // ///////////////////////////////////////////////////////////////////////
+ Group txtGroup = new Group(getFieldEditorParent(), SWT.RESIZE);
+ txtGroup.setLayout(new FillLayout());
+ txtGroup.setText(label);
+ GridData gd = new GridData(GridData.FILL_BOTH /* FILL_HORIZONTAL */);
+ // gd.heightHint = 250;
+ gd.horizontalSpan = 2;
+ txtGroup.setLayoutData(gd);
+
+ // Text area
+ SourceViewer txtViewer = new SourceViewer(txtGroup, null, SWT.MULTI
+ | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+
+ txtViewer.setDocument(currentDoc);
+
+ // Retrieving existing preference
+ String content = getPreferenceStore().getString(name);
+
+ // Loading preference in txt zone
+ currentDoc.set(content);
+
+ }
+
+ /**
+ * Creates the field editors. Field editors are abstractions of the common
+ * GUI blocks needed to manipulate various types of preferences. Each field
+ * editor knows how to save and restore itself.
+ */
+
+ @Override
+ public void createFieldEditors() {
+
+ addField(new StringFieldEditor(CppCodeGenConstants.P_HEADER_SUFFIX,
+ "Suffix for C++ header files ", getFieldEditorParent()));
+ addField(new StringFieldEditor(CppCodeGenConstants.P_IMPLEM_SUFFIX,
+ "Suffix for C++ implementation files ", getFieldEditorParent()));
+
+ // Add P_COMMENT_HEADER
+ addTextField(CppCodeGenConstants.P_COMMENT_HEADER, "Header for generated files",
+ pCommentDoc);
+ }
+
+ public void init(IWorkbench workbench) {
+ }
+
+ @Override
+ public void performDefaults() {
+
+ // initialize comment field from default
+ pCommentDoc.set(getPreferenceStore().getDefaultString(CppCodeGenConstants.P_COMMENT_HEADER));
+ super.performDefaults();
+ }
+
+ @Override
+ public boolean performOk() {
+
+ // Store txt for P_COMMENT_HEADER
+ String currentComment = pCommentDoc.get();
+ getPreferenceStore().setValue(CppCodeGenConstants.P_COMMENT_HEADER, currentComment);
+
+ return super.performOk();
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.classpath b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.classpath
new file mode 100644
index 00000000000..9fd92a96b67
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="jetsrc"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.jetproperties b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.jetproperties
new file mode 100644
index 00000000000..3c3ea9ef3ae
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.jetproperties
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<jet-settings>
+ <template-container>templates</template-container> <source-container>jetsrc</source-container>
+</jet-settings>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.project b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.project
new file mode 100644
index 00000000000..50424ef89ab
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.cpp.codegen</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.emf.codegen.JETBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.ibm.etools.common.migration.MigrationBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.emf.codegen.jet.IJETNature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..493ef30d0a3
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.cpp.codegen;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.cpp.codegen.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.jface.text,
+ org.eclipse.uml2.uml,
+ org.eclipse.core.resources,
+ org.eclipse.papyrus.cpp.profile;bundle-version="0.9.2",
+ org.eclipse.ui.ide;bundle-version="3.8.0",
+ org.eclipse.core.filesystem;bundle-version="1.3.200"
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.papyrus.cpp.codegen,
+ org.eclipse.papyrus.cpp.codegen.jet,
+ org.eclipse.papyrus.cpp.codegen.jet.doc,
+ org.eclipse.papyrus.cpp.codegen.jet.util,
+ org.eclipse.papyrus.cpp.codegen.preferences,
+ org.eclipse.papyrus.cpp.codegen.transformation,
+ org.eclipse.papyrus.cpp.codegen.utils
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/about.html b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/build.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/build.properties
new file mode 100644
index 00000000000..1826a56a2e7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/build.properties
@@ -0,0 +1,11 @@
+source.. = src/,\
+ jetsrc/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ templates/,\
+ bin/,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppBindBody.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppBindBody.java
new file mode 100644
index 00000000000..016a7d87da1
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppBindBody.java
@@ -0,0 +1,167 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet;
+
+import org.eclipse.papyrus.cpp.codegen.Constants;
+import org.eclipse.papyrus.cpp.codegen.utils.*;
+import Cpp.CppInclude;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.*;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.cpp.codegen.jet.util.*;
+import java.util.*;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+
+public class CppBindBody
+{
+ protected static String nl;
+ public static synchronized CppBindBody create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppBindBody result = new CppBindBody();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#define ";
+ protected final String TEXT_2 = "_BODY" + NL + "" + NL + "/************************************************************";
+ protected final String TEXT_3 = NL + " ";
+ protected final String TEXT_4 = " template binding body" + NL + " ************************************************************/" + NL;
+ protected final String TEXT_5 = NL;
+ protected final String TEXT_6 = NL;
+ protected final String TEXT_7 = NL;
+ protected final String TEXT_8 = NL;
+ protected final String TEXT_9 = NL;
+ protected final String TEXT_10 = NL + "#include <";
+ protected final String TEXT_11 = ".";
+ protected final String TEXT_12 = ">" + NL;
+ protected final String TEXT_13 = NL;
+ protected final String TEXT_14 = NL;
+ protected final String TEXT_15 = NL;
+ protected final String TEXT_16 = NL;
+ protected final String TEXT_17 = NL;
+ protected final String TEXT_18 = NL;
+ protected final String TEXT_19 = NL;
+ protected final String TEXT_20 = NL;
+ protected final String TEXT_21 = NL + NL + "/************************************************************/" + NL + "template class ";
+ protected final String TEXT_22 = " <";
+ protected final String TEXT_23 = ">;" + NL;
+ protected final String TEXT_24 = NL;
+ protected final String TEXT_25 = NL + NL + "/************************************************************" + NL + " End of ";
+ protected final String TEXT_26 = " template binding body" + NL + " ************************************************************/";
+ protected final String TEXT_27 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Class currentClass = (Class) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFullName = GenUtils.getFullName (currentClass);
+ String classFULLNAME = classFullName.toUpperCase();
+ String parentClass = "";
+ String namespace = GenUtils.getNamespace (currentClass);
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ // Retrieve owner Package
+ Package owner = currentClass.getPackage();
+ String fullPath = "";
+
+ if (owner != null) {
+ fullPath = GenUtils.getFullPath(owner) + "/";
+ } // else fullPath == ""
+
+ TemplateBinding tb = GenUtils.getTemplateBindings(currentClass);;
+
+ // prepare parent class declaration
+ EList<org.eclipse.uml2.uml.Element> templates = tb.getTargets();
+ Class templateClass = (Class) ((TemplateSignature) templates.get(0)).getOwner();
+ parentClass = GenUtils.qualifiedName (templateClass);
+
+ // Prepare bindings parameter declaration
+
+ String tParamDecl = "";
+ Iterator<TemplateParameterSubstitution> tps = tb.getParameterSubstitutions().iterator();
+ while(tps.hasNext()) {
+ TemplateParameterSubstitution paramSub = tps.next();
+
+ CppTemplateBindingParameter jetTParam = new CppTemplateBindingParameter();
+ tParamDecl = tParamDecl+jetTParam.generate (paramSub);
+
+ if (tps.hasNext()) {
+ tParamDecl = tParamDecl + ", ";
+ }
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( classFULLNAME );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append( Constants.cppIncPreBodyStart );
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append( ClassUtils.getCppIncludePreBody(currentClass) );
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append( Constants.cppIncPreBodyEnd );
+ stringBuffer.append(TEXT_8);
+ stringBuffer.append(TEXT_9);
+ stringBuffer.append( Constants.includeHFile );
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append( fullPath );
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append( headerFileSuffix );
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append( Constants.cppIncBodyStart );
+ stringBuffer.append(TEXT_14);
+ stringBuffer.append( ClassUtils.getCppIncludeBody(currentClass) );
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append( Constants.cppIncBodyEnd );
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append( GenUtils.openNS(currentClass) );
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append( Constants.derivedIncludes );
+ stringBuffer.append(TEXT_20);
+ stringBuffer.append( ClassUtils.createIncludeDecl(currentClass) );
+ stringBuffer.append(TEXT_21);
+ stringBuffer.append( parentClass );
+ stringBuffer.append(TEXT_22);
+ stringBuffer.append( tParamDecl );
+ stringBuffer.append(TEXT_23);
+ stringBuffer.append(TEXT_24);
+ stringBuffer.append( GenUtils.closeNS(currentClass) );
+ stringBuffer.append(TEXT_25);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_26);
+ stringBuffer.append(TEXT_27);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppBindHeader.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppBindHeader.java
new file mode 100644
index 00000000000..cd28f8d1210
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppBindHeader.java
@@ -0,0 +1,186 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet;
+
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.CppInclude;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.TemplateParameterSubstitution;
+import org.eclipse.papyrus.cpp.codegen.jet.util.*;
+import java.util.*;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+
+public class CppBindHeader
+{
+ protected static String nl;
+ public static synchronized CppBindHeader create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppBindHeader result = new CppBindHeader();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#ifndef ";
+ protected final String TEXT_2 = "_H" + NL + "#define ";
+ protected final String TEXT_3 = "_H" + NL + "" + NL + "/************************************************************";
+ protected final String TEXT_4 = NL + " ";
+ protected final String TEXT_5 = " template binding header" + NL + " ************************************************************/" + NL;
+ protected final String TEXT_6 = NL;
+ protected final String TEXT_7 = NL;
+ protected final String TEXT_8 = NL;
+ protected final String TEXT_9 = NL;
+ protected final String TEXT_10 = NL;
+ protected final String TEXT_11 = NL + NL + "#include <";
+ protected final String TEXT_12 = ".";
+ protected final String TEXT_13 = ">" + NL;
+ protected final String TEXT_14 = NL;
+ protected final String TEXT_15 = " " + NL + "/************************************************************/" + NL + "typedef ";
+ protected final String TEXT_16 = " <";
+ protected final String TEXT_17 = "> ";
+ protected final String TEXT_18 = ";" + NL;
+ protected final String TEXT_19 = NL;
+ protected final String TEXT_20 = NL + NL + "/************************************************************" + NL + " End of ";
+ protected final String TEXT_21 = " template binding header" + NL + " ************************************************************/" + NL + "" + NL + "#endif";
+ protected final String TEXT_22 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Class currentClass = (Class) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFullName = GenUtils.getFullName (currentClass);
+ String classFULLNAME = classFullName.toUpperCase();
+ String classparent = "";
+ String openNS = GenUtils.openNS (currentClass);
+ String closeNS = GenUtils.closeNS (currentClass);
+
+ // Include declaration "CppInclude"
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentClass, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = "// Include from CppInclude declaration" + NL + cppInclude.getHeader() + NL;
+ }
+
+ // Prepare owner package header include
+ Package ownerPackage = currentClass.getPackage();
+ String ownerInclude = "";
+ if (ownerPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetOwnerInclude
+ = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ ownerInclude = jetOwnerInclude.generate(ownerPackage);
+ }
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ //find path for the package owning current class
+ String fullPath = "";
+ String separ = "";
+
+ if (ownerPackage != null) {
+ fullPath = GenUtils.getFullPath (ownerPackage);
+ separ = "/";
+ } // else fullPath == ""
+
+ org.eclipse.uml2.uml.TemplateBinding tb = GenUtils.getTemplateBindings(currentClass);
+
+ // prepare parent class declaration
+ EList<org.eclipse.uml2.uml.Element> templates = tb.getTargets();
+ Class templateClass = (Class) ((TemplateSignature)templates.get(0)).getOwner();
+ classparent = templateClass.getName();
+
+ // Prepare bindings parameter declaration
+
+ String tParamDecl="";
+ TemplateParameterSubstitution paramsub;
+ Iterator<TemplateParameterSubstitution> tps = tb.getParameterSubstitutions().iterator();
+ while(tps.hasNext()) {
+ paramsub = (TemplateParameterSubstitution)tps.next();
+
+ CppTemplateBindingParameter jetTParam
+ = new CppTemplateBindingParameter();
+ tParamDecl = tParamDecl+jetTParam.generate(paramsub);
+
+ if (tps.hasNext()) {
+ tParamDecl = tParamDecl+", ";
+ }
+ }
+
+
+ // Prepare dependency includes
+ CppClassAllIncludesDeclaration jetClassIncludes
+ = new CppClassAllIncludesDeclaration();
+ String classIncludes = jetClassIncludes.generate(argument);
+ if (!classIncludes.equals("")) {
+ classIncludes = "/* Structural includes (inheritance, dependencies... */"+NL+classIncludes;
+ }
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( classFULLNAME );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( classFULLNAME );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append( ownerInclude );
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append(TEXT_8);
+ stringBuffer.append( classIncludes );
+ stringBuffer.append(TEXT_9);
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append( headerDecl );
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append( fullPath );
+ stringBuffer.append( separ );
+ stringBuffer.append( classparent );
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append( headerFileSuffix );
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append(TEXT_14);
+ stringBuffer.append( openNS );
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append( classparent );
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append( tParamDecl );
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append( closeNS );
+ stringBuffer.append(TEXT_20);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_21);
+ stringBuffer.append(TEXT_22);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppClassBody.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppClassBody.java
new file mode 100644
index 00000000000..6d61bd37fe2
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppClassBody.java
@@ -0,0 +1,147 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet;
+
+import org.eclipse.papyrus.cpp.codegen.Constants;
+import org.eclipse.papyrus.cpp.codegen.utils.*;
+import org.eclipse.emf.common.util.EList;
+import Cpp.CppInclude;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.papyrus.cpp.codegen.jet.util.*;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+
+public class CppClassBody
+{
+ protected static String nl;
+ public static synchronized CppClassBody create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassBody result = new CppClassBody();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#define ";
+ protected final String TEXT_2 = "_BODY" + NL + "" + NL + "/************************************************************";
+ protected final String TEXT_3 = NL + " ";
+ protected final String TEXT_4 = " class body" + NL + " ************************************************************/" + NL;
+ protected final String TEXT_5 = NL;
+ protected final String TEXT_6 = NL;
+ protected final String TEXT_7 = NL;
+ protected final String TEXT_8 = NL;
+ protected final String TEXT_9 = NL + "#include <";
+ protected final String TEXT_10 = ".";
+ protected final String TEXT_11 = ">" + NL;
+ protected final String TEXT_12 = NL;
+ protected final String TEXT_13 = NL;
+ protected final String TEXT_14 = NL;
+ protected final String TEXT_15 = NL;
+ protected final String TEXT_16 = NL;
+ protected final String TEXT_17 = NL;
+ protected final String TEXT_18 = NL;
+ protected final String TEXT_19 = NL;
+ protected final String TEXT_20 = NL;
+ protected final String TEXT_21 = NL;
+ protected final String TEXT_22 = NL + NL + "/************************************************************" + NL + " End of ";
+ protected final String TEXT_23 = " class body" + NL + " ************************************************************/";
+ protected final String TEXT_24 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFullName= GenUtils.getFullName (currentClass);
+ String classFULLNAME= classFullName.toUpperCase();
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ // TODO - Prepare static attribute
+ String staticAttributes = "";
+
+ // Retrieve owner Package
+ Package owner = currentClass.getPackage();
+ String fullPath = "";
+
+ if (owner != null) {
+ fullPath = GenUtils.getFullPath(owner) + "/";
+ } // else fullPath == ""
+
+ // Prepare attributes and Methods declarations
+ String allOperations = "";
+
+ // Methods
+ CppClassOperationsImplementation jetClassOp
+ = new CppClassOperationsImplementation();
+ allOperations = jetClassOp.generate(currentClass);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( classFULLNAME );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append( Constants.cppIncPreBodyStart );
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append( ClassUtils.getCppIncludePreBody(currentClass)
+);
+ stringBuffer.append( Constants.cppIncPreBodyEnd );
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append(TEXT_8);
+ stringBuffer.append( Constants.includeHFile );
+ stringBuffer.append(TEXT_9);
+ stringBuffer.append( fullPath );
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append( headerFileSuffix );
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append( Constants.cppIncBodyStart );
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append( ClassUtils.getCppIncludeBody(currentClass)
+);
+ stringBuffer.append( Constants.cppIncBodyEnd );
+ stringBuffer.append(TEXT_14);
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append( Constants.derivedIncludes );
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append( ClassUtils.createIncludeDecl(currentClass) );
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append( GenUtils.openNS(currentClass) );
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append( ClassUtils.getStaticAttributes(currentClass) );
+ stringBuffer.append(TEXT_20);
+ stringBuffer.append( allOperations );
+ stringBuffer.append(TEXT_21);
+ stringBuffer.append( GenUtils.closeNS(currentClass) );
+ stringBuffer.append(TEXT_22);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_23);
+ stringBuffer.append(TEXT_24);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppClassHeader.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppClassHeader.java
new file mode 100644
index 00000000000..d7ac634c428
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppClassHeader.java
@@ -0,0 +1,278 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet;
+
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.CppInclude;
+import Cpp.Union;
+import org.eclipse.papyrus.cpp.codegen.StdStereo;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.*;
+import org.eclipse.papyrus.cpp.codegen.jet.util.*;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+
+public class CppClassHeader
+{
+ protected static String nl;
+ public static synchronized CppClassHeader create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassHeader result = new CppClassHeader();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#ifndef ";
+ protected final String TEXT_2 = "_H" + NL + "#define ";
+ protected final String TEXT_3 = "_H" + NL + "" + NL + "/************************************************************";
+ protected final String TEXT_4 = NL + " ";
+ protected final String TEXT_5 = " class header" + NL + " ************************************************************/" + NL;
+ protected final String TEXT_6 = NL;
+ protected final String TEXT_7 = NL;
+ protected final String TEXT_8 = NL;
+ protected final String TEXT_9 = NL;
+ protected final String TEXT_10 = NL;
+ protected final String TEXT_11 = NL;
+ protected final String TEXT_12 = " ";
+ protected final String TEXT_13 = NL;
+ protected final String TEXT_14 = NL + "/************************************************************/";
+ protected final String TEXT_15 = NL;
+ protected final String TEXT_16 = NL;
+ protected final String TEXT_17 = " ";
+ protected final String TEXT_18 = " {";
+ protected final String TEXT_19 = NL;
+ protected final String TEXT_20 = NL + NL + " public:";
+ protected final String TEXT_21 = NL;
+ protected final String TEXT_22 = NL + NL + " protected:";
+ protected final String TEXT_23 = NL;
+ protected final String TEXT_24 = NL + NL + " private:";
+ protected final String TEXT_25 = NL;
+ protected final String TEXT_26 = NL + NL + "};" + NL + "/************************************************************/" + NL + "/* External declarations (package visibility) */";
+ protected final String TEXT_27 = NL;
+ protected final String TEXT_28 = NL;
+ protected final String TEXT_29 = NL + "/************************************************************/" + NL + "/* Inline functions */";
+ protected final String TEXT_30 = NL;
+ protected final String TEXT_31 = NL;
+ protected final String TEXT_32 = NL + NL + "/************************************************************" + NL + " End of ";
+ protected final String TEXT_33 = " class header" + NL + " ************************************************************/" + NL + "" + NL + "#endif";
+ protected final String TEXT_34 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFULLNAME = GenUtils.getFullName (currentClass).toUpperCase();
+ String openNS = GenUtils.openNS (currentClass);
+ String closeNS = GenUtils.closeNS (currentClass);
+ String classDoc = "";
+ String classOrStruct = GenUtils.hasStereotype(currentClass, Union.class) ? "union" :
+ ((currentClass instanceof DataType) ? "struct" : "class");
+
+ // Doc for the class
+ CppElementDoc jDoc = new CppElementDoc();
+ classDoc = jDoc.generate(currentClass);
+
+ String includeProtection;
+
+ // Include declaration "CppInclude"
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentClass, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = GenUtils.maskNull(cppInclude.getHeader());
+ if (headerDecl.length() > 0) {
+ headerDecl = "// Include from CppInclude declaration" + NL + headerDecl.replace("HFILENAME", classFULLNAME) + NL;
+ }
+ }
+
+ // Prepare owner package header include
+ Package ownerPackage = currentClass.getPackage();
+ String ownerInclude = "";
+ if (ownerPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetOwnerInclude
+ = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ ownerInclude = jetOwnerInclude.generate(ownerPackage);
+ }
+
+
+ // Prepare owned type and enum declaration
+ String typeEnumDefPackage = "";
+ String typeEnumDef = "";
+
+ CppClassTypeAndEnum jetTE = new CppClassTypeAndEnum();
+ typeEnumDef = jetTE.generate(currentClass);
+
+ CppClassTypeAndEnumPackage jetTEp
+ = new CppClassTypeAndEnumPackage();
+ typeEnumDefPackage = jetTEp.generate(currentClass);
+
+
+ // Prepare dependency includes
+ CppClassAllIncludesDeclaration jetClassIncludes
+ = new CppClassAllIncludesDeclaration();
+ String classIncludes = jetClassIncludes.generate(argument);
+ if (!classIncludes.equals("")) {
+ classIncludes = "/* Structural includes (inheritance, dependencies... */"+NL+classIncludes;
+ }
+
+ // Prepare friend dependency includes
+ CppClassIncludeFriendDeclaration jetClassFIncludes
+ = new CppClassIncludeFriendDeclaration();
+ String friendIncludes = jetClassFIncludes.generate(argument);
+ if (!friendIncludes.equals("")) {
+ friendIncludes = "/* Friend class declaration */"+NL+friendIncludes;
+ }
+
+ // Prepare attributes and Methods declarations
+ String publicAttributes = "";
+ String publicOperations = "";
+ String protectedAttributes = "";
+ String protectedOperations = "";
+ String privateAttributes = "";
+ String privateOperations = "";
+ String packageAttributes = "";
+ String packageOperations = "";
+
+ // Attributes
+ CppClassAttributesDeclaration jetClassPAttr = new CppClassAttributesDeclaration();
+ publicAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PUBLIC_LITERAL);
+ protectedAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PROTECTED_LITERAL);
+ privateAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PRIVATE_LITERAL);
+ packageAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PACKAGE_LITERAL);
+
+ // Methods
+ CppClassOperationsDeclaration jetClassPOp = new CppClassOperationsDeclaration();
+ publicOperations = jetClassPOp.generate(currentClass, VisibilityKind.PUBLIC_LITERAL);
+ protectedOperations = jetClassPOp.generate(currentClass, VisibilityKind.PROTECTED_LITERAL);
+ privateOperations = jetClassPOp.generate(currentClass, VisibilityKind.PRIVATE_LITERAL);
+ packageOperations = jetClassPOp.generate(currentClass, VisibilityKind.PACKAGE_LITERAL);
+
+ boolean hasConstructor = false;
+ for (Operation operation : currentClass.getOperations ()) {
+ if (GenUtils.hasStereotype(operation, StdStereo.create)) {
+ hasConstructor = true;
+ break;
+ }
+ }
+ String defaultInitializer = "";
+ for (Property attribute : currentClass.getAttributes ()) {
+ if (attribute.isStatic()) {
+ // static attributes are initialized differently
+ continue;
+ }
+ ValueSpecification vs = attribute.getDefaultValue ();
+ if ((vs != null) && (vs.stringValue() != null)) {
+ if (!defaultInitializer.equals("")) {
+ // not first attribute
+ defaultInitializer += ", ";
+ }
+ defaultInitializer += attribute.getName () + "(" + vs.stringValue() + ")";
+ }
+ }
+ // no constructor, add it, if some properties have default values
+ if ((!hasConstructor) && (!defaultInitializer.equals (""))) {
+ defaultInitializer = className + "() : " + defaultInitializer + " {}";
+ }
+ else {
+ defaultInitializer = "";
+ }
+
+ // Inline functions implementations
+ String inlineFunctionsImplementation = "";
+ CppClassInlineOperationsImplementation jetInlineClassPOp
+ = new CppClassInlineOperationsImplementation();
+ inlineFunctionsImplementation = jetInlineClassPOp.generate(currentClass);
+
+ // Prepare inherited classes or implemented interfaces
+ String inheritedDeclarations = "";
+ CppClassInheritedDeclarations jetInherited
+ = new CppClassInheritedDeclarations();
+ inheritedDeclarations = jetInherited.generate(currentClass);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( classFULLNAME );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( classFULLNAME );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append( ownerInclude );
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append(TEXT_8);
+ stringBuffer.append( classIncludes );
+ stringBuffer.append(TEXT_9);
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append( headerDecl );
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append( openNS );
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append( typeEnumDefPackage );
+ stringBuffer.append(TEXT_14);
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append( classDoc );
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append( classOrStruct );
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append( className );
+ stringBuffer.append( inheritedDeclarations );
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append( friendIncludes );
+ stringBuffer.append( typeEnumDef );
+ stringBuffer.append(TEXT_20);
+ stringBuffer.append(TEXT_21);
+ stringBuffer.append( defaultInitializer );
+ stringBuffer.append( publicAttributes );
+ stringBuffer.append( publicOperations );
+ stringBuffer.append(TEXT_22);
+ stringBuffer.append(TEXT_23);
+ stringBuffer.append( protectedAttributes );
+ stringBuffer.append( protectedOperations );
+ stringBuffer.append(TEXT_24);
+ stringBuffer.append(TEXT_25);
+ stringBuffer.append( privateAttributes );
+ stringBuffer.append( privateOperations );
+ stringBuffer.append(TEXT_26);
+ stringBuffer.append(TEXT_27);
+ stringBuffer.append( packageAttributes );
+ stringBuffer.append(TEXT_28);
+ stringBuffer.append( packageOperations );
+ stringBuffer.append(TEXT_29);
+ stringBuffer.append(TEXT_30);
+ stringBuffer.append( inlineFunctionsImplementation );
+ stringBuffer.append(TEXT_31);
+ stringBuffer.append( closeNS );
+ stringBuffer.append(TEXT_32);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_33);
+ stringBuffer.append(TEXT_34);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppInterfaceHeader.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppInterfaceHeader.java
new file mode 100644
index 00000000000..933b4a00407
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppInterfaceHeader.java
@@ -0,0 +1,160 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet;
+
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Package;
+import Cpp.CppInclude;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import org.eclipse.papyrus.cpp.codegen.jet.util.*;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+
+public class CppInterfaceHeader
+{
+ protected static String nl;
+ public static synchronized CppInterfaceHeader create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppInterfaceHeader result = new CppInterfaceHeader();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#ifndef ";
+ protected final String TEXT_2 = "_H" + NL + "#define ";
+ protected final String TEXT_3 = "_H" + NL + "" + NL + "/************************************************************";
+ protected final String TEXT_4 = NL + " ";
+ protected final String TEXT_5 = " interface header" + NL + " ************************************************************/" + NL;
+ protected final String TEXT_6 = NL;
+ protected final String TEXT_7 = NL;
+ protected final String TEXT_8 = NL;
+ protected final String TEXT_9 = NL;
+ protected final String TEXT_10 = NL;
+ protected final String TEXT_11 = NL;
+ protected final String TEXT_12 = NL + "/************************************************************/";
+ protected final String TEXT_13 = NL;
+ protected final String TEXT_14 = NL + "class ";
+ protected final String TEXT_15 = " ";
+ protected final String TEXT_16 = "{" + NL + "" + NL + "/* Public declarations */" + NL + "public:";
+ protected final String TEXT_17 = NL;
+ protected final String TEXT_18 = NL + NL + "};" + NL + "" + NL + "/************************************************************" + NL + " End of ";
+ protected final String TEXT_19 = " interface header" + NL + " ************************************************************/";
+ protected final String TEXT_20 = NL;
+ protected final String TEXT_21 = NL + NL + "#endif";
+ protected final String TEXT_22 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Interface currentInterface = (Interface) argument;
+
+ // Get the package name
+ String interfaceName = currentInterface.getName();
+ String interfaceFULLNAME = GenUtils.getFullNameUC (currentInterface);
+
+ // For interface documentation
+ String iDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+ iDoc = jDoc.generate(currentInterface);
+
+ // Include declaration "CppInclude"
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentInterface, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = "// Include from CppInclude declaration" + NL + cppInclude.getHeader() + NL;
+ }
+
+ // Prepare owner package header include
+ Package ownerPackage = currentInterface.getPackage();
+ String ownerInclude = "";
+ if (ownerPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetOwnerInclude
+ = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ ownerInclude = jetOwnerInclude.generate(ownerPackage);
+ }
+
+
+ // Prepare dependency includes
+ CppInterfaceAllIncludesDeclaration jetInterfaceIncludes
+ = new CppInterfaceAllIncludesDeclaration();
+ String interfaceIncludes = jetInterfaceIncludes.generate(argument);
+ if (!interfaceIncludes.equals("")) {
+ interfaceIncludes = "/* Structural includes (inheritance, dependencies, ... */"+NL+interfaceIncludes;
+ }
+
+ // Prepare Methods declarations
+ String publicOperations = "";
+
+ // Methods
+ CppInterfacePublicOperationsDeclaration jetPublicInterfacePOp
+ = new CppInterfacePublicOperationsDeclaration();
+ publicOperations = jetPublicInterfacePOp.generate(currentInterface);
+
+
+ // Prepare inherited interfaces
+ String inheritedDeclarations = "";
+ CppInterfaceInheritedDeclarations jetInherited
+ = new CppInterfaceInheritedDeclarations();
+ inheritedDeclarations = jetInherited.generate(currentInterface);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( interfaceFULLNAME );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( interfaceFULLNAME );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( interfaceName );
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append( ownerInclude );
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append(TEXT_8);
+ stringBuffer.append( interfaceIncludes );
+ stringBuffer.append(TEXT_9);
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append( headerDecl );
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append( GenUtils.openNS(currentInterface) );
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append( iDoc );
+ stringBuffer.append(TEXT_14);
+ stringBuffer.append( interfaceName );
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append( inheritedDeclarations );
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append( publicOperations );
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append( interfaceName );
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append(TEXT_20);
+ stringBuffer.append( GenUtils.closeNS(currentInterface) );
+ stringBuffer.append(TEXT_21);
+ stringBuffer.append(TEXT_22);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppPackageHeader.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppPackageHeader.java
new file mode 100644
index 00000000000..58865c8b294
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppPackageHeader.java
@@ -0,0 +1,203 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet;
+
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.CppInclude;
+import Cpp.CppNoCodeGen;
+import org.eclipse.uml2.uml.*;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.cpp.codegen.jet.util.*;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.HashSet;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+
+public class CppPackageHeader
+{
+ protected static String nl;
+ public static synchronized CppPackageHeader create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppPackageHeader result = new CppPackageHeader();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#ifndef PKG_";
+ protected final String TEXT_2 = NL + "#define PKG_";
+ protected final String TEXT_3 = NL + NL + "/************************************************************" + NL + " Pkg_";
+ protected final String TEXT_4 = " package header" + NL + " ************************************************************/" + NL;
+ protected final String TEXT_5 = NL;
+ protected final String TEXT_6 = NL + "\t" + NL + "/* Package dependency header include */";
+ protected final String TEXT_7 = NL + "#include <";
+ protected final String TEXT_8 = ".";
+ protected final String TEXT_9 = ">";
+ protected final String TEXT_10 = NL + NL + "/* CppInclude header declarations insert */";
+ protected final String TEXT_11 = NL;
+ protected final String TEXT_12 = NL;
+ protected final String TEXT_13 = NL;
+ protected final String TEXT_14 = NL + "/* Types Defined in the package */";
+ protected final String TEXT_15 = NL;
+ protected final String TEXT_16 = NL;
+ protected final String TEXT_17 = NL;
+ protected final String TEXT_18 = NL + NL + "/************************************************************" + NL + " End of Pkg_";
+ protected final String TEXT_19 = " package header" + NL + " ************************************************************/" + NL + "" + NL + "#endif";
+ protected final String TEXT_20 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the package
+ Package currentPackage = (Package) argument;
+ Package fatherPackage = currentPackage.getNestingPackage(); // return owner package
+
+ // Get the package name
+ String packageName = currentPackage.getName();
+ String packageFULLNAME = GenUtils.getFullName (currentPackage).toUpperCase();
+ String openNS = GenUtils.openNS (currentPackage) + "namespace " + currentPackage.getName () + " {\n";
+ String closeNS = "} // of namespace" + currentPackage.getName () + "\n" + GenUtils.closeNS (currentPackage);
+
+ // Prepare the header declarations for this package
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentPackage, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = "// Include from CppInclude declaration" + NL + cppInclude.getHeader() + NL;
+ }
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+
+ // Prepare Father include declaration
+ String fatherPkgInclude = "";
+ if (fatherPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetPkgInclude
+ = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ fatherPkgInclude = jetPkgInclude.generate(fatherPackage);
+ }
+
+
+ // Prepare Dependency includes declarations ...
+ // Retrieve package used by current package (dependencies)
+
+ String cFullName = ""; // used in java to contruct and in template to read list
+
+ // Get packages linked by dependencies
+ EList<Package> usedPackages = GenUtils.getUsedPackages (currentPackage);
+ Set<String> usedPackagesNames = new HashSet<String>();
+ // Add imported packages
+ usedPackages.addAll(currentPackage.getImportedPackages());
+
+ Iterator<Package> usedPackagesIt = usedPackages.iterator();
+ Iterator<String> usedPackagesNamesIt;
+
+ // Refactor as a new Set containing names to be declared for packages (with path)
+ while(usedPackagesIt.hasNext()) {
+ Package currentUsedPackage = usedPackagesIt.next();
+ String cPackageName = currentUsedPackage.getName();
+ String cPackagePath = GenUtils.getFullPath (currentUsedPackage);
+
+ cFullName = cPackagePath+"/Pkg_"+cPackageName;
+
+ // Add this name to the set if codegen stereotype is not applied
+ PackageImport packImport = currentPackage.getPackageImport(currentUsedPackage);
+ if(!GenUtils.hasStereotype(packImport, CppNoCodeGen.class)) {
+ if (!GenUtils.hasStereotype(currentUsedPackage, CppNoCodeGen.class)) {
+ usedPackagesNames.add(cFullName);
+ }
+ }
+ }
+
+ // and prepare the Iterator for the template...
+ usedPackagesNamesIt = usedPackagesNames.iterator();
+
+
+
+ // Prepare owned type and enum declaration
+ String typeDef = "";
+ String enumDef = "";
+
+ Iterator<Type> typeIt = currentPackage.getOwnedTypes().iterator();
+ while (typeIt.hasNext()) {
+ Type currentElt = typeIt.next();
+ if (!GenUtils.hasStereotype(currentElt, CppNoCodeGen.class)) {
+ if (currentElt instanceof org.eclipse.uml2.uml.PrimitiveType) {
+
+ PrimitiveType currentType = (PrimitiveType) currentElt;
+ CppPrimitiveTypeDefinition jetPrimitiveType = new CppPrimitiveTypeDefinition();
+ // Execute the util template
+ typeDef = typeDef+jetPrimitiveType.generate(currentType);
+
+ } else if (currentElt instanceof org.eclipse.uml2.uml.Enumeration) {
+
+ Enumeration currentEnum = (Enumeration) currentElt;
+ CppEnumerationDefinition jetEnum = new CppEnumerationDefinition();
+ // Execute the util template
+ enumDef = enumDef+jetEnum.generate(currentEnum);
+
+ }
+ }
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( packageFULLNAME );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( packageFULLNAME );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( packageName );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append( fatherPkgInclude );
+ stringBuffer.append(TEXT_6);
+ // For every depency linked package
+ while(usedPackagesNamesIt.hasNext()) {
+ cFullName = (String) usedPackagesNamesIt.next();
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append( cFullName );
+ stringBuffer.append(TEXT_8);
+ stringBuffer.append( headerFileSuffix );
+ stringBuffer.append(TEXT_9);
+ }
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append( headerDecl );
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append( openNS );
+ stringBuffer.append(TEXT_14);
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append( typeDef );
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append( enumDef );
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append( closeNS );
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append( packageName );
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append(TEXT_20);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppTemplateHeader.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppTemplateHeader.java
new file mode 100644
index 00000000000..4aad3809ba8
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/CppTemplateHeader.java
@@ -0,0 +1,288 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet;
+
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.*;
+import org.eclipse.papyrus.cpp.codegen.jet.util.*;
+import Cpp.CppInclude;
+import Cpp.CppNoCodeGen;
+import Cpp.CppInline;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import java.util.*;
+
+public class CppTemplateHeader
+{
+ protected static String nl;
+ public static synchronized CppTemplateHeader create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppTemplateHeader result = new CppTemplateHeader();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#ifndef ";
+ protected final String TEXT_2 = "_H" + NL + "#define ";
+ protected final String TEXT_3 = "_H" + NL + "" + NL + "/************************************************************";
+ protected final String TEXT_4 = NL + " ";
+ protected final String TEXT_5 = " template class header" + NL + " ************************************************************/" + NL;
+ protected final String TEXT_6 = NL;
+ protected final String TEXT_7 = NL;
+ protected final String TEXT_8 = NL;
+ protected final String TEXT_9 = NL;
+ protected final String TEXT_10 = NL;
+ protected final String TEXT_11 = NL;
+ protected final String TEXT_12 = NL;
+ protected final String TEXT_13 = NL + "/************************************************************/" + NL + "template <";
+ protected final String TEXT_14 = "> class ";
+ protected final String TEXT_15 = " ";
+ protected final String TEXT_16 = "{";
+ protected final String TEXT_17 = NL;
+ protected final String TEXT_18 = NL + "/* Public declarations */" + NL + "public:";
+ protected final String TEXT_19 = NL;
+ protected final String TEXT_20 = NL;
+ protected final String TEXT_21 = NL + NL + "/* Protected declarations */" + NL + "protected:";
+ protected final String TEXT_22 = NL;
+ protected final String TEXT_23 = NL;
+ protected final String TEXT_24 = NL + NL + "/* Private declarations */" + NL + "private:";
+ protected final String TEXT_25 = NL;
+ protected final String TEXT_26 = NL;
+ protected final String TEXT_27 = NL + NL + "};" + NL + "" + NL + "/************************************************************/" + NL + "/* Template functions */";
+ protected final String TEXT_28 = NL;
+ protected final String TEXT_29 = NL;
+ protected final String TEXT_30 = NL;
+ protected final String TEXT_31 = NL + "/* Inline functions */";
+ protected final String TEXT_32 = NL;
+ protected final String TEXT_33 = NL;
+ protected final String TEXT_34 = NL;
+ protected final String TEXT_35 = NL + NL + "/************************************************************" + NL + " End of ";
+ protected final String TEXT_36 = " template class header" + NL + " ************************************************************/" + NL + "" + NL + "#endif";
+ protected final String TEXT_37 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFullName = GenUtils.getFullName(currentClass);
+ String classFULLNAME = classFullName.toUpperCase();
+ String openNS = GenUtils.openNS (currentClass);
+ String closeNS = GenUtils.closeNS (currentClass);
+
+ // Include declaration "CppInclude"
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentClass, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = "// Include from CppInclude declaration" + NL + cppInclude.getHeader() + NL;
+ }
+
+ // Prepare owner package header include
+ Package ownerPackage = currentClass.getPackage();
+ String ownerInclude = "";
+ if (ownerPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetOwnerInclude = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ ownerInclude = jetOwnerInclude.generate(ownerPackage);
+ }
+
+ // Prepare owned type and enum declaration
+ String typeEnumDefPackage = "";
+ String typeEnumDef = "";
+
+ CppClassTypeAndEnum jetTE = new CppClassTypeAndEnum();
+ typeEnumDef = jetTE.generate(currentClass);
+
+ CppClassTypeAndEnumPackage jetTEp = new CppClassTypeAndEnumPackage();
+ typeEnumDefPackage = jetTEp.generate(currentClass);
+
+ // Prepare template parameter declaration
+ Iterator<org.eclipse.uml2.uml.TemplateParameter> tparam =
+ GenUtils.getTemplateParameters(currentClass).iterator();
+
+ String tParamDecl = "";
+ String tDecl = "";
+
+ while (tparam.hasNext()) {
+ CppTemplateParameter jetTParam = new CppTemplateParameter();
+ tParamDecl = tParamDecl + jetTParam.generate(tparam.next());
+
+ if (tparam.hasNext()) {
+ tParamDecl = tParamDecl + ", ";
+ }
+ }
+
+ tDecl = "template <" + tParamDecl + ">" + NL;
+
+ // Prepare dependency includes
+ CppClassAllIncludesDeclaration jetClassIncludes = new CppClassAllIncludesDeclaration();
+ String classIncludes = jetClassIncludes.generate(argument);
+ if (!classIncludes.equals("")) {
+ classIncludes = "/* Structural includes (inheritance, dependencies... */"
+ + NL + classIncludes;
+ }
+
+ // Prepare attributes and Methods declarations
+ String publicAttributes = "";
+ String protectedAttributes = "";
+ String privateAttributes = "";
+ String publicOperations = "", publicOperationsImpl = "";
+ String protectedOperations = "", protectedOperationsImpl = "";
+ String privateOperations = "", privateOperationsImpl = "";
+
+ // Attributes
+ CppClassAttributesDeclaration jetClassPAttr = new CppClassAttributesDeclaration();
+ publicAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PUBLIC_LITERAL);
+ protectedAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PROTECTED_LITERAL);
+ privateAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PRIVATE_LITERAL);
+
+ // Methods implementation
+ String inlineFuncImpl = "";
+ // String inlineFuncDecl = "";
+
+ // Implementation
+ CppOperationTemplateImplementation jetOpImpl = new CppOperationTemplateImplementation();
+ // Declaration
+ CppOperationDeclaration jetOpDecl = new CppOperationDeclaration();
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentClass.getOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOperation = operations.next();
+
+ if (GenUtils.hasStereotype(currentOperation, CppNoCodeGen.class) ||
+ currentOperation.isAbstract()) {
+ continue;
+ }
+ if (GenUtils.hasStereotype(currentOperation, CppInline.class)) {
+ String opDoc = "";
+ // Doc for the template
+ CppOperationDoc jDoc = new CppOperationDoc();
+ opDoc = jDoc.generate(currentOperation);
+ // Inline declaration
+ if (currentOperation.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
+ publicOperations = publicOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } else if (currentOperation.getVisibility() == VisibilityKind.PRIVATE_LITERAL) {
+ privateOperations = privateOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } else if (currentOperation.getVisibility() == VisibilityKind.PROTECTED_LITERAL) {
+ protectedOperations = protectedOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } // else nothing
+ // Inline implementation
+ inlineFuncImpl = inlineFuncImpl + opDoc + NL + tDecl
+ + jetOpImpl.generate(currentOperation) + NL;
+ } else {
+ if (currentOperation.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
+ publicOperationsImpl = publicOperationsImpl + tDecl
+ + jetOpImpl.generate(currentOperation);
+ publicOperations = publicOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } else if (currentOperation.getVisibility() == VisibilityKind.PRIVATE_LITERAL) {
+ privateOperationsImpl = privateOperationsImpl + tDecl
+ + jetOpImpl.generate(currentOperation);
+ privateOperations = privateOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } else if (currentOperation.getVisibility() == VisibilityKind.PROTECTED_LITERAL) {
+ protectedOperationsImpl = protectedOperationsImpl + tDecl
+ + jetOpImpl.generate(currentOperation);
+ protectedOperations = protectedOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } // else nothing
+ }
+ }
+
+ // Prepare inherited classes or implemented interfaces
+ String inheritedDeclarations = "";
+ CppClassInheritedDeclarations jetInherited = new CppClassInheritedDeclarations();
+ inheritedDeclarations = jetInherited.generate(currentClass);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( classFULLNAME );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( classFULLNAME );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append( ownerInclude );
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append(TEXT_8);
+ stringBuffer.append( classIncludes );
+ stringBuffer.append(TEXT_9);
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append( headerDecl );
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append( openNS );
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append( typeEnumDefPackage );
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append( tParamDecl );
+ stringBuffer.append(TEXT_14);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append( inheritedDeclarations );
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append( typeEnumDef );
+ stringBuffer.append(TEXT_18);
+ stringBuffer.append(TEXT_19);
+ stringBuffer.append( publicAttributes );
+ stringBuffer.append(TEXT_20);
+ stringBuffer.append( publicOperations );
+ stringBuffer.append(TEXT_21);
+ stringBuffer.append(TEXT_22);
+ stringBuffer.append( protectedAttributes );
+ stringBuffer.append(TEXT_23);
+ stringBuffer.append( protectedOperations );
+ stringBuffer.append(TEXT_24);
+ stringBuffer.append(TEXT_25);
+ stringBuffer.append( privateAttributes );
+ stringBuffer.append(TEXT_26);
+ stringBuffer.append( privateOperations );
+ stringBuffer.append(TEXT_27);
+ stringBuffer.append(TEXT_28);
+ stringBuffer.append( publicOperationsImpl );
+ stringBuffer.append(TEXT_29);
+ stringBuffer.append( protectedOperationsImpl );
+ stringBuffer.append(TEXT_30);
+ stringBuffer.append( privateOperationsImpl );
+ stringBuffer.append(TEXT_31);
+ stringBuffer.append(TEXT_32);
+ stringBuffer.append( inlineFuncImpl );
+ stringBuffer.append(TEXT_33);
+ stringBuffer.append(TEXT_34);
+ stringBuffer.append( closeNS );
+ stringBuffer.append(TEXT_35);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_36);
+ stringBuffer.append(TEXT_37);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppElementDoc.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppElementDoc.java
new file mode 100644
index 00000000000..3b6157ccdb9
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppElementDoc.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.doc;
+
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppElementDoc
+{
+ protected static String nl;
+ public static synchronized CppElementDoc create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppElementDoc result = new CppElementDoc();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "/**" + NL + " * ";
+ protected final String TEXT_2 = NL + " */";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the element
+ Element currentElt = (Element) argument;
+ String eltDoc = "";
+
+
+ // Doc for the element
+ eltDoc = GenUtils.getComments(currentElt);
+ eltDoc = eltDoc.replaceAll(NL, NL+" * ");
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( eltDoc );
+ stringBuffer.append(TEXT_2);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppOperationDoc.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppOperationDoc.java
new file mode 100644
index 00000000000..b8fdbb83fb3
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppOperationDoc.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.doc;
+
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import java.util.Iterator;
+
+public class CppOperationDoc
+{
+ protected static String nl;
+ public static synchronized CppOperationDoc create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppOperationDoc result = new CppOperationDoc();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "/**" + NL + " * ";
+ protected final String TEXT_2 = NL + " * ";
+ protected final String TEXT_3 = NL + " */";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the element
+ Operation currentOperation = (Operation) argument;
+ Parameter currentParameter;
+
+ String opDoc = "";
+ String opParams = "";
+// String opReturn = "";
+// TODO: return not handled? (or treated as any other parameter?)
+
+ // Doc for the element
+ opDoc = GenUtils.getComments(currentOperation);
+ opDoc = opDoc.replaceAll(NL, NL+" * ");
+
+ // Treat params
+ Iterator<Parameter> parameters = currentOperation.getOwnedParameters().iterator();
+ while(parameters.hasNext()) {
+ currentParameter = (Parameter) parameters.next();
+
+ // Prepare parameters
+ CppParamDoc jetParam = new CppParamDoc();
+ opParams = opParams+jetParam.generate(currentParameter);
+
+ if (parameters.hasNext()){
+ opParams = opParams+NL+" * ";
+ }
+ }
+
+ // Treat return
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( opDoc );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( opParams );
+ stringBuffer.append(TEXT_3);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppParamDoc.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppParamDoc.java
new file mode 100644
index 00000000000..398b823a7bb
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/doc/CppParamDoc.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.doc;
+
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppParamDoc
+{
+ protected static String nl;
+ public static synchronized CppParamDoc create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppParamDoc result = new CppParamDoc();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "@param ";
+ protected final String TEXT_2 = " ";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the element
+ Parameter currentElt = (Parameter) argument;
+
+ String paramName = currentElt.getName();
+ String paramDoc = GenUtils.getComments(currentElt);
+
+ paramDoc = paramDoc.replaceAll(NL, NL+" * ");
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( paramName );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( paramDoc );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppAttributeDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppAttributeDeclaration.java
new file mode 100644
index 00000000000..faad5c04422
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppAttributeDeclaration.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.*;
+
+public class CppAttributeDeclaration
+{
+ protected static String nl;
+ public static synchronized CppAttributeDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppAttributeDeclaration result = new CppAttributeDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = NL + "\t";
+ protected final String TEXT_2 = NL + "\t";
+ protected final String TEXT_3 = " ";
+ protected final String TEXT_4 = ";";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the property
+ Property currentAttribute = (Property) argument;
+
+ String attributeName = currentAttribute.getName();
+ String typeName = "";
+ String prefix = "";
+ String suffix = "";
+ String multiple = "";
+
+ // For property documentation
+ String propDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+ propDoc = jDoc.generate(currentAttribute);
+ propDoc = propDoc.replaceAll(NL, NL+" ");
+
+ if (currentAttribute.getType() == null) {
+ typeName = "undefined";
+ } else {
+ typeName = GenUtils.qualifiedName (currentAttribute.getType());
+ }
+
+ // Static attribute
+ if (currentAttribute.isStatic()) {
+ prefix = "static"+" ";
+ }
+
+ Modifier modifier = new Modifier(currentAttribute);
+
+ // Treat multiplicity for association attributes
+ int multiplicity = currentAttribute.getUpper();
+ if (multiplicity == 1) {
+ multiple = "";
+ } else if (multiplicity == -1) {
+ multiple = "*";
+ } else {
+ multiple = "";
+ modifier.array = "[" + multiplicity + "]";
+ }
+
+ // If attribute is aggregation
+ if (GenUtils.isAggregation(currentAttribute)) {
+ // attributeName = "(*"+attributeName+")"; // this produce a pointer on a tab
+ attributeName = "*"+attributeName; // this produce a tab of pointers
+ }
+
+
+ if (GenUtils.hasStereotype(currentAttribute, CppConst.class) && currentAttribute.isStatic()) {
+ // const & static attributes may be initialized within class declaration
+ // check if initial value UML or profile
+ if (currentAttribute.getDefaultValue() != null) {
+ suffix = " = " + currentAttribute.getDefaultValue().stringValue();
+ }
+ else {
+ CppDefault cppDefault = GenUtils.getApplication(currentAttribute, CppDefault.class);
+ if (cppDefault != null) {
+ suffix = " = " + cppDefault.getValue();
+ }
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( propDoc );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( prefix );
+ stringBuffer.append( modifier.isConst );
+ stringBuffer.append( typeName );
+ stringBuffer.append( multiple );
+ stringBuffer.append( modifier.ptr );
+ stringBuffer.append( modifier.ref );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( attributeName );
+ stringBuffer.append( modifier.array );
+ stringBuffer.append( suffix );
+ stringBuffer.append(TEXT_4);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppAttributeImplementation.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppAttributeImplementation.java
new file mode 100644
index 00000000000..ab85473afbc
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppAttributeImplementation.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.*;
+
+public class CppAttributeImplementation
+{
+ protected static String nl;
+ public static synchronized CppAttributeImplementation create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppAttributeImplementation result = new CppAttributeImplementation();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "\t";
+ protected final String TEXT_2 = NL + "\t";
+ protected final String TEXT_3 = " ";
+ protected final String TEXT_4 = ";";
+ protected final String TEXT_5 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the property
+ Property currentAttribute = (Property) argument;
+
+ String attributeName = currentAttribute.getName();
+// String className = currentAttribute.getOwner().getName();
+ String typeName = "";
+ String scopeName = "";
+// String prefix = "";
+ String suffix = "";
+ String multiple = "";
+
+ // For property documentation
+ String propDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+ propDoc = jDoc.generate(currentAttribute);
+ propDoc = propDoc.replaceAll(NL, NL+" ");
+
+ if (currentAttribute.getType() == null) {
+ typeName = "undefined";
+ }
+ else {
+ Type type = currentAttribute.getType();
+ typeName = GenUtils.qualifiedName (type);
+ /*
+ // If type is owned by a class add the scope
+ if (type.getOwner() instanceof Class) {
+ scopeName = ((Class) type.getOwner()).getName();
+ typeName = scopeName+"::"+typeName;
+ }
+ */
+ }
+
+ // Multiple
+ // TODO? need to evaluate limitMultiplicity stereotype?
+ int upper = currentAttribute.getUpper();
+ if ((upper == -1) || (upper > 1)) {
+ multiple = "*";
+ }
+
+ Modifier modifier = new Modifier(currentAttribute);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( propDoc );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( typeName );
+ stringBuffer.append( multiple );
+ stringBuffer.append( modifier.ptr );
+ stringBuffer.append( modifier.ref );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( attributeName );
+ stringBuffer.append( modifier.array );
+ stringBuffer.append( suffix );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append(TEXT_5);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAllIncludesDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAllIncludesDeclaration.java
new file mode 100644
index 00000000000..acc9eb087fa
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAllIncludesDeclaration.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.*;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.emf.common.util.UniqueEList;
+import java.util.*;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.Classifier;
+
+public class CppClassAllIncludesDeclaration
+{
+ protected static String nl;
+ public static synchronized CppClassAllIncludesDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassAllIncludesDeclaration result = new CppClassAllIncludesDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL;
+ protected final String TEXT_3 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Get the package name
+ // String className = currentClass.getName();
+
+ // Prepare Dependency includes declarations ...
+ // Retrieve package used by current package (dependencies)
+ // use a unique list to avoid duplicates
+ EList<Classifier> usedClasses = new UniqueEList<Classifier> ();
+
+ String newInclude = "";
+
+ // class attributes dependencies
+ usedClasses.addAll (GenUtils.getOwnedAttributeTypes(currentClass));
+ // operation parameters dependencies
+ usedClasses.addAll (GenUtils.getIncludesFromOperations(currentClass));
+ // realized interface dependencies
+ if (currentClass instanceof Class) {
+ usedClasses.addAll (GenUtils.getImplementedInterfaces((Class) currentClass));
+ }
+ // dependencies and associations
+ usedClasses.addAll (GenUtils.getRelationshipsNoDeps(currentClass));
+
+ // template parameters are declared locally (if owned) and do not correspond to a file
+ // that can be included
+ usedClasses.removeAll (GenUtils.getTemplateParameteredElements(currentClass));
+
+ Iterator<Classifier> usedClassesIt = usedClasses.iterator();
+ // Parsing all as NamedElement
+ String includes = ClassUtils.createIncludeDecl (usedClasses, currentClass);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( includes );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append(TEXT_3);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAttributesDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAttributesDeclaration.java
new file mode 100644
index 00000000000..a0de92709c3
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAttributesDeclaration.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.Iterator;
+
+public class CppClassAttributesDeclaration
+{
+ protected static String nl;
+ public static synchronized CppClassAttributesDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassAttributesDeclaration result = new CppClassAttributesDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument1, Object argument2)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument1;
+ String attrDecl = "";
+
+ // Retrieve public attributes
+ Iterator<Property> attributes = currentClass.getAttributes().iterator();
+ while (attributes.hasNext()) {
+ Property attribute = attributes.next();
+ if (attribute.getVisibility() == argument2) {
+ CppAttributeDeclaration jetAttDecl = new CppAttributeDeclaration();
+ attrDecl = attrDecl+jetAttDecl.generate(attribute);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( attrDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAttributesImplementation.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAttributesImplementation.java
new file mode 100644
index 00000000000..4c30ed0bedd
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassAttributesImplementation.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.Iterator;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppClassAttributesImplementation
+{
+ protected static String nl;
+ public static synchronized CppClassAttributesImplementation create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassAttributesImplementation result = new CppClassAttributesImplementation();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+ String attrDecl = "";
+ String attrSDecl = "";
+
+ CppAttributeImplementation jetAttDecl = new CppAttributeImplementation();
+ CppStaticAttributeImplementation jetSAttDecl = new CppStaticAttributeImplementation();
+
+ Iterator<Property> attributesIt = currentClass.getAttributes().iterator();
+ while (attributesIt.hasNext()) {
+ Property attribute = (Property) attributesIt.next();
+
+ // just check that this property is not a static const
+ // in that case it declared and defined in the header file
+
+ // Static
+ if (attribute.isStatic()) {
+ attrSDecl = attrSDecl+jetSAttDecl.generate(attribute);
+ } else {
+ attrDecl = attrDecl+jetAttDecl.generate(attribute);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( attrSDecl );
+ stringBuffer.append( attrDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassFriendDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassFriendDeclaration.java
new file mode 100644
index 00000000000..030fae595ff
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassFriendDeclaration.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.NamedElement;
+
+public class CppClassFriendDeclaration
+{
+ protected static String nl;
+ public static synchronized CppClassFriendDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassFriendDeclaration result = new CppClassFriendDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "friend class ";
+ protected final String TEXT_2 = ";";
+ protected final String TEXT_3 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ NamedElement currentNE = (NamedElement) argument;
+ String cClassName = currentNE.getName();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( cClassName );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append(TEXT_3);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeClassDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeClassDeclaration.java
new file mode 100644
index 00000000000..e7fc0246e6e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeClassDeclaration.java
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.*;
+
+public class CppClassIncludeClassDeclaration
+{
+ protected static String nl;
+ public static synchronized CppClassIncludeClassDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassIncludeClassDeclaration result = new CppClassIncludeClassDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL;
+ protected final String TEXT_3 = NL;
+ protected final String TEXT_4 = "class ";
+ protected final String TEXT_5 = ";";
+ protected final String TEXT_6 = NL;
+ protected final String TEXT_7 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ NamedElement currentNE = (NamedElement) argument;
+ String cClassName = currentNE.getName();
+ String isTemplate = "";
+ String openNS = GenUtils.openNS (currentNE);
+ String closeNS = GenUtils.closeNS (currentNE);
+
+ if (GenUtils.hasStereotype(currentNE, CppTemplate.class)) {
+ isTemplate = "template ";
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( openNS );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( isTemplate );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( cClassName );
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append( closeNS );
+ stringBuffer.append(TEXT_7);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeDeclaration.java
new file mode 100644
index 00000000000..a10b49edd59
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeDeclaration.java
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.*;
+
+public class CppClassIncludeDeclaration
+{
+ protected static String nl;
+ public static synchronized CppClassIncludeDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassIncludeDeclaration result = new CppClassIncludeDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#include <";
+ protected final String TEXT_2 = ">";
+ protected final String TEXT_3 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+
+ // Retrieve the class
+ NamedElement currentNE = (NamedElement) argument;
+ String cClassPath = "";
+ Package nearestPkg = currentNE.getNearestPackage();
+ String cClassName = currentNE.getName();
+
+ if ( //!(nearestPkg.getUml2Package() instanceof org.eclipse.uml2.uml.Model)
+ /*&& */!(GenUtils.hasStereotype(nearestPkg, CppRoot.class))) {
+ cClassPath = GenUtils.getFullPath(nearestPkg)+"/";
+ }
+
+
+ // If an external class is referred
+ CppExternClass extClass = GenUtils.getApplication(currentNE, CppExternClass.class);
+ CppTemplate template = GenUtils.getApplication(currentNE, CppTemplate.class);
+ if (extClass != null) {
+ cClassPath = "";
+ cClassName = extClass.getName();
+ if ((cClassName == null) || cClassName.equals ("")) {
+ // default value
+ cClassName = currentNE.getQualifiedName ().replace ("::", "/") + "." + headerFileSuffix;
+ // strip model name
+ cClassName = cClassName.substring (currentNE.getModel ().getName ().length () + 1);
+ }
+ } else if (template != null) {
+ cClassPath = "";
+ cClassName = template.getDeclaration();
+ }
+ else cClassName=cClassName+"."+headerFileSuffix;
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( cClassPath );
+ stringBuffer.append( cClassName );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append(TEXT_3);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeFriendDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeFriendDeclaration.java
new file mode 100644
index 00000000000..1b37bcb57aa
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassIncludeFriendDeclaration.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.*;
+
+public class CppClassIncludeFriendDeclaration
+{
+ protected static String nl;
+ public static synchronized CppClassIncludeFriendDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassIncludeFriendDeclaration result = new CppClassIncludeFriendDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+// NamedElement currentElt = (NamedElement) argument;
+
+ // Prepare Dependency includes declarations ...
+ // Retrieve package used by current package (dependencies)
+ Iterator<Classifier> friendClassesIt = GenUtils.getUsedClassifiers(currentClass).iterator();
+
+ // Parsing all as NamedElement
+ String friendClass = "";
+
+ while (friendClassesIt.hasNext()) {
+ Classifier cClass = friendClassesIt.next();
+
+ if (GenUtils.hasStereotype(cClass, CppFriend.class) &&
+ (!GenUtils.hasStereotype(cClass, CppNoCodeGen.class))) {
+
+ CppClassFriendDeclaration jetIDecl
+ = new CppClassFriendDeclaration();
+
+ friendClass = friendClass+jetIDecl.generate(cClass);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( friendClass );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassInheritedDeclarations.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassInheritedDeclarations.java
new file mode 100644
index 00000000000..9081b1f7aaa
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassInheritedDeclarations.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.*;
+
+public class CppClassInheritedDeclarations
+{
+ protected static String nl;
+ public static synchronized CppClassInheritedDeclarations create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassInheritedDeclarations result = new CppClassInheritedDeclarations();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+ String targetName = "";
+ String visibility = "";
+ String decl = "";
+
+ // Get generalization and implementation relationships
+ Iterator<DirectedRelationship> relationshipIt =
+ currentClass.getSourceDirectedRelationships().iterator();
+ // Iterator impIt = currentClass.getImplementations().iterator();
+
+ while (relationshipIt.hasNext()) {
+
+ DirectedRelationship relationship = relationshipIt.next();
+
+ if ((relationship instanceof Generalization) ||
+ (relationship instanceof InterfaceRealization))
+ {
+ org.eclipse.uml2.uml.Classifier target = null;
+ if (relationship.getTargets ().size() > 0) {
+ // there should always be at least one element in the target
+ // list and it should be a classifier, but better check.
+ org.eclipse.uml2.uml.Element element =
+ relationship.getTargets().get(0);
+ if (element instanceof org.eclipse.uml2.uml.Classifier) {
+ target = (org.eclipse.uml2.uml.Classifier) element;
+ }
+ }
+ if (target != null) {
+ // If not <NoCodeGen>
+ if (!GenUtils.hasStereotype(target, CppNoCodeGen.class))
+ {
+ CppVisibility cppVisibility = GenUtils.getApplication(relationship, CppVisibility.class);
+ if (cppVisibility != null) {
+ visibility = cppVisibility.getValue();
+ } else {
+ visibility = "public";
+ }
+
+ targetName = GenUtils.qualifiedName (target);
+ if (!decl.equals("")) {
+ decl = decl + ", ";
+ }
+ decl = decl+visibility+" "+targetName;
+ }
+ }
+ }
+ }
+
+ // Parse implementations
+ // RS: removed code: Implementation does not exist in UML2 v2.
+ // TODO: replace Implementation with new UML2 constructions?
+// Implementation currentImp;
+//
+// while (impIt.hasNext()) {
+//
+// currentImp = (Implementation) impIt.next();
+// currentNE = (NamedElement) currentImp;
+//
+// // get visibility and target name
+// visibility = currentNE.getVisibilityAsString();
+//
+// // If not <NoCodeGen>
+// if (!GenUtils.hasStereotype(currentImp.getTarget(), CppNoCodeGen.class)) {
+//
+// targetName = currentImp.getTarget().getName();
+//
+// if (!decl.equals("")) {
+// decl = decl + ", ";
+// }
+// decl = decl+visibility+" "+targetName;
+//
+// }
+// }
+
+
+ // ":" if decl non empty
+ String prefix = "";
+ if (!decl.equals("")) {
+ prefix = " : ";
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( prefix );
+ stringBuffer.append( decl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassInlineOperationsImplementation.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassInlineOperationsImplementation.java
new file mode 100644
index 00000000000..4ff043d4116
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassInlineOperationsImplementation.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.Iterator;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.*;
+
+public class CppClassInlineOperationsImplementation
+{
+ protected static String nl;
+ public static synchronized CppClassInlineOperationsImplementation create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassInlineOperationsImplementation result = new CppClassInlineOperationsImplementation();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+ String opDecl = "";
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentClass.getOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOp = operations.next();
+ if (GenUtils.hasStereotype (currentOp, CppInline.class) &&
+ !GenUtils.hasStereotype (currentOp, CppNoCodeGen.class)) {
+
+ CppOperationImplementation jetOpImpl = new CppOperationImplementation();
+ opDecl = opDecl+jetOpImpl.generate(currentOp);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( opDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassOperationsDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassOperationsDeclaration.java
new file mode 100644
index 00000000000..1ba52bc71f5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassOperationsDeclaration.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.Iterator;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.*;
+
+public class CppClassOperationsDeclaration
+{
+ protected static String nl;
+ public static synchronized CppClassOperationsDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassOperationsDeclaration result = new CppClassOperationsDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument1, Object argument2)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument1;
+ String opDecl = "";
+
+ // Retrieve attributes
+ Iterator<Operation> operations = currentClass.getOperations().iterator();
+ while (operations.hasNext()) {
+ Operation operation = operations.next();
+ if (!GenUtils.hasStereotype (operation, CppNoCodeGen.class)) {
+ if (operation.getVisibility() == argument2) {
+ CppOperationDeclaration jetOpDecl = new CppOperationDeclaration();
+ String cOpDecl = jetOpDecl.generate(operation);
+
+ // if main cOpDecl = "";
+ if (!cOpDecl.equals("")) {
+ opDecl = opDecl+NL+cOpDecl+";";
+ }
+ }
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( opDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassOperationsImplementation.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassOperationsImplementation.java
new file mode 100644
index 00000000000..377e7f579bf
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassOperationsImplementation.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.Iterator;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.*;
+
+public class CppClassOperationsImplementation
+{
+ protected static String nl;
+ public static synchronized CppClassOperationsImplementation create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassOperationsImplementation result = new CppClassOperationsImplementation();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+ String opDecl = "";
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentClass.getOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOp = operations.next();
+ if (!GenUtils.hasStereotype (currentOp, CppInline.class) &&
+ !GenUtils.hasStereotype (currentOp, CppNoCodeGen.class) &&
+ !currentOp.isAbstract()) {
+ CppOperationImplementation jetOpImpl = new CppOperationImplementation();
+ opDecl = opDecl+jetOpImpl.generate(currentOp);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( opDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassTypeAndEnum.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassTypeAndEnum.java
new file mode 100644
index 00000000000..db433ffb881
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassTypeAndEnum.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import org.eclipse.uml2.uml.*;
+
+public class CppClassTypeAndEnum
+{
+ protected static String nl;
+ public static synchronized CppClassTypeAndEnum create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassTypeAndEnum result = new CppClassTypeAndEnum();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Prepare owned type and enum declaration
+ String publicTypeDef = "";
+ String privateTypeDef = "";
+ String protectedTypeDef = "";
+ String publicEnumDef = "";
+ String privateEnumDef = "";
+ String protectedEnumDef = "";
+ String publicKeyword = "public:";
+ String protectedKeyword = "protected:";
+ String privateKeyword = "private:";
+
+ for (Element currentElt : currentClass.getOwnedElements()) {
+ if (!GenUtils.hasStereotype(currentElt, Cpp.CppNoCodeGen.class)) {
+ if (currentElt instanceof PrimitiveType) {
+
+ org.eclipse.uml2.uml.PrimitiveType currentType = (org.eclipse.uml2.uml.PrimitiveType) currentElt;
+ CppPrimitiveTypeDefinition jetPrimitiveType = new CppPrimitiveTypeDefinition();
+ // Execute the util template
+ if (currentType.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
+ publicTypeDef = publicTypeDef+jetPrimitiveType.generate(currentType);
+ } else if (currentType.getVisibility() == VisibilityKind.PROTECTED_LITERAL) {
+ protectedTypeDef = protectedTypeDef+jetPrimitiveType.generate(currentType);
+ } else if (currentType.getVisibility() == VisibilityKind.PRIVATE_LITERAL) {
+ privateTypeDef = privateTypeDef+jetPrimitiveType.generate(currentType);
+ }
+ }
+ else if (currentElt instanceof Enumeration) {
+
+ Enumeration currentEnum = (Enumeration) currentElt;
+ CppEnumerationDefinition jetEnum = new CppEnumerationDefinition();
+ // Execute the util template
+ if (currentEnum.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
+ publicEnumDef = publicEnumDef+jetEnum.generate(currentEnum);
+ } else if (currentEnum.getVisibility() == VisibilityKind.PROTECTED_LITERAL) {
+ protectedEnumDef = protectedEnumDef+jetEnum.generate(currentEnum);
+ } else if (currentEnum.getVisibility() == VisibilityKind.PRIVATE_LITERAL) {
+ privateEnumDef = privateEnumDef+jetEnum.generate(currentEnum);
+ }
+ }
+ }
+ }
+
+ // If not "" add a comment before declarations
+ if (publicTypeDef.equals("") && publicEnumDef.equals("")) {
+ publicKeyword = "";
+ } else {
+ if (!publicTypeDef.equals("")) {
+ publicTypeDef = "/* Public type definitions */"+NL+publicTypeDef+NL;
+ }
+ if (!publicEnumDef.equals("")) {
+ publicEnumDef = "/* Public enumeration definitions */"+NL+publicEnumDef+NL;
+ }
+ }
+
+ if (protectedTypeDef.equals("") && protectedEnumDef.equals("")) {
+ protectedKeyword = "";
+ } else {
+ if (!protectedTypeDef.equals("")) {
+ protectedTypeDef = "/* Protected type definitions */"+NL+protectedTypeDef+NL;
+ }
+ if (!protectedEnumDef.equals("")) {
+ protectedEnumDef = "/* Protected enumeration definitions */"+NL+protectedEnumDef+NL;
+ }
+ }
+
+ if (privateTypeDef.equals("") && privateEnumDef.equals("")) {
+ privateKeyword = "";
+ } else {
+ if (!privateTypeDef.equals("")) {
+ privateTypeDef = "/* Private type definitions */"+NL+privateTypeDef+NL;
+ }
+ if (!privateEnumDef.equals("")) {
+ privateEnumDef = "/* Private enumeration definitions */"+NL+privateEnumDef+NL;
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( publicKeyword );
+ stringBuffer.append( publicTypeDef );
+ stringBuffer.append( publicEnumDef );
+ stringBuffer.append( protectedKeyword );
+ stringBuffer.append( protectedTypeDef );
+ stringBuffer.append( protectedEnumDef );
+ stringBuffer.append( privateKeyword );
+ stringBuffer.append( privateTypeDef );
+ stringBuffer.append( privateEnumDef );
+ stringBuffer.append(TEXT_2);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassTypeAndEnumPackage.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassTypeAndEnumPackage.java
new file mode 100644
index 00000000000..4818c9dd823
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppClassTypeAndEnumPackage.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import java.util.Iterator;
+import Cpp.*;
+
+public class CppClassTypeAndEnumPackage
+{
+ protected static String nl;
+ public static synchronized CppClassTypeAndEnumPackage create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppClassTypeAndEnumPackage result = new CppClassTypeAndEnumPackage();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL;
+ protected final String TEXT_3 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+
+ // Prepare owned type and enum declaration
+ String packageTypeDef = "";
+ String packageEnumDef = "";
+
+ Iterator<Element> typeIt = currentClass.getOwnedElements().iterator();
+ while (typeIt.hasNext()) {
+ Element currentElt = typeIt.next();
+ if (!GenUtils.hasStereotype(currentElt, CppNoCodeGen.class)) {
+ if (currentElt instanceof PrimitiveType) {
+
+ PrimitiveType currentType = (PrimitiveType) currentElt;
+ CppPrimitiveTypeDefinition jetPrimitiveType = new CppPrimitiveTypeDefinition();
+ // Execute the util template
+ if (currentType.getVisibility() == VisibilityKind.PACKAGE_LITERAL) {
+ packageTypeDef = packageTypeDef+jetPrimitiveType.generate(currentType);
+ }
+
+
+ } else if (currentElt instanceof Enumeration) {
+
+ Enumeration currentEnum = (Enumeration) currentElt;
+ CppEnumerationDefinition jetEnum = new CppEnumerationDefinition();
+ // Execute the util template
+ if (currentEnum.getVisibility() == VisibilityKind.PACKAGE_LITERAL) {
+ packageEnumDef = packageEnumDef+jetEnum.generate(currentEnum);
+ }
+
+ }
+ }
+ }
+
+ // If not "" add a comment before declarations
+ if (!packageEnumDef.equals("")) {
+ packageEnumDef = "/* Package enumeration definitions */"+NL+packageEnumDef;
+ }
+ if (!packageTypeDef.equals("")) {
+ packageTypeDef = "/* Package type definitions */"+NL+packageTypeDef;
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( packageTypeDef );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( packageEnumDef );
+ stringBuffer.append(TEXT_3);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppEnumerationDefinition.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppEnumerationDefinition.java
new file mode 100644
index 00000000000..b3589b1a5fe
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppEnumerationDefinition.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import java.util.Iterator;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import Cpp.*;
+
+public class CppEnumerationDefinition
+{
+ protected static String nl;
+ public static synchronized CppEnumerationDefinition create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppEnumerationDefinition result = new CppEnumerationDefinition();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL + "enum ";
+ protected final String TEXT_3 = " {" + NL + "\t";
+ protected final String TEXT_4 = NL + "};" + NL;
+ protected final String TEXT_5 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // This is an util template to prepare Enumeration definition
+ /////////////////////////////////////////////////////////////
+
+
+ // Retrieve the enumeration
+ Enumeration currentEnumeration = (Enumeration) argument;
+
+ // Get the package name
+ String enumName = currentEnumeration.getName();
+
+ // Doc
+ String enumDoc = "";
+ String enumLitDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+ enumDoc = jDoc.generate(currentEnumeration);
+
+ // Retrieve literals
+ String enumLiterals = "";
+
+ Iterator<EnumerationLiteral> literalsIt = currentEnumeration.getOwnedLiterals().iterator();
+
+ while (literalsIt.hasNext()) {
+
+ // retrieve current
+ EnumerationLiteral currentLiteral = literalsIt.next();
+
+ enumLiterals = enumLiterals+currentLiteral.getName();
+
+ // if current literal is initialised
+ CppInit cppInit = GenUtils.getApplication(currentLiteral, CppInit.class);
+ if (cppInit != null) {
+ // Add the initialisation value
+ int initValue = cppInit.getValue();
+ enumLiterals = enumLiterals + " = " + initValue;
+ }
+
+ // Retrieve doc
+ if (!GenUtils.getComments(currentLiteral).equals("")) {
+ enumLitDoc = " //< "+GenUtils.getComments(currentLiteral);
+ } else {
+ enumLitDoc = "";
+ }
+
+ // if more literal left prepare new line for next literal
+ if (literalsIt.hasNext()) {
+ enumLiterals = enumLiterals+" ,"+enumLitDoc+NL+"\t";
+ } else {
+ enumLiterals = enumLiterals+enumLitDoc;
+ }
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( enumDoc );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( enumName );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( enumLiterals );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append(TEXT_5);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceAllIncludesDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceAllIncludesDeclaration.java
new file mode 100644
index 00000000000..ced6f6754b1
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceAllIncludesDeclaration.java
@@ -0,0 +1,113 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.emf.common.util.UniqueEList;
+import java.util.*;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.Classifier;
+
+public class CppInterfaceAllIncludesDeclaration
+{
+ protected static String nl;
+ public static synchronized CppInterfaceAllIncludesDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppInterfaceAllIncludesDeclaration result = new CppInterfaceAllIncludesDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the interface
+ Interface currentInterface = (Interface) argument;
+
+ // Prepare Dependency includes declarations ...
+ // Retrieve package used by current package (dependencies)
+ // use a unique list to avoid duplicates
+ EList<Classifier> usedClasses = new UniqueEList<Classifier> ();
+
+ String newInclude = "";
+
+ // class attributes dependencies
+ usedClasses.addAll (GenUtils.getOwnedAttributeTypes(currentInterface));
+ // operation parameters dependencies
+ usedClasses.addAll (GenUtils.getIncludesFromOperations(currentInterface));
+ // dependencies and associations
+ usedClasses.addAll (GenUtils.getRelationships(currentInterface));
+
+ Iterator<Classifier> usedClassesIt = usedClasses.iterator();
+ // Parsing all as NamedElement
+ String includes = "";
+
+ while (usedClassesIt.hasNext())
+ {
+ Classifier cl = usedClassesIt.next ();
+
+ // Only add include if this is not for the current class
+ if (!currentInterface.equals(cl)) {
+ // ... and if it does not have the stereotype "CppNoCodeGen", unless
+ // it has stereotype "CppExternalClass"
+ if ( (!GenUtils.hasStereotype(cl, CppNoCodeGen.class)) ||
+ GenUtils.hasStereotype(cl, CppExternClass.class)) {
+
+ if ((cl instanceof Enumeration) || (cl instanceof PrimitiveType))
+ {
+ // Enumeration is not defined in a separate file, but in the
+ // package that owns it => include the owning package (might be a duplicate input, if owning
+ // package is also the owner of current interface)
+ CppOwnerPackageIncludeDeclaration jetIDecl
+ = new CppOwnerPackageIncludeDeclaration();
+ if (cl.getOwner() instanceof Package) {
+ newInclude = jetIDecl.generate (cl.getOwner ());
+ }
+ else {
+ newInclude = "";
+ }
+ }
+ else {
+ // include the file associated with the classifier
+ CppClassIncludeDeclaration jetIDecl
+ = new CppClassIncludeDeclaration();
+ newInclude = jetIDecl.generate (cl);
+ }
+
+ includes = includes+newInclude;
+ }
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( includes );
+ stringBuffer.append(TEXT_2);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceIncludeDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceIncludeDeclaration.java
new file mode 100644
index 00000000000..63b3a5ebe72
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceIncludeDeclaration.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppInterfaceIncludeDeclaration
+{
+ protected static String nl;
+ public static synchronized CppInterfaceIncludeDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppInterfaceIncludeDeclaration result = new CppInterfaceIncludeDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "#include <";
+ protected final String TEXT_2 = ".";
+ protected final String TEXT_3 = ">";
+ protected final String TEXT_4 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ // Retrieve the interface
+ NamedElement currentNE = (NamedElement) argument;
+ String iInterfacePath = "";
+ Package nearestPkg = currentNE.getNearestPackage();
+ String iInterfaceName = currentNE.getName();
+
+ if ( //!(nearestPkg.getUml2Package() instanceof org.eclipse.uml2.uml.Model)
+ /*&&*/ !(GenUtils.hasStereotype(nearestPkg, CppRoot.class))) {
+ iInterfacePath = GenUtils.getFullPath (nearestPkg) + "/";
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( iInterfacePath );
+ stringBuffer.append( iInterfaceName );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( headerFileSuffix );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append(TEXT_4);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceInheritedDeclarations.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceInheritedDeclarations.java
new file mode 100644
index 00000000000..309f94f1d57
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfaceInheritedDeclarations.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Generalization;
+import java.util.Iterator;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppInterfaceInheritedDeclarations
+{
+ protected static String nl;
+ public static synchronized CppInterfaceInheritedDeclarations create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppInterfaceInheritedDeclarations result = new CppInterfaceInheritedDeclarations();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the interface
+ Classifier currentClass = (Classifier) argument;
+ String decl = "";
+ String visibility = "";
+
+ // Get generalization and implementation relationships
+ Iterator<Generalization> genIt = currentClass.getGeneralizations().iterator();
+
+ // Parse generalizations
+ while (genIt.hasNext()) {
+
+ Generalization currentGen = genIt.next();
+
+ visibility = GenUtils.getVisibility(currentGen);
+
+ // If not <NoCodeGen>
+ Classifier tmpClassifier = currentGen.getGeneral();
+ if (!GenUtils.hasStereotype(tmpClassifier, CppNoCodeGen.class)) {
+
+ String targetName = tmpClassifier.getName();
+
+ if (!decl.equals("")) {
+ decl = decl + ", ";
+ }
+ decl = decl+visibility+" "+targetName;
+ }
+ }
+
+ // ":" only if decl not empty
+ String prefix = "";
+ if (!decl.equals("")) {
+ prefix = ": ";
+ visibility = "public ";
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( prefix );
+ stringBuffer.append( decl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfacePublicOperationsDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfacePublicOperationsDeclaration.java
new file mode 100644
index 00000000000..84debe54ae5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppInterfacePublicOperationsDeclaration.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.VisibilityKind;
+import java.util.*;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppInterfacePublicOperationsDeclaration
+{
+ protected static String nl;
+ public static synchronized CppInterfacePublicOperationsDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppInterfacePublicOperationsDeclaration result = new CppInterfacePublicOperationsDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Interface currentInterface = (Interface) argument;
+ String opDecl = "";
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentInterface.getOwnedOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOperation = operations.next();
+ if ((currentOperation.getVisibility() == VisibilityKind.PUBLIC_LITERAL) &&
+ !GenUtils.hasStereotype (currentOperation, CppNoCodeGen.class)) {
+ CppOperationDeclaration jetOpDecl = new CppOperationDeclaration();
+ String cOpDecl = jetOpDecl.generate(currentOperation);
+
+ // if main cOpDecl = "";
+ if (!cOpDecl.equals("")) {
+ opDecl = opDecl+"\t"+cOpDecl+";";
+ }
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( opDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationDeclaration.java
new file mode 100644
index 00000000000..28ff6878080
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationDeclaration.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.StdStereo;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppOperationDeclaration
+{
+ protected static String nl;
+ public static synchronized CppOperationDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppOperationDeclaration result = new CppOperationDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL;
+ protected final String TEXT_3 = NL + "\t";
+ protected final String TEXT_4 = "(";
+ protected final String TEXT_5 = ")";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+
+ String operationName = currentOperation.getName();
+
+ String opParameters = "";
+
+ String returnTypeName = "void";
+ String pVirtualSuffix = "";
+ String prefix = "";
+ String constOp = "";
+
+
+ String opDoc = "";
+
+ // Doc for the template
+ CppOperationDoc jDoc = new CppOperationDoc();
+ opDoc = GenUtils.indent (jDoc.generate(currentOperation), "\t");
+
+ // Prepare return type
+ CppOperationReturnType jetRT = new CppOperationReturnType();
+ returnTypeName = jetRT.generate(currentOperation);
+ if (!returnTypeName.equals ("")) {
+ returnTypeName += " ";
+ }
+
+ boolean isInterface = currentOperation.getOwner () instanceof Interface;
+
+ // Static attribute
+ if (currentOperation.isStatic()) {
+ prefix = prefix+"static"+" ";
+ }
+
+ // Inline attribute
+ if (GenUtils.hasStereotype(currentOperation, CppInline.class)) {
+ prefix = prefix+"inline"+" ";
+ }
+
+ // Creator / Destructor: use function within StdStereo
+ if (StdStereo.isApplied(currentOperation, StdStereo.create)) {
+ returnTypeName = "";
+ }
+ if (StdStereo.isApplied(currentOperation, StdStereo.destroy)) {
+ returnTypeName = "";
+ operationName = "~"+operationName;
+ }
+
+ // Const attribute on operation
+ if (GenUtils.hasStereotype(currentOperation, CppConst.class)) {
+ constOp = " const";
+ }
+
+ // Virtual attribute on operation
+ if (GenUtils.hasStereotype(currentOperation, CppVirtual.class)) {
+ prefix = "virtual "+prefix;
+ }
+
+ // Pure Virtual attribute on operation
+ if (isInterface || currentOperation.isAbstract ()) {
+ prefix = "virtual "+prefix;
+ pVirtualSuffix = " = 0";
+ }
+
+ // Friend attribute on operation
+ if (GenUtils.hasStereotype(currentOperation, CppFriend.class)) {
+ prefix = "friend "+prefix;
+ }
+
+ // Prepare parameters
+ CppOperationParameters jetParams = new CppOperationParameters();
+ opParameters = jetParams.generate(currentOperation);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template only if current operation is not main
+// else nothing is return...
+//////////////////////////////////////////////////////////////////////////////////////////
+
+if (!operationName.equals("main")) {
+
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( opDoc );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( prefix );
+ stringBuffer.append( returnTypeName );
+ stringBuffer.append( operationName );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( opParameters );
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append( constOp );
+ stringBuffer.append( pVirtualSuffix );
+ //////////////////////////////////////////////////////////////////////////////////////////
+} // else nothing done
+//////////////////////////////////////////////////////////////////////////////////////////
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationImplementation.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationImplementation.java
new file mode 100644
index 00000000000..af6da84736b
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationImplementation.java
@@ -0,0 +1,171 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.StdStereo;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppOperationImplementation
+{
+ protected static String nl;
+ public static synchronized CppOperationImplementation create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppOperationImplementation result = new CppOperationImplementation();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL;
+ protected final String TEXT_3 = NL;
+ protected final String TEXT_4 = " ";
+ protected final String TEXT_5 = " (";
+ protected final String TEXT_6 = ") {";
+ protected final String TEXT_7 = NL;
+ protected final String TEXT_8 = NL + "}" + NL;
+ protected final String TEXT_9 = "\t" + NL;
+ protected final String TEXT_10 = NL;
+ protected final String TEXT_11 = NL;
+ protected final String TEXT_12 = " ";
+ protected final String TEXT_13 = "::";
+ protected final String TEXT_14 = "(";
+ protected final String TEXT_15 = ")";
+ protected final String TEXT_16 = " {";
+ protected final String TEXT_17 = NL;
+ protected final String TEXT_18 = NL + "}" + NL;
+ protected final String TEXT_19 = "\t";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+
+ String body = "";
+ String className = "";
+ String operationName = currentOperation.getName();
+ String opParameters = "";
+ String returnTypeName = "void";
+ String isInline = "";
+ String isConst = "";
+ String constInit = "";
+
+ String opDoc = "";
+
+ // Doc for the template
+ CppOperationDoc jDoc = new CppOperationDoc();
+ opDoc = jDoc.generate(currentOperation);
+
+ // Retrieve class name. Operation may belong to a class or datatype, thus use
+ // generic getOwner function
+ Element opOwner = currentOperation.getOwner();
+ className = (opOwner instanceof NamedElement) ? ((NamedElement) opOwner).getName() : "";
+
+ // Retrieve body content
+ body = GenUtils.getBody (currentOperation, "C/C++");
+
+ // Prepare return type
+ CppOperationReturnType jetRT = new CppOperationReturnType();
+ returnTypeName = jetRT.generate(currentOperation);
+
+ // Creator / Destructor: use function within StdStereo
+ if (StdStereo.isApplied(currentOperation, StdStereo.create)) {
+ returnTypeName = "";
+ }
+ if (StdStereo.isApplied(currentOperation, StdStereo.destroy)) {
+ returnTypeName = "";
+ operationName = "~"+operationName;
+ }
+
+ // If is inline operation
+ if (GenUtils.hasStereotype(currentOperation, CppInline.class)) {
+ isInline = "inline ";
+ }
+
+ // Const op
+ if (GenUtils.hasStereotype(currentOperation, CppConst.class)) {
+ isConst = " const";
+ }
+
+ // Constructor init list
+ CppConstInit cppConstInit = GenUtils.getApplication(currentOperation, CppConstInit.class);
+ if ((cppConstInit != null)
+ && StdStereo.isApplied(currentOperation, StdStereo.create)) {
+ constInit = " : " + cppConstInit.getInitialisation();
+ }
+
+ // Prepare parameters
+ CppOperationParametersWithoutDefaultValue jetParams = new CppOperationParametersWithoutDefaultValue();
+ opParameters = jetParams.generate(currentOperation);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template two cases main operation or classical
+//////////////////////////////////////////////////////////////////////////////////////////
+
+// main
+ if (operationName.equals("main")) {
+
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( opDoc );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( returnTypeName );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( operationName );
+ stringBuffer.append(TEXT_5);
+ stringBuffer.append( opParameters );
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append( body );
+ stringBuffer.append(TEXT_8);
+ //////////////////////////////////////////////////////////////////////////////////////////
+
+ }
+ else {
+
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_9);
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append( opDoc );
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append( isInline );
+ stringBuffer.append( returnTypeName );
+ stringBuffer.append(TEXT_12);
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_13);
+ stringBuffer.append( operationName );
+ stringBuffer.append(TEXT_14);
+ stringBuffer.append( opParameters );
+ stringBuffer.append(TEXT_15);
+ stringBuffer.append( isConst );
+ stringBuffer.append( constInit );
+ stringBuffer.append(TEXT_16);
+ stringBuffer.append(TEXT_17);
+ stringBuffer.append( body );
+ stringBuffer.append(TEXT_18);
+ //////////////////////////////////////////////////////////////////////////////////////////
+ }
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_19);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationParameters.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationParameters.java
new file mode 100644
index 00000000000..fc67d3ec185
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationParameters.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.*;
+
+public class CppOperationParameters
+{
+ protected static String nl;
+ public static synchronized CppOperationParameters create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppOperationParameters result = new CppOperationParameters();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+ Parameter currentParameter;
+
+ String paramDecl = "";
+
+ Iterator<Parameter> parameters = currentOperation.getOwnedParameters().iterator();
+ while(parameters.hasNext()) {
+ currentParameter = parameters.next();
+ if (currentParameter.getDirection () != ParameterDirectionKind.RETURN_LITERAL) {
+ // Prepare parameters
+ CppParameter jetParam = new CppParameter();
+ if (!paramDecl.equals("")) {
+ paramDecl += ", ";
+ }
+ paramDecl = paramDecl+jetParam.generate(currentParameter);
+ }
+ }
+
+ paramDecl.replaceAll(NL, "");
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append( paramDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationParametersWithoutDefaultValue.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationParametersWithoutDefaultValue.java
new file mode 100644
index 00000000000..d3e0dc8d710
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationParametersWithoutDefaultValue.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import java.util.*;
+
+public class CppOperationParametersWithoutDefaultValue
+{
+ protected static String nl;
+ public static synchronized CppOperationParametersWithoutDefaultValue create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppOperationParametersWithoutDefaultValue result = new CppOperationParametersWithoutDefaultValue();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+ Parameter currentParameter;
+
+ String paramDecl = "";
+
+ Iterator<Parameter> parameters = currentOperation.getOwnedParameters().iterator();
+ while(parameters.hasNext()) {
+ currentParameter = parameters.next();
+ if (currentParameter.getDirection () != ParameterDirectionKind.RETURN_LITERAL) {
+ // Prepare parameters
+ CppParameterWithoutDefaultValue jetParam = new CppParameterWithoutDefaultValue();
+ if (!paramDecl.equals("")) {
+ paramDecl += ", ";
+ }
+ paramDecl = paramDecl+jetParam.generate(currentParameter);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append( paramDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationReturnType.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationReturnType.java
new file mode 100644
index 00000000000..5a75d7009e8
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationReturnType.java
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import org.eclipse.uml2.uml.Class;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.*;
+
+public class CppOperationReturnType
+{
+ protected static String nl;
+ public static synchronized CppOperationReturnType create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppOperationReturnType result = new CppOperationReturnType();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "::";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+
+ String returnTypeName = "void";
+ String ownerName = "";
+ Modifier modifier = new Modifier();
+
+ // Return type
+ if (currentOperation.getType() == null) {
+ returnTypeName = "void";
+ } else {
+ if (currentOperation.getType() == null) {
+ returnTypeName = "undefined";
+ } else {
+ // Treat the type if it is not "package visibility" and owned by a class
+ Type currentType = currentOperation.getType();
+ returnTypeName = GenUtils.qualifiedName (currentType);
+
+ if (currentType.getVisibility() != VisibilityKind.PACKAGE_LITERAL) {
+ if (currentType.getOwner() instanceof Class) {
+ ownerName = ((Class) currentType.getOwner()).getName();
+ }
+ }
+ }
+
+ // Treat pointer or ref on return parameter (only one return parameter should exists)
+ // retrieve return parameter
+// RS: changed test: now getReturnResult returns only one param
+// if (currentOperation.getUml2Operation().getReturnResults().size() == 1) {
+// org.eclipse.uml2.uml.Parameter uml2Param
+// = (org.eclipse.uml2.uml.Parameter) currentOperation.getUml2Operation().getReturnResults().get(0);
+// Parameter currentRParameter
+// = new Parameter(uml2Param);
+// // case Pointer
+// if (currentRParameter.hasStereotype(xy, CppPtr.class)) {
+// isPointer = " "+currentRParameter.getTaggedValue(CppPtr.class, "declaration");
+// }
+// if (currentRParameter.hasStereotype(xy, CppRef.class)) {
+// isRef = " "+currentRParameter.getTaggedValue(CppRef.class, "declaration");
+// }
+// if (currentRParameter.hasStereotype(xy, CppConst.class_)) {
+// isConst = "const ";
+// }
+// }
+ if (currentOperation.getReturnResult() instanceof Parameter) {
+ Parameter uml2Param = (Parameter) currentOperation.getReturnResult();
+ modifier = new Modifier(uml2Param);
+ }
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template two cases : scope required or not
+//////////////////////////////////////////////////////////////////////////////////////////
+
+// No scope details
+ if (ownerName.equals("")) {
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append( modifier.isConst );
+ stringBuffer.append( returnTypeName );
+ stringBuffer.append( modifier.ptr );
+ stringBuffer.append( modifier.ref );
+ //////////////////////////////////////////////////////////////////////////////////////////
+} else {
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append( modifier.isConst );
+ stringBuffer.append( ownerName );
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( returnTypeName );
+ stringBuffer.append( modifier.ptr );
+ stringBuffer.append( modifier.ref );
+ //////////////////////////////////////////////////////////////////////////////////////////
+}
+//////////////////////////////////////////////////////////////////////////////////////////
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationTemplateImplementation.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationTemplateImplementation.java
new file mode 100644
index 00000000000..18487bed8a5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOperationTemplateImplementation.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import org.eclipse.uml2.uml.Class;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.StdStereo;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppOperationTemplateImplementation
+{
+ protected static String nl;
+ public static synchronized CppOperationTemplateImplementation create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppOperationTemplateImplementation result = new CppOperationTemplateImplementation();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "(";
+ protected final String TEXT_2 = ")";
+ protected final String TEXT_3 = " {";
+ protected final String TEXT_4 = NL;
+ protected final String TEXT_5 = NL + "}";
+ protected final String TEXT_6 = "<";
+ protected final String TEXT_7 = ">::";
+ protected final String TEXT_8 = "(";
+ protected final String TEXT_9 = ")";
+ protected final String TEXT_10 = " {";
+ protected final String TEXT_11 = NL;
+ protected final String TEXT_12 = NL + "}";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+
+ String operationName = currentOperation.getName();
+ String opParameters = "";
+ String returnTypeName = "void";
+ String isConst = "";
+ String isInline = "";
+
+ // Retrieve class & class name
+ Class currentClass = currentOperation.getClass_ ();
+ String className = currentClass.getName();
+
+ // Retrieve body content
+ String body = GenUtils.getBody (currentOperation, "C/C++");
+
+ // Prepare return type
+ CppOperationReturnType jetRT = new CppOperationReturnType();
+ returnTypeName = jetRT.generate(currentOperation);
+ if (! "".equals(returnTypeName)) {
+ returnTypeName = returnTypeName + " ";
+ }
+
+ // Creator / Destructor: use function within StdStereo
+ if (StdStereo.isApplied(currentOperation, StdStereo.create)) {
+ returnTypeName = "";
+ }
+ if (StdStereo.isApplied(currentOperation, StdStereo.destroy)) {
+ returnTypeName = "";
+ operationName = "~"+operationName;
+ }
+
+ // If inline operation
+ if (GenUtils.hasStereotype(currentOperation, CppInline.class)) {
+ isInline = "inline ";
+ }
+
+ // Const op
+ if (GenUtils.hasStereotype(currentOperation, CppConst.class)) {
+ isConst = " const";
+ }
+
+ // Prepare parameters
+ CppOperationParametersWithoutDefaultValue jetParams
+ = new CppOperationParametersWithoutDefaultValue();
+ opParameters = jetParams.generate(currentOperation);
+
+
+ // Prepare template parameter declaration without type
+ String tparamWoType = "";
+
+ if (currentClass != null) {
+ tparamWoType = GenUtils.getTemplateParametersWoType(currentClass);
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+// Package visibility
+ if (currentOperation.getVisibility() == VisibilityKind.PACKAGE_LITERAL) {
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ stringBuffer.append( isInline );
+ stringBuffer.append( returnTypeName );
+ stringBuffer.append( operationName );
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( opParameters );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( isConst );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( body );
+ stringBuffer.append(TEXT_5);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ } else { // Default case
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ stringBuffer.append( isInline );
+ stringBuffer.append( returnTypeName );
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_6);
+ stringBuffer.append( tparamWoType );
+ stringBuffer.append(TEXT_7);
+ stringBuffer.append( operationName );
+ stringBuffer.append(TEXT_8);
+ stringBuffer.append( opParameters );
+ stringBuffer.append(TEXT_9);
+ stringBuffer.append( isConst );
+ stringBuffer.append(TEXT_10);
+ stringBuffer.append(TEXT_11);
+ stringBuffer.append( body );
+ stringBuffer.append(TEXT_12);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+ }
+//////////////////////////////////////////////////////////////////////////////////////////
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOwnerPackageIncludeDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOwnerPackageIncludeDeclaration.java
new file mode 100644
index 00000000000..777e4798740
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppOwnerPackageIncludeDeclaration.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppOwnerPackageIncludeDeclaration
+{
+ protected static String nl;
+ public static synchronized CppOwnerPackageIncludeDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppOwnerPackageIncludeDeclaration result = new CppOwnerPackageIncludeDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = " \t" + NL + "/* Owner package header include */" + NL + "#include <";
+ protected final String TEXT_2 = "/Pkg_";
+ protected final String TEXT_3 = ".";
+ protected final String TEXT_4 = ">";
+ protected final String TEXT_5 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the type passed as argument
+ Package currentPkg = (Package) argument;
+ String currentPkgName = currentPkg.getName();
+ String currentPkgPath = GenUtils.getFullPath (currentPkg);
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ // Prepare Father include declaration
+ boolean isRoot = false;
+
+ // The currentElt has the CppRoot stereotype
+ if (GenUtils.hasStereotype(currentPkg, CppRoot.class)) {
+ isRoot = true;
+ }
+ // The currentPkg is the model root package
+ //if (currentPkg instanceof org.eclipse.uml2.uml.Model){
+ // isRoot = true;
+ //}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ // if currentPkg is not root it is referenced here
+ if (!isRoot) {
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( currentPkgPath );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( currentPkgName );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( headerFileSuffix );
+ stringBuffer.append(TEXT_4);
+ // endif
+ }
+ stringBuffer.append(TEXT_5);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppParameter.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppParameter.java
new file mode 100644
index 00000000000..87ac2c0bfac
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppParameter.java
@@ -0,0 +1,76 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Parameter;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.Modifier;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppParameter
+{
+ protected static String nl;
+ public static synchronized CppParameter create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppParameter result = new CppParameter();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = " ";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Parameter
+ Parameter currentParameter = (Parameter) argument;
+
+ String parameterName = currentParameter.getName();
+
+ String typeName = "";
+ String suffix = "";
+ Modifier modifier = new Modifier(currentParameter);
+
+ if (currentParameter.getType() == null) {
+ typeName = "undefined";
+ } else {
+ typeName = GenUtils.qualifiedName (currentParameter.getType());
+ }
+
+ // Initial value
+ CppDefault cppDefault = GenUtils.getApplication(currentParameter, CppDefault.class);
+ if (cppDefault != null) {
+ suffix = " = " + cppDefault.getValue();
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append( modifier.isConst );
+ stringBuffer.append( typeName );
+ stringBuffer.append( modifier.ptr );
+ stringBuffer.append( modifier.ref );
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( parameterName );
+ stringBuffer.append( modifier.array );
+ stringBuffer.append( suffix );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppParameterWithoutDefaultValue.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppParameterWithoutDefaultValue.java
new file mode 100644
index 00000000000..1bb92004f6d
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppParameterWithoutDefaultValue.java
@@ -0,0 +1,111 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Classifier;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.Modifier;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppParameterWithoutDefaultValue
+{
+ protected static String nl;
+ public static synchronized CppParameterWithoutDefaultValue create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppParameterWithoutDefaultValue result = new CppParameterWithoutDefaultValue();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "<";
+ protected final String TEXT_2 = ">";
+ protected final String TEXT_3 = " ";
+ protected final String TEXT_4 = " ";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Parameter
+ Parameter currentParameter = (Parameter) argument;
+
+ String parameterName = currentParameter.getName();
+
+ String typeName = "";
+ Modifier modifier = new Modifier(currentParameter);
+
+ // Prepare template parameter declaration without type
+ String tparamWoType = "";
+
+ if (currentParameter.getType() == null) {
+ typeName = "undefined";
+ }
+ else if (currentParameter.getType() instanceof Classifier) {
+ Classifier classifier = (Classifier) currentParameter.getType();
+ tparamWoType = GenUtils.getTemplateParametersWoType(classifier);
+
+ typeName = GenUtils.qualifiedName (currentParameter.getType());
+ }
+ else {
+ typeName = GenUtils.qualifiedName (currentParameter.getType());
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+// Package visibility
+ if (!"".equals(tparamWoType)) {
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ stringBuffer.append( modifier.isConst );
+ stringBuffer.append( typeName );
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( tparamWoType );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( modifier.ptr );
+ stringBuffer.append( modifier.ref );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append( parameterName );
+ stringBuffer.append( modifier.array );
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ } else { // Default case
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ stringBuffer.append( modifier.isConst );
+ stringBuffer.append( typeName );
+ stringBuffer.append( modifier.ptr );
+ stringBuffer.append( modifier.ref );
+ stringBuffer.append(TEXT_4);
+ stringBuffer.append( parameterName );
+ stringBuffer.append( modifier.array );
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+ }
+//////////////////////////////////////////////////////////////////////////////////////////
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppPrimitiveTypeDefinition.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppPrimitiveTypeDefinition.java
new file mode 100644
index 00000000000..c014caf01d6
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppPrimitiveTypeDefinition.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppPrimitiveTypeDefinition
+{
+ protected static String nl;
+ public static synchronized CppPrimitiveTypeDefinition create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppPrimitiveTypeDefinition result = new CppPrimitiveTypeDefinition();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = NL;
+ protected final String TEXT_3 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the type passed as argument
+ PrimitiveType currentPType = (PrimitiveType) argument;
+ String currentPTypeName = currentPType.getName();
+ String definition = "";
+
+ // Doc
+ String typeDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+
+ /**
+ * Support two different kinds of primitive types
+ * (1) those that are native types of the programming language such as long
+ * For these, no additional definition has to be done and they should be referenced
+ * with their name only
+ * (2) those that correspond to a typedef (e.g. typedef long ErrorType). These require
+ * a typedef definition within the package and need to be referenced with their
+ * fully qualified name (e.g. MyPackage::ErrorType)
+ */
+ // Retrieve type definition
+ CppType cppType = GenUtils.getApplication(currentPType, CppType.class);
+ if (cppType != null) {
+ typeDoc = jDoc.generate(currentPType);
+ definition = "typedef " + cppType.getDefinition();
+
+ // If definition string contains "typeName" it should be replaced with type name...
+ if (definition.indexOf("typeName") != -1) {
+ definition = definition.replaceAll("typeName", currentPTypeName);
+ } else {
+ definition = definition + " " + currentPTypeName;
+ }
+ definition = definition + ";";
+ }
+ else {
+ definition = GenUtils.getStdtypes(currentPType);
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( typeDoc );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( definition );
+ stringBuffer.append(TEXT_3);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppStaticAttributeImplementation.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppStaticAttributeImplementation.java
new file mode 100644
index 00000000000..e24233da4ab
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppStaticAttributeImplementation.java
@@ -0,0 +1,102 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.*;
+
+public class CppStaticAttributeImplementation
+{
+ protected static String nl;
+ public static synchronized CppStaticAttributeImplementation create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppStaticAttributeImplementation result = new CppStaticAttributeImplementation();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "";
+ protected final String TEXT_2 = "::";
+ protected final String TEXT_3 = ";";
+ protected final String TEXT_4 = NL;
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the property
+ Property currentAttribute = (Property) argument;
+
+ String attributeName = currentAttribute.getName();
+ String className = GenUtils.qualifiedName (currentAttribute.getClass_());
+ String typeName = "";
+ String suffix = "";
+ String multiple = "";
+ String isAgg = ""; // attribute is an aggregation or association
+
+
+ if (currentAttribute.getType() == null) {
+ typeName = "undefined"+" ";
+ } else {
+ typeName = GenUtils.qualifiedName (currentAttribute.getType()) + " ";
+ }
+
+ // Multiple
+ // if (currentAttribute.isMultiple()) {
+ // multiple = "*";
+ // }
+
+ // If attribute is aggregation then generate a pointer
+ if (GenUtils.isAggregation(currentAttribute)) {
+ // attributeName = "(*"+attributeName+")"; // this produce a pointer on a tab
+ isAgg = "*"; // this produce a tab of pointers
+ }
+
+ Modifier modifier = new Modifier(currentAttribute);
+
+ // Initial value
+ if (currentAttribute.getDefaultValue() != null) {
+ // via UML
+ suffix = " = " + currentAttribute.getDefaultValue().stringValue();
+ }
+ else {
+ CppDefault cppDefault = GenUtils.getApplication(currentAttribute, CppDefault.class);
+ if (cppDefault != null) {
+ suffix = " = " + cppDefault.getValue();
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( typeName );
+ stringBuffer.append( multiple );
+ stringBuffer.append( modifier.ptr );
+ stringBuffer.append( isAgg );
+ stringBuffer.append( modifier.ref );
+ stringBuffer.append( className );
+ stringBuffer.append(TEXT_2);
+ stringBuffer.append( attributeName );
+ stringBuffer.append( modifier.array );
+ stringBuffer.append( suffix );
+ stringBuffer.append(TEXT_3);
+ stringBuffer.append(TEXT_4);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateBindingParameter.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateBindingParameter.java
new file mode 100644
index 00000000000..09feb0868b5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateBindingParameter.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.*;
+
+public class CppTemplateBindingParameter
+{
+ protected static String nl;
+ public static synchronized CppTemplateBindingParameter create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppTemplateBindingParameter result = new CppTemplateBindingParameter();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve the TemplateParameter
+ // Retrieve the TemplateParameter
+ TemplateParameterSubstitution currentTParam = (TemplateParameterSubstitution) argument;
+
+ String typeName = "";
+
+ if (currentTParam.getActual() == null) {
+ typeName ="param undefined";
+ }
+ else {
+ ParameterableElement actual = currentTParam.getActual();
+
+ if (actual instanceof LiteralInteger) {
+ typeName = "" + ((LiteralInteger) currentTParam.getActual()).getValue();
+ }
+ else {
+ typeName = ((NamedElement) currentTParam.getActual()).getName();
+ } // value = currentTParam.getFormal().getParameteredElement().getName();
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append( typeName );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateDeclaration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateDeclaration.java
new file mode 100644
index 00000000000..567a6ce365f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateDeclaration.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.TemplateParameter;
+import java.util.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppTemplateDeclaration
+{
+ protected static String nl;
+ public static synchronized CppTemplateDeclaration create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppTemplateDeclaration result = new CppTemplateDeclaration();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = "template <";
+ protected final String TEXT_2 = ">";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Class currentClass = (Class) argument;
+
+
+ // Prepare template parameter declaration
+ Iterator<TemplateParameter> tparam = GenUtils.getTemplateParameters(currentClass).iterator();
+ String tParamDecl = "";
+
+ while(tparam.hasNext()) {
+ TemplateParameter currentTParam = tparam.next();
+
+ CppTemplateParameter jetTParam = new CppTemplateParameter();
+ tParamDecl = tParamDecl+jetTParam.generate(currentTParam);
+
+ if (tparam.hasNext()) {
+ tParamDecl = tParamDecl+", ";
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( tParamDecl );
+ stringBuffer.append(TEXT_2);
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateInlineOperationsImplementation.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateInlineOperationsImplementation.java
new file mode 100644
index 00000000000..999e3789ce1
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateInlineOperationsImplementation.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import org.eclipse.papyrus.cpp.codegen.jet.doc.*;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Operation;
+import java.util.Iterator;
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+
+public class CppTemplateInlineOperationsImplementation
+{
+ protected static String nl;
+ public static synchronized CppTemplateInlineOperationsImplementation create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppTemplateInlineOperationsImplementation result = new CppTemplateInlineOperationsImplementation();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Class currentClass = (Class) argument;
+ String opDecl = "";
+ String tDecl = "";
+
+ // Retrieve template declaration
+ CppTemplateDeclaration jetTDecl = new CppTemplateDeclaration();
+ // tDecl should contain something like "template <class x, class y>"
+ tDecl = jetTDecl.generate(currentClass) + " ";
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentClass.getOwnedOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOperation = operations.next();
+
+ if (GenUtils.hasStereotype (currentOperation, CppInline.class) &&
+ !GenUtils.hasStereotype (currentOperation, CppNoCodeGen.class)) {
+ String opDoc = "";
+
+ // Doc for the template
+ CppOperationDoc jDoc = new CppOperationDoc();
+ opDoc = jDoc.generate(currentOperation);
+
+ CppOperationTemplateImplementation jetOpImpl = new CppOperationTemplateImplementation();
+ opDecl = opDecl+opDoc+NL+tDecl+jetOpImpl.generate(currentOperation)+NL;
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append( opDecl );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateParameter.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateParameter.java
new file mode 100644
index 00000000000..30e4dc8da32
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/jetsrc/org/eclipse/papyrus/cpp/codegen/jet/util/CppTemplateParameter.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.jet.util;
+
+import Cpp.*;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import org.eclipse.uml2.uml.TemplateParameter;
+
+public class CppTemplateParameter
+{
+ protected static String nl;
+ public static synchronized CppTemplateParameter create(String lineSeparator)
+ {
+ nl = lineSeparator;
+ CppTemplateParameter result = new CppTemplateParameter();
+ nl = null;
+ return result;
+ }
+
+ public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+ protected final String TEXT_1 = " ";
+
+ public String generate(Object argument)
+ {
+ final StringBuffer stringBuffer = new StringBuffer();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve the TemplateParameter
+ TemplateParameter currentTParam = (TemplateParameter) argument;
+
+ String parameterName = "";
+ String typeName = "";
+
+
+ if (GenUtils.getType(currentTParam) == "") {
+ typeName = "undefined";
+ } else {
+ typeName = GenUtils.getType(currentTParam); //.getName();
+ }
+
+ // Retrieve name under stereotype CppTemplateParameter/name
+ Cpp.CppTemplateParameter ctp = GenUtils.getApplication(currentTParam, Cpp.CppTemplateParameter.class);
+ if (ctp != null) {
+ parameterName = ctp.getName();
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ stringBuffer.append( typeName );
+ stringBuffer.append(TEXT_1);
+ stringBuffer.append( parameterName );
+ return stringBuffer.toString();
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/plugin.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/plugin.properties
new file mode 100644
index 00000000000..c14d7642918
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus C++ code generation (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/plugin.xml b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/plugin.xml
new file mode 100644
index 00000000000..a8cab8ba2a5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.papyrus.cpp.codegen.preferences.CppCodeGenPreferenceInitializer">
+ </initializer>
+ </extension>
+</plugin>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Activator.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Activator.java
new file mode 100644
index 00000000000..83cc1860acf
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Activator.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.cpp.codegen;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.cpp.codegen"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java
new file mode 100644
index 00000000000..33e044a0323
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/Constants.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.cpp.codegen;
+
+/**
+ * String constants for the code generation
+ *
+ * @author ansgar
+ *
+ */
+public class Constants {
+
+ public static final String includeHFile = "// include associated header file";
+
+ public static final String cppIncPreBodyStart = "// Include from CppInclude stereotype (pre-body)";
+
+ public static final String cppIncPreBodyEnd = "// End of CppInclude stereotype (pre-body)";
+
+ public static final String cppIncBodyStart = "// Include from CppInclude declaration (body)";
+
+ public static final String cppIncBodyEnd = "// End of CppInclude stereotype (body)";
+
+ public static final String derivedIncludes = "// Derived includes directives";
+
+ public static final String forwardDecl = "// forward declarations";
+
+ public static final String staticAttributes = "// static attributes (if any)";
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java
new file mode 100644
index 00000000000..b27a63cd525
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/StdStereo.java
@@ -0,0 +1,46 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen;
+
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import org.eclipse.uml2.uml.Element;
+
+public class StdStereo {
+
+ public final static String create = "Create";
+
+ public final static String destroy = "Destroy";
+
+ /**
+ * In the UML 2.4 plugin, the Standard profile is split into an L2 and an L3 profile
+ */
+ public final static String[] namespaces = { "Standard", "StandardProfileL2" };
+
+ /**
+ * Check whether a stereotype of the standard profile is applied
+ *
+ * @param element
+ * The element to check
+ * @param stdName
+ * the non qualified name of a stereotype within the standard
+ * profile
+ * @return
+ */
+ public static boolean isApplied(Element element, String stdName) {
+ for(String namespace : namespaces) {
+ if(GenUtils.hasStereotype(element, namespace + "::" + stdName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenConstants.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenConstants.java
new file mode 100644
index 00000000000..3e579c05b10
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenConstants.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.preferences;
+
+public class CppCodeGenConstants {
+
+ /**
+ * Suffix for generated header files
+ */
+ public static final String P_HEADER_SUFFIX = "headSuffix";
+
+ /**
+ * Suffix for generated body/implementation files
+ */
+ public static final String P_IMPLEM_SUFFIX = "implSuffix";
+
+ /**
+ * User defined comment header in generated files
+ */
+ public static final String P_COMMENT_HEADER = "commentHeader";
+
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenPreferenceInitializer.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenPreferenceInitializer.java
new file mode 100644
index 00000000000..96cacb33444
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenPreferenceInitializer.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+
+
+public class CppCodeGenPreferenceInitializer extends AbstractPreferenceInitializer {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+ */
+ public void initializeDefaultPreferences() {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ store.setDefault(CppCodeGenConstants.P_HEADER_SUFFIX, "h");
+ store.setDefault(CppCodeGenConstants.P_IMPLEM_SUFFIX, "cpp");
+
+ // Default value for P_COMMENT_HEADER
+ String NL = System.getProperties().getProperty("line.separator");
+ String defaultValue = "" + "// --------------------------------------------------------" + NL + "// Code generated by Papyrus C++" + NL + "// --------------------------------------------------------" + NL + NL;
+ store.setDefault(CppCodeGenConstants.P_COMMENT_HEADER, defaultValue);
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenUtils.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenUtils.java
new file mode 100644
index 00000000000..d7094ee9786
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/preferences/CppCodeGenUtils.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.preferences;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.cpp.codegen.Activator;
+
+/**
+ * Utility class that returns the preference values
+ *
+ * @author ansgar
+ *
+ */
+public class CppCodeGenUtils {
+
+ protected static IPreferenceStore preferenceStore = null;
+
+ public static String getHeaderSuffix() {
+ initPreferenceStore();
+ return preferenceStore.getString(CppCodeGenConstants.P_HEADER_SUFFIX);
+ }
+
+ public static String getBodySuffix() {
+ initPreferenceStore();
+ return preferenceStore.getString(CppCodeGenConstants.P_IMPLEM_SUFFIX);
+ }
+
+ public static String getCommentHeader() {
+ initPreferenceStore();
+ return preferenceStore.getString(CppCodeGenConstants.P_COMMENT_HEADER);
+ }
+
+ public static void initPreferenceStore() {
+ if(preferenceStore == null) {
+ preferenceStore = Activator.getDefault().getPreferenceStore();
+ }
+ }
+
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/ModelElementsCreator.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/ModelElementsCreator.java
new file mode 100644
index 00000000000..85b2c514068
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/transformation/ModelElementsCreator.java
@@ -0,0 +1,420 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.transformation;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URI;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.cpp.codegen.jet.CppBindBody;
+import org.eclipse.papyrus.cpp.codegen.jet.CppBindHeader;
+import org.eclipse.papyrus.cpp.codegen.jet.CppClassBody;
+import org.eclipse.papyrus.cpp.codegen.jet.CppClassHeader;
+import org.eclipse.papyrus.cpp.codegen.jet.CppInterfaceHeader;
+import org.eclipse.papyrus.cpp.codegen.jet.CppPackageHeader;
+import org.eclipse.papyrus.cpp.codegen.jet.CppTemplateHeader;
+import org.eclipse.papyrus.cpp.codegen.jet.util.CppClassIncludeDeclaration;
+import org.eclipse.papyrus.cpp.codegen.utils.GenUtils;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Relationship;
+import org.eclipse.uml2.uml.Usage;
+
+import Cpp.CppExternClass;
+import Cpp.CppInclude;
+import Cpp.CppNoCodeGen;
+import Cpp.CppRoot;
+import Cpp.CppTemplate;
+import Cpp.ManualGeneration;
+
+
+
+/**
+ * Main class of code generator
+ */
+public class ModelElementsCreator {
+
+ /**
+ *
+ * Constructor.
+ *
+ * @param project
+ * the project in which the generated code should be placed
+ * @param hppExt
+ * The file suffix for c++ header files
+ * @param cppExt
+ * The file suffix for c++ implementation files
+ * @param headerComment
+ * Prefix for each generated file
+ */
+ public ModelElementsCreator(IProject project, String hppExt, String cppExt, String headerComment) {
+ this.hppExt = hppExt;
+ this.cppExt = cppExt;
+ this.headerComment = headerComment;
+ this.project = project;
+ }
+
+ private String hppExt;
+
+ private String cppExt;
+
+ private String headerComment;
+
+ private IProject project;
+
+ /**
+ * Main function for user calls. Creates code for a packageable element.
+ *
+ * @param monitor
+ * a progress monitor
+ * @param element
+ * the element for which code should be generated
+ * @throws CoreException
+ */
+ public void createPackageableElement(IProgressMonitor monitor, PackageableElement element) throws CoreException {
+ IContainer packageContainer = getContainer(element);
+ createPackageableElement(packageContainer, monitor, element);
+ }
+
+ /**
+ * Variant of main function: user may supply explicit container (also used by internal function to avoid
+ * re-calculating the entry container for each element).
+ *
+ * @param packageContainer
+ * The container (directory), in which code should be created
+ * @param monitor
+ * a progress monitor
+ * @param element
+ * the element for which code should be generated
+ * @throws CoreException
+ */
+ public void createPackageableElement(IContainer packageContainer, IProgressMonitor monitor, PackageableElement element) throws CoreException {
+ if(element instanceof Package) {
+ createPackage(packageContainer, monitor, (Package)element);
+ } else if(element instanceof Class) {
+ createClassFiles(packageContainer, (Class)element);
+ } else if(element instanceof Interface) {
+ createInterfaceFile(packageContainer, (Interface)element);
+ } else if((element instanceof PrimitiveType) || (element instanceof Enumeration) || (element instanceof Usage)) {
+ // do nothing, included in package
+ } else if(element instanceof DataType) {
+ createDataTypeFiles(packageContainer, (DataType)element);
+ } else if(element instanceof Relationship) {
+ // no code generation for relationships
+ } else {
+ System.err.println("C++ code generator: unsupported model element " + element);
+ }
+ }
+
+ public void removePackageableElement(IProgressMonitor monitor, PackageableElement element) throws CoreException {
+ IContainer packageContainer = getContainer(element);
+ if(packageContainer instanceof IFolder) {
+ if(element instanceof Package) {
+ IFolder folder = ((IFolder)packageContainer).getFolder(element.getName());
+ folder.delete(true, null);
+ } else if(element instanceof Classifier) {
+ IFile file = ((IFolder)packageContainer).getFile(element.getName());
+ file.delete(true, null);
+ }
+ }
+ }
+
+ /**
+ * Creates the files corresponding to the class. For a "simple" class
+ * generates 2 headers (one for the privates concrete operations and one for
+ * the attributes, public operations and virtual / abstract operations and
+ * one body file.
+ *
+ * @param folder
+ * @param classObject
+ * @throws CoreException
+ */
+ protected void createClassFiles(IContainer container, Class classObject) throws CoreException {
+
+ // treat case of manual code generation
+ if(GenUtils.hasStereotype(classObject, ManualGeneration.class)) {
+ ManualGeneration mg = StUtils.getApplication(classObject, ManualGeneration.class);
+ CppInclude cppInclude = StUtils.getApplication(classObject, CppInclude.class);
+ String fileContent = headerComment + cppInclude.getHeader();
+ createFile(container, classObject.getName() + "." + hppExt, fileContent, true);
+
+ CppClassIncludeDeclaration jetIDecl = new CppClassIncludeDeclaration();
+ String include = jetIDecl.generate(classObject);
+
+ fileContent = headerComment + cppInclude.getPreBody() + GenUtils.NL + include + GenUtils.NL + cppInclude.getBody();
+ String ext = GenUtils.maskNull(mg.getExtensionBody());
+ if(ext.length() == 0) {
+ ext = cppExt;
+ }
+ createFile(container, classObject.getName() + "." + ext, fileContent, true);
+ }
+
+ // Only generate when no CppNoCodeGen stereotype is applied to the class
+ else if((!GenUtils.hasStereotype(classObject, CppNoCodeGen.class)) && (!GenUtils.hasStereotype(classObject, CppExternClass.class)) && (!GenUtils.hasStereotype(classObject, CppTemplate.class))) {
+
+ CppClassHeader headerGenerator = new CppClassHeader();
+ CppClassBody bodyGenerator = new CppClassBody();
+
+ // Template Bound Class
+ if(GenUtils.isTemplateBoundElement(classObject)) {
+ CppBindHeader templateBindingGenerator = new CppBindHeader();
+ CppBindBody bodyBindingGenerator = new CppBindBody();
+ String fileContent = headerComment + templateBindingGenerator.generate(classObject);
+ createFile(container, classObject.getName() + "." + hppExt, fileContent, true);
+
+ fileContent = headerComment + bodyBindingGenerator.generate(classObject);
+ createFile(container, classObject.getName() + "." + cppExt, fileContent, true);
+ } else {
+ if(classObject.isTemplate()) {
+ CppTemplateHeader templateGenerator = new CppTemplateHeader();
+ String fileContent = headerComment + templateGenerator.generate(classObject);
+ createFile(container, classObject.getName() + "." + hppExt, fileContent, true);
+ } else {
+
+ // The class is actually a class.
+
+ // Header file generation
+ String fileContent = headerComment + headerGenerator.generate(classObject);
+ createFile(container, classObject.getName() + "." + hppExt, fileContent, true);
+
+ // "Traditional" code generation : one body file for all
+ // operations.
+ fileContent = headerComment + bodyGenerator.generate(classObject);
+ createFile(container, classObject.getName() + "." + cppExt, fileContent, true);
+ }
+ }
+ }
+ }
+
+ /**
+ * Creates the files corresponding to data types.
+ *
+ * @param container
+ * @param dataTypeObject
+ * @throws CoreException
+ */
+ protected void createDataTypeFiles(IContainer container, DataType dataTypeObject) throws CoreException {
+
+ CppClassHeader headerGenerator = new CppClassHeader();
+ CppClassBody bodyGenerator = new CppClassBody();
+
+ String fileContent = "";
+
+ // Only generate when no CppNoCodeGen stereotype is applied to the class
+ if((!GenUtils.hasStereotype(dataTypeObject, CppNoCodeGen.class)) && (!GenUtils.hasStereotype(dataTypeObject, CppExternClass.class)) && (!GenUtils.hasStereotype(dataTypeObject, CppTemplate.class))) {
+
+ // Template Bound Class
+ // templates for data types currently not supported
+ /*
+ * if(dataTypeObject.isTemplateBoundElement())
+ * {
+ * CppBindHeader templateBindingGenerator = new CppBindHeader();
+ * CppBindBody bodyBindingGenerator = new CppBindBody();
+ * fileContent = headerComment
+ * + templateBindingGenerator.generate(dataTypeObject);
+ * createFile(container, dataTypeObject.getName() + "." + hpp,
+ * fileContent, true);
+ *
+ * fileContent = headerComment
+ * + bodyBindingGenerator.generate(dataTypeObject);
+ * createFile(container, dataTypeObject.getName() + "." + cpp,
+ * fileContent, true);
+ * } else {
+ */
+
+ // Header file generation
+ fileContent = headerComment + headerGenerator.generate(dataTypeObject);
+ createFile(container, dataTypeObject.getName() + "." + hppExt, fileContent, true);
+
+ // "Traditional" code generation : one body file for all
+ // operations.
+ fileContent = headerComment + bodyGenerator.generate(dataTypeObject);
+ createFile(container, dataTypeObject.getName() + "." + cppExt, fileContent, true);
+ }
+ }
+
+ /**
+ * Creates a <em>text</em> file in an eclipse container (either IFolder or
+ * IProject). If this file already exists it is replaced.
+ *
+ * @param owner
+ * the container that will contain the file.
+ * @param filename
+ * The name of the file to create.
+ * @param content
+ * Te text content of the file.
+ * @throws CoreException
+ */
+ protected void createFile(IContainer owner, String filename, String content, boolean force) throws CoreException {
+ IFile file = null;
+ if(owner instanceof IProject) {
+ file = ((IProject)owner).getFile(filename);
+ } else if(owner instanceof IFolder) {
+ file = ((IFolder)owner).getFile(filename);
+ } else {
+ // undefined
+ }
+ if(file != null) {
+ createFile(file, content, force);
+ }
+ }
+
+ /**
+ * Creates a <em>text</em> file in an eclipse folder. If this file already
+ * exists it is replaced.
+ *
+ * @param folder
+ * The folder that will contain the file.
+ * @param filename
+ * The name of the file to create.
+ * @param content
+ * Te text content of the file.
+ * @throws CoreException
+ */
+ protected void createFile(IFile file, String content, boolean force) throws CoreException {
+ if(file.exists() && force) {
+ // file.delete(true,true,null);
+ // YT - deleting files produce inconsistency in SVN working copies
+ final URI locationURI = file.getLocationURI();
+ if(locationURI != null) {
+ IFileStore store = EFS.getStore(locationURI);
+ OutputStream os = store.openOutputStream(0, null);
+ try {
+ os.write(content.getBytes());
+ } catch (IOException e) {
+ System.err.println(e);
+ }
+ }
+ // file.setContents(new ByteArrayInputStream(content.getBytes()),
+ // true, true, null);
+ } else if(file.exists() && !(force)) {
+ // the file is not updated
+ } else {
+ // the file does not exists
+ file.create(new ByteArrayInputStream(content.getBytes()), true, null);
+ }
+ }
+
+ /**
+ * Creates the header file corresponding to the interface
+ *
+ * @param folder
+ * @param interfaceObject
+ * @throws CoreException
+ */
+ protected void createInterfaceFile(IContainer container, Interface interfaceObject) throws CoreException {
+ if(!GenUtils.hasStereotype(interfaceObject, CppNoCodeGen.class)) {
+
+ CppInterfaceHeader headerGenerator = new CppInterfaceHeader();
+ String fileContent = "";
+
+ fileContent = headerComment + headerGenerator.generate(interfaceObject);
+ createFile(container, interfaceObject.getName() + "." + hppExt, fileContent, true);
+ }
+ }
+
+ /**
+ * Recursively creates folders for a given package
+ *
+ * @param packageContainer
+ * The folder where the folder hierarchy for this package will be
+ * created.
+ * @param monitor
+ * a progress monitor
+ * @param pkg
+ * the package for which code should be created
+ * @throws CoreException
+ */
+ protected void createPackage(IContainer packageContainer, IProgressMonitor monitor, Package pkg) throws CoreException {
+ monitor.subTask("generate package " + pkg.getQualifiedName());
+
+ if(!GenUtils.hasStereotype(pkg, CppRoot.class) && !GenUtils.hasStereotype(pkg, CppNoCodeGen.class)) {
+
+ String fileContent = "";
+
+ packageContainer = (packageContainer instanceof IProject) ? ((IProject)packageContainer).getFolder(pkg.getName()) : ((IFolder)packageContainer).getFolder(pkg.getName());
+
+ // Create a new folder corresponding to the package if it does not exist
+ if(!packageContainer.exists()) {
+ // if packageContainer is a Project, it necessarily exists
+ ((IFolder)packageContainer).create(false, true, null);
+ }
+
+ // Creates the header for the package.
+ CppPackageHeader pkgHeaderGenerator = new CppPackageHeader();
+ fileContent = "";
+ fileContent = headerComment + pkgHeaderGenerator.generate(pkg);
+ createFile(packageContainer, "Pkg_" + pkg.getName() + "." + hppExt, fileContent, true);
+
+ // Continue generation parsing package content
+ // If CppNoCodeGen on package, it applies to its content
+
+ for(PackageableElement currentElement : pkg.getPackagedElements()) {
+ createPackageableElement(packageContainer, monitor, currentElement);
+ }
+ }
+ }
+
+ /**
+ * Return a container (folder) for a given named element. The folder is embedded into a set
+ * of folders that correspond to the namespaces of the element. These folders will be
+ * created, if the do not exist (comparable to "mkdir -p" in Unix).
+ *
+ * @param element
+ * a named element
+ * @return folder for this element
+ */
+ public IContainer getContainer(NamedElement element) {
+ try {
+ IContainer packageContainer = project;
+ EList<Namespace> namespaces = element.allNamespaces();
+ for(int i = namespaces.size() - 1; i >= 0; i--) {
+ Namespace ns = namespaces.get(i);
+ if(GenUtils.hasStereotype(ns, CppRoot.class)) {
+ // TODO: not very clean. Is this stereotype still used?
+ packageContainer = project;
+ } else if(packageContainer instanceof IFolder) {
+ packageContainer = ((IFolder)packageContainer).getFolder(ns.getName());
+ } else if(packageContainer instanceof IProject) {
+ packageContainer = ((IProject)packageContainer).getFolder(ns.getName());
+ }
+ if(!packageContainer.exists()) {
+ // if packageContainer is a Project, it necessarily exists
+ ((IFolder)packageContainer).create(false, true, null);
+ }
+ }
+ return packageContainer;
+ } catch (CoreException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java
new file mode 100644
index 00000000000..78957b9bccd
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/ClassUtils.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.utils;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.papyrus.cpp.codegen.Constants;
+import org.eclipse.papyrus.cpp.codegen.jet.util.CppClassIncludeDeclaration;
+import org.eclipse.papyrus.cpp.codegen.jet.util.CppOwnerPackageIncludeDeclaration;
+import org.eclipse.papyrus.cpp.codegen.jet.util.CppStaticAttributeImplementation;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Property;
+
+import Cpp.CppConst;
+import Cpp.CppExternClass;
+import Cpp.CppInclude;
+import Cpp.CppNoCodeGen;
+
+/**
+ * A set of utility functions related to classes.
+ *
+ * @author ansgar (ansgar.radermacher@cea.fr)
+ *
+ */
+public class ClassUtils {
+
+ /**
+ * Generate the "pre-body" statements that are stored in the CppInclude stereotype
+ * "pre" means: add before the ".cpp" file includes its own header file of a program
+ *
+ * @param currentClass
+ * @return generated text
+ */
+ public static String getCppIncludePreBody(Classifier currentClass) {
+ CppInclude cppInclude = GenUtils.getApplication(currentClass, CppInclude.class);
+ if(cppInclude != null) {
+ return GenUtils.addNL(cppInclude.getPreBody());
+ }
+ return "";
+ }
+
+ /**
+ * Generate the body statements that are stored in the CppInclude stereotype
+ * Body means that these statements are added at the beginning of the "body" (the ".cpp") file.
+ *
+ * @param currentClass
+ * @return generated text
+ */
+ public static String getCppIncludeBody(Classifier currentClass) {
+ CppInclude cppInclude = GenUtils.getApplication(currentClass, CppInclude.class);
+ if(cppInclude != null) {
+ return GenUtils.addNL(cppInclude.getBody());
+ }
+ return "";
+ }
+
+ /**
+ * Generated include statements related to dependencies.
+ *
+ * @param currentCl
+ * @return generated text
+ */
+ public static String createIncludeDecl(Classifier currentCl) {
+ EList<Classifier> depClassifiers = GenUtils.getDependencies(currentCl);
+ return createIncludeDecl(depClassifiers, currentCl);
+ }
+
+ public static String createIncludeDecl(EList<Classifier> usedClassifiers, Classifier currentCl) {
+ String includes = "";
+ String forwardDecls = Constants.forwardDecl;
+
+ // avoid duplicates
+ EList<Package> ownerPackages = new UniqueEList<Package>();
+
+ for(Classifier cl : usedClassifiers) {
+
+ // Only add include if this is not for the current class
+ if(!currentCl.equals(cl)) {
+ // ... and if it does not have the stereotype "CppNoCodeGen", unless
+ // it has stereotype "CppExternalClass"
+ if((!GenUtils.hasStereotype(cl, CppNoCodeGen.class)) || GenUtils.hasStereotype(cl, CppExternClass.class)) {
+ String newInclude = "";
+
+ if((cl instanceof Enumeration) || (cl instanceof PrimitiveType)) {
+ // Enumeration is not defined in a separate file, but in the
+ // package that owns it => include the owning package (might be a duplicate input, if owning
+ // package is also the owner of current class)
+ if(cl.getOwner() instanceof Package) {
+ Package owner = (Package)cl.getOwner();
+ if(!ownerPackages.contains(owner)) {
+ ownerPackages.add(owner);
+ CppOwnerPackageIncludeDeclaration jetIDecl = new CppOwnerPackageIncludeDeclaration();
+ newInclude = jetIDecl.generate(owner);
+ }
+ }
+ } else {
+ // include the file associated with the classifier
+ CppClassIncludeDeclaration jetIDecl = new CppClassIncludeDeclaration();
+ newInclude = jetIDecl.generate(cl);
+ }
+
+ includes = includes + newInclude;
+
+ // generate a forward declaration
+ // this is useful, even if the ".h" file associated with the class is included:
+ // in case of cyclic dependencies, the include file may actually not be included since
+ // its #ifndef rule will exclude code.
+ // Don't generate forward for external classes, which may actually be non-classes
+ /*
+ * if ((cl instanceof Class) && !GenUtils.hasStereotype(cl, CppdxternClass)) {
+ * Class classWithoutBinding = (Class) cl;
+ * if (classWithoutBinding.getTemplateBindings().isEmpty()) {
+ * CppClassIncludeClassDeclaration jetCDecl
+ * = new CppClassIncludeClassDeclaration();
+ * String newClass = jetCDecl.generate(classWithoutBinding);
+ * forwardDecls += newClass;
+ * }
+ * }
+ */
+ }
+ }
+ }
+ includes += forwardDecls;
+ return includes;
+ }
+
+ /**
+ * get the list of static attributes for the implementation
+ *
+ * @param currentClass
+ * @return
+ */
+ public static String getStaticAttributes(Classifier currentClass) {
+ String attrSDecl = "";
+
+ CppStaticAttributeImplementation jetSAttDecl = new CppStaticAttributeImplementation();
+
+ for(Property attribute : currentClass.getAttributes()) {
+
+ // check that the attribute is not a static const, in that case it is declared and defined in the header file
+
+ // Static and not constant (constant static attributes are declared within the class declaration)
+ if(attribute.isStatic() && !GenUtils.hasStereotype(attribute, CppConst.class)) {
+ attrSDecl = attrSDecl + jetSAttDecl.generate(attribute);
+ }
+ }
+ if(attrSDecl.length() > 0) {
+ attrSDecl = Constants.staticAttributes + "\n" + attrSDecl;
+ }
+ return attrSDecl;
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/GenUtils.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/GenUtils.java
new file mode 100644
index 00000000000..1c7977bd166
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/GenUtils.java
@@ -0,0 +1,765 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.ClassifierTemplateParameter;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.ConnectableElementTemplateParameter;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.LiteralBoolean;
+import org.eclipse.uml2.uml.LiteralInteger;
+import org.eclipse.uml2.uml.LiteralString;
+import org.eclipse.uml2.uml.LiteralUnlimitedNatural;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.OperationTemplateParameter;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterableElement;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateParameter;
+import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Type;
+
+import Cpp.CppExternClass;
+import Cpp.CppNoCodeGen;
+import Cpp.CppType;
+import Cpp.CppVisibility;
+
+
+
+/**
+ * Some utilities: a set of static method for C++ code generator
+ * Mainly "Template" related methods
+ * Should probably be put in com.cea.utils in next release
+ *
+ * @author wassim
+ *
+ */
+public class GenUtils {
+
+ public static final String NL = System.getProperties().getProperty("line.separator");
+
+ /**
+ * Retrieve template bindings for the class passed as a Parameter
+ * only one template binding can exist for an element
+ *
+ * @param current
+ * Class on which the template binding is searched
+ * @return the template binding of current Class
+ */
+ public static TemplateBinding getTemplateBindings(Class current) {
+ TemplateBinding binding = null;
+ if(current.getTemplateBindings().size() == 1) {
+ binding = current.getTemplateBindings().get(0);
+ }
+
+ return binding;
+ }
+
+ public static boolean isTemplateBoundElement(Class uml2Class) {
+ boolean result = false;
+ EList<TemplateBinding> tb = uml2Class.getTemplateBindings();
+ if(tb != null) {
+ Iterator<TemplateBinding> itb = tb.iterator();
+ while(itb.hasNext()) {
+ TemplateBinding currentTb = itb.next();
+ result = currentTb.getBoundElement() == uml2Class;
+ }
+ }
+ return result;
+ }
+
+ public static Collection<TemplateParameter> getTemplateParameters(Classifier classifier) {
+
+ Collection<TemplateParameter> params = new ArrayList<TemplateParameter>();
+ TemplateSignature ts = classifier.getOwnedTemplateSignature();
+ if(ts != null) {
+ params.addAll(ts.getOwnedParameters());
+ }
+
+ return params;
+ }
+
+ public static Collection<ParameterableElement> getTemplateParameteredElements(Classifier classifier) {
+
+ Collection<ParameterableElement> params = new ArrayList<ParameterableElement>();
+ TemplateSignature ts = classifier.getOwnedTemplateSignature();
+ if(ts != null) {
+ for(TemplateParameter tp : ts.getOwnedParameters()) {
+ if(tp != null) {
+ params.add(tp.getParameteredElement());
+ }
+ }
+ }
+
+ return params;
+ }
+
+ /**
+ * Return a list of template parameters without type
+ *
+ * @param classifier
+ * @return
+ */
+ public static String getTemplateParametersWoType(Classifier classifier) {
+ String tparamWoType = "";
+
+ Iterator<TemplateParameter> it = GenUtils.getTemplateParameters(classifier).iterator();
+
+ while(it.hasNext()) {
+ TemplateParameter currentTParam = it.next();
+ tparamWoType = tparamWoType + GenUtils.getName(currentTParam);
+
+ if(it.hasNext()) {
+ tparamWoType = tparamWoType + ", ";
+ }
+ }
+ return tparamWoType;
+ }
+
+ /**
+ * The standard UML and MARTE libraries do not apply the cppType stereotype. Yet, we want to treat these
+ * types in an identical way, i.e. we use a typedef to the associated primitive C++ type
+ *
+ * @param type
+ * @return
+ */
+ public static String getStdtypes(PrimitiveType type) {
+ Object owner = type.getOwner();
+ String owningPkgName = "";
+ if(owner instanceof Package) {
+ owningPkgName = ((Package)owner).getName();
+ }
+ if(owningPkgName.equals("PrimitiveTypes") || // used in UML 2.4
+ owningPkgName.equals("UMLPrimitiveTypes") || // used in UML < 2.4
+ owningPkgName.equals("MARTE_PrimitivesTypes")) {
+ String td = null;
+ String name = type.getName();
+
+ if(name.equals("Boolean")) {
+ td = "bool";
+ } else if(name.equals("Integer")) {
+ td = "int";
+ } else if(name.equals("String")) {
+ td = "const char *";
+ } else if(name.equals("Unlimited Natural")) {
+ td = "unsigned long";
+ }
+ if(td != null) {
+ return "typedef " + td + " " + name + ";";
+ }
+ // else unknown within UMLPrimitiveTypes, treat in standard way
+ }
+
+ return "";
+ }
+
+ /**
+ * Gives the type of the parameter or null for void.
+ * (used in particular in the context of template parameters
+ * TODO: redundant with qualifiedName??)
+ *
+ * @return the template type formated as string
+ */
+ public static String getType(TemplateParameter templateParam) {
+ String type = "", name = "";
+
+ // Retrieve name of the ParameteredElement (when possible = it is a NamedElement
+ ParameterableElement pElt = templateParam.getParameteredElement();
+ if((pElt != null) && (pElt instanceof NamedElement)) {
+ name = ((NamedElement)pElt).getName();
+ if(templateParam instanceof ClassifierTemplateParameter) {
+ type = "class";
+ } else if(templateParam instanceof OperationTemplateParameter) {
+ type = "";
+ } else if(templateParam instanceof ConnectableElementTemplateParameter) {
+ type = "";
+ } else {// uml2TemplateParameter instanceof TemplateParameter
+ if(pElt instanceof LiteralInteger) {
+ type = "int";
+ } else if(pElt instanceof LiteralString) {
+ type = "String";
+ } else if(pElt instanceof LiteralBoolean) {
+ type = "Boolean";
+ } else if(pElt instanceof LiteralUnlimitedNatural) {
+ type = "UnlimitedNatural";
+ } else {
+ type = pElt.eClass().getName();
+ }
+ }
+ } else {
+ name = "undefined";
+ }
+
+ // Retrieve the name of the type
+ /*
+ * if (templateParam instanceof ClassifierTemplateParameter) {
+ * type = "class";
+ * } else
+ * {
+ * if ((pElt != null) && (pElt instanceof LiteralInteger)) {
+ * type = "int";
+ * } else {
+ * // Need test the other cases (LiteralBoolean ? LiteralString ?)
+ * type = "undefined";
+ * }
+ * }
+ */
+
+ return (type + " " + name);
+ }
+
+ public static String getName(TemplateParameter templateParam) {
+ String name = "";
+ ParameterableElement pElt = templateParam.getParameteredElement();
+ if((pElt != null) && (pElt instanceof NamedElement)) {
+ name = ((NamedElement)pElt).getName();
+ } else {
+ name = "undefined";
+ }
+
+ return name;
+ }
+
+ /**
+ * Retrieve a list of types that belong to by a classifier in the current class
+ *
+ * @param current
+ * Class on which the attributes are searched
+ * @return collection of classes which are the type of the attributes
+ */
+ public static EList<Classifier> getOwnedAttributeTypes(Classifier current) {
+ EList<Classifier> result = new UniqueEList<Classifier>();
+
+ Iterator<Property> attributes;
+ attributes = current.getAttributes().iterator();
+ while(attributes.hasNext()) {
+ Property currentAttribute = attributes.next();
+ Type type = currentAttribute.getType();
+ if(type instanceof Classifier) {
+ Classifier attrType = (Classifier)type;
+ result.add(attrType);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Retrieve the operations in the current class then for each
+ * operation it finds the parameters that have a class type
+ *
+ * @param current
+ * Class on which the attributes are searched
+ * @return collection of classes which are the types of the operations parameters
+ */
+ public static EList<Classifier> getIncludesFromOperations(Classifier current) {
+ EList<Classifier> result = new UniqueEList<Classifier>();
+ Iterator<Operation> operations = current.getOperations().iterator();
+ while(operations.hasNext()) {
+ Operation op = operations.next();
+ Iterator<Parameter> i = op.getOwnedParameters().iterator();
+ while(i.hasNext()) {
+ Parameter param = i.next();
+ Type type = param.getType();
+ if(type instanceof Classifier) {
+ Classifier paramType = (Classifier)type;
+ result.add(paramType);
+ }
+ }
+ }
+ return result;
+ }
+
+ public static EList<Interface> getImplementedInterfaces(Class current) {
+ EList<Interface> interfaces = new UniqueEList<Interface>();
+ Iterator<Interface> interfacesIt = current.getImplementedInterfaces().iterator();
+ Interface currentInterface;
+ while(interfacesIt.hasNext()) {
+ currentInterface = (Interface)interfacesIt.next();
+ interfaces.add(currentInterface);
+ }
+ return interfaces;
+ }
+
+ /**
+ * Return a list of classifiers that are referenced by relationships, i.e.
+ * dependencies or associations
+ *
+ * @param current
+ * @return
+ */
+ public static EList<Classifier> getRelationships(Classifier current) {
+ EList<Classifier> classifiers = new UniqueEList<Classifier>();
+
+ for(DirectedRelationship relationship : current.getSourceDirectedRelationships()) {
+
+ if(relationship.getTargets().size() > 0) {
+ // there should always be at least one element in the target
+ // list and it should be a classifier, but better check.
+ Element element = relationship.getTargets().get(0);
+ if(element instanceof Classifier) {
+ classifiers.add((Classifier)element);
+ }
+ }
+ }
+ return classifiers;
+ }
+
+ /**
+ * Return a list of classifiers that are referenced via dependencies
+ *
+ * @param current
+ * @return
+ */
+ public static EList<Classifier> getDependencies(Classifier current) {
+ EList<Classifier> classifiers = new UniqueEList<Classifier>();
+
+ for(DirectedRelationship relationship : current.getSourceDirectedRelationships()) {
+ if(relationship instanceof Dependency) {
+ if(relationship.getTargets().size() > 0) {
+ // there should always be at least one element in the target
+ // list and it should be a classifier, but better check.
+ Element element = relationship.getTargets().get(0);
+ if(element instanceof Classifier) {
+ classifiers.add((Classifier)element);
+ }
+ }
+ }
+ }
+ return classifiers;
+ }
+
+ /**
+ * Return a list of classifiers that are referenced via all kinds of relations except
+ * dependencies
+ *
+ * @param current
+ * @return
+ */
+ public static EList<Classifier> getRelationshipsNoDeps(Classifier current) {
+ EList<Classifier> classifiers = new UniqueEList<Classifier>();
+
+ for(DirectedRelationship relationship : current.getSourceDirectedRelationships()) {
+ if(!(relationship instanceof Dependency)) {
+ if(relationship.getTargets().size() > 0) {
+ // there should always be at least one element in the target
+ // list and it should be a classifier, but better check.
+ Element element = relationship.getTargets().get(0);
+ if(element instanceof Classifier) {
+ classifiers.add((Classifier)element);
+ }
+ }
+ }
+ }
+ return classifiers;
+ }
+
+ /**
+ * Return the qualified name of a named element, but use "_" instead of "::" as separator
+ *
+ * @param ne
+ * a named element
+ * @return the fully qualified name with "_" as separator character
+ */
+ public static String getFullName(NamedElement ne) {
+ return ne.getQualifiedName().replace("::", "_");
+ }
+
+ /**
+ * return the full name in upper case
+ *
+ * @param ne
+ * @return
+ */
+ public static String getFullNameUC(NamedElement ne) {
+ return ne.getQualifiedName().replace("::", "_").toUpperCase();
+ }
+
+ /**
+ * Return a C++ namespace definition for a named element
+ *
+ * @param ne
+ * a named element
+ * @return a C++ namespace definition for a named element
+ */
+ public static String getNamespace(NamedElement ne) {
+ String namespace = "";
+ for(Namespace ns : ne.allNamespaces()) {
+ if(ns.getOwner() != null) {
+ String nsName = ns.getName();
+ if(!namespace.equals("")) {
+ nsName += "::";
+ }
+ namespace = nsName + namespace;
+ }
+ }
+ if(!namespace.equals("")) {
+ namespace = "\n" + "using namespace " + namespace + ";\n";
+ }
+ return namespace;
+ }
+
+ /**
+ * Return a C++ open-namespace definition for a named element
+ *
+ * @param ne
+ * a named element
+ * @return a C++ open-namespace definition for a named element
+ */
+ public static String openNS(NamedElement ne) {
+ String openNS = "";
+ currentNS = ne.getNamespace();
+ for(Namespace ns : ne.allNamespaces()) {
+ if(ns.getOwner() != null) {
+ openNS = "namespace " + ns.getName() + " {\n" + openNS;
+ }
+ }
+ return openNS;
+ }
+
+ /**
+ * Return a C++ close-namespace definition for a named element
+ *
+ * @param ne
+ * a named element
+ * @return a C++ close-namespace definition for a named element
+ */
+ public static String closeNS(NamedElement ne) {
+ String closeNS = "";
+ for(Namespace ns : ne.allNamespaces()) {
+ if(ns.getOwner() != null) {
+ closeNS += "} // of namespace " + ns.getName() + "\n";
+ }
+ }
+ return closeNS;
+ }
+
+ public static String qualifiedName(NamedElement ne) {
+ Object owner = ne.getOwner();
+ String owningPkgName = "";
+ if(owner instanceof Package) {
+ owningPkgName = ((Package)owner).getName();
+ }
+ if((hasStereotype(ne, CppExternClass.class)) || (hasStereotype(ne, CppNoCodeGen.class))) {
+ return ne.getName();
+ } else if(owningPkgName.equals("AnsiCLibrary")) {
+ // always use the short name for types within the ANSI C library
+ return ne.getName();
+ }
+
+ String qName = ne.getName();
+ if(currentNS == ne.getNamespace()) {
+ // return simple name, if in current namespace
+ return qName;
+ }
+ if(ne instanceof PrimitiveType) {
+ if(!hasStereotype(ne, CppType.class) && (getStdtypes((PrimitiveType)ne).length() == 0)) {
+ // is a primitive type without further definition and not a standard primitive type
+ // => assume that it is a external type without namespace
+ return qName;
+ }
+ }
+
+ for(Namespace ns : ne.allNamespaces()) {
+ // don't add top-level
+ if(ns.getOwner() != null) {
+ qName = ns.getName() + "::" + qName;
+ }
+ }
+ if(qName.contains("::")) {
+ // is a qualified name => make path absolute
+ return "::" + qName;
+ } else {
+ return qName;
+ }
+ }
+
+ public static String getComments(Element element) {
+ String commentText = "";
+ for(Comment comment : element.getOwnedComments()) {
+ commentText += comment.getBody();
+ }
+ return commentText;
+ }
+
+ /**
+ * Return a list of dependent package (the list of dependent
+ * elements filtered for packages)
+ *
+ * @param pkg
+ * @return
+ */
+ public static EList<Package> getUsedPackages(Package pkg) {
+ EList<Package> result = new BasicEList<Package>();
+ for(Element depElement : pkg.getClientDependencies()) {
+ if(depElement instanceof Package) {
+ result.add((Package)depElement);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Return a list of dependent classes (the list of dependent
+ * elements filtered for classes)
+ *
+ * @param pkg
+ * @return
+ */
+ public static EList<Classifier> getUsedClassifiers(Classifier cls) {
+ EList<Classifier> result = new BasicEList<Classifier>();
+ for(Element depElement : cls.getClientDependencies()) {
+ if(depElement instanceof Classifier) {
+ result.add((Classifier)depElement);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Return the qualified name of a package, but use "/" instead of "::" as separator
+ *
+ * @param pkg
+ * @return
+ */
+ public static String getFullPath(Package pkg) {
+ return pkg.getQualifiedName().replace("::", "/");
+ }
+
+ /**
+ * Is a certain stereotype applied?
+ *
+ * @param element
+ * @param stereotype
+ * fully qualified stereotype name
+ * @return
+ */
+ public static boolean hasStereotype(Element element, String stereotName) {
+ EList<Stereotype> list = element.getAppliedStereotypes();
+ return element.getAppliedStereotype(stereotName) != null;
+ }
+
+ /**
+ * Is a certain stereotype applied?
+ *
+ * @param element
+ * @param stereotype
+ * fully qualified stereotype name
+ * @return
+ */
+ public static boolean hasStereotype(Element element, java.lang.Class<? extends EObject> clazz) {
+ for(EObject stereoApplication : element.getStereotypeApplications()) {
+ // check whether the stereotype is a subclass of the passed parameter clazz
+ if(clazz.isAssignableFrom(stereoApplication.getClass())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return the stereotype application by passing an element of the static profile
+ *
+ * @param element
+ * the UML model element
+ * @param clazz
+ * the class of an element of a static profile. Compatible sub-types will be returned as well
+ * @return the stereotype application or null
+ */
+ @SuppressWarnings("unchecked")
+ public static <T extends EObject> T getApplication(Element element, java.lang.Class<T> clazz) {
+ for(EObject stereoApplication : element.getStereotypeApplications()) {
+ // check whether the stereotype is an instance of the passed parameter clazz
+ if(clazz.isInstance(stereoApplication)) {
+ return (T)stereoApplication;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Is a certain stereotype applied?
+ *
+ * @param element
+ * @param stereotype
+ * fully qualified stereotype name
+ * @return
+ */
+ public static void setStereotype(Element element, String stereotName, boolean apply) {
+ Stereotype stereotype = element.getApplicableStereotype(stereotName);
+ if(stereotype != null) {
+ if(apply) {
+ if(!element.isStereotypeApplied(stereotype)) {
+ element.applyStereotype(stereotype);
+ }
+ } else {
+ if(element.isStereotypeApplied(stereotype)) {
+ element.unapplyStereotype(stereotype);
+ }
+ }
+ }
+ }
+
+ /**
+ * This method returns the stereotype applied to a certain element when given its name.
+ * Returns null, if a stereotype of that name does not exist.
+ * This function is quite similar to getAppliedStereotype, the difference is that it
+ * is not based on fully qualified name.
+ */
+ public static String getTaggedValue(Element element, String stereo_name, String attrib_name) {
+ Stereotype stereotype = element.getAppliedStereotype(stereo_name);
+ if(stereotype == null) {
+ return "";
+ }
+ Object value = element.getValue(stereotype, attrib_name);
+ if(value == null) {
+ return "";
+ }
+
+ if(value instanceof NamedElement) {
+ return ((NamedElement)value).getName();
+ } else if(value instanceof String) {
+ return (String)value;
+ } else {
+ return value.toString();
+ }
+ }
+
+ /**
+ * This method returns the stereotype applied to a certain element when given its name.
+ * Returns null, if a stereotype of that name does not exist.
+ * This function is quite similar to getAppliedStereotype, the difference is that it
+ * is not based on fully qualified name.
+ */
+ public static void setTaggedValue(Element element, String stereo_name, String attrib_name, Object value) {
+ Stereotype stereotype = element.getAppliedStereotype(stereo_name);
+ if(stereotype != null) {
+ element.setValue(stereotype, attrib_name, value);
+ }
+ }
+
+ /**
+ * @param operation
+ * the operation
+ * @param selectedLanguage
+ * the selected language
+ * @return Return the first body of a selected language that is provided by
+ * one of the operation's methods
+ */
+ public static String getBody(Operation operation, String selectedLanguage) {
+ for(Behavior behavior : operation.getMethods()) {
+ if(behavior instanceof OpaqueBehavior) {
+ OpaqueBehavior ob = (OpaqueBehavior)behavior;
+ Iterator<String> bodies = ob.getBodies().iterator();
+ for(String language : ob.getLanguages()) {
+ String body = bodies.next();
+ if(language.equals(selectedLanguage)) {
+ return indent(body, "\t");
+ }
+ }
+ }
+ }
+ return "";
+ }
+
+ /**
+ * Format text output, indent each line with the passed string
+ *
+ * @param source
+ * @param indentStr
+ * @return
+ */
+ public static String indent(String source, String indentStr) {
+ String result = "";
+ String[] lines = source.split("\n");
+ for(int i = 0; i < lines.length; i++) {
+ result += indentStr + lines[i];
+ if(i < lines.length - 1) {
+ result += "\n";
+ }
+ }
+ return result;
+ }
+
+ /**
+ * return true, if shared aggregation (no composition).
+ * TODO: consider whether used as association?
+ *
+ * @param p
+ * @return
+ */
+ public static boolean isAggregation(Property p) {
+ return /* (p.getAssociation() != null) && */
+ (p.getAggregation() == AggregationKind.SHARED_LITERAL);
+ }
+
+ public static String getVisibility(Element element) {
+ // get visibility and target name
+ CppVisibility cppVisibility = GenUtils.getApplication(element, CppVisibility.class);
+ if(cppVisibility != null) {
+ return cppVisibility.getValue();
+ } else {
+ return "public";
+ }
+ }
+
+ /**
+ * Avoid null strings, i.e. replace null strings by empty strings
+ *
+ * @param str
+ * @return
+ */
+ public static String maskNull(String str) {
+ if(str == null) {
+ return "";
+ }
+ return str;
+ }
+
+ /**
+ * Add a newline character, unless the string is empty and unless it already ends with a
+ * newline character
+ */
+ public static String addNL(String str) {
+ if(str == null || str.length() == 0) {
+ return "";
+ }
+ if(str.endsWith(NL)) {
+ return str;
+ } else {
+ return str + NL;
+ }
+ }
+
+ private static Namespace currentNS;
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java
new file mode 100644
index 00000000000..1f0c96d8bc0
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/src/org/eclipse/papyrus/cpp/codegen/utils/Modifier.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.codegen.utils;
+
+import org.eclipse.uml2.uml.Element;
+
+import Cpp.CppArray;
+import Cpp.CppConst;
+import Cpp.CppPtr;
+import Cpp.CppRef;
+
+/**
+ * Utility functions managing the "modifier" of an element, i.e. additional information whether a passed
+ * parameter or an attribute is a pointer, a reference, an array or constant.
+ *
+ * @author ansgar
+ *
+ */
+public class Modifier {
+
+ public String ptr;
+
+ public String ref;
+
+ public String array;
+
+ public String isConst;
+
+ public Modifier() {
+ ptr = "";
+ ref = "";
+ array = "";
+ isConst = "";
+ }
+
+ /**
+ * Create instance and initialize the ptr/ref/array/isConst attributes.
+ *
+ * @param currentParameter
+ */
+ public Modifier(Element currentParameter) {
+
+ // Pointer
+ CppPtr cppPtr = GenUtils.getApplication(currentParameter, CppPtr.class);
+ if(cppPtr != null) {
+ ptr = (cppPtr.getDeclaration() != null) ? cppPtr.getDeclaration() : "*";
+ } else {
+ ptr = "";
+ }
+
+ // Ref
+ ref = GenUtils.hasStereotype(currentParameter, CppRef.class) ? "&" : "";
+
+ // Array
+ CppArray cppArray = GenUtils.getApplication(currentParameter, CppArray.class);
+ if(cppArray != null) {
+ array = (cppArray.getDefinition() != null) ? cppArray.getDefinition() : "[]";
+ } else {
+ array = "";
+ }
+
+ // Const
+ isConst = GenUtils.hasStereotype(currentParameter, CppConst.class) ? "const " : "";
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppBindBody.cpp.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppBindBody.cpp.jet
new file mode 100644
index 00000000000..04e92f6a6fd
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppBindBody.cpp.jet
@@ -0,0 +1,87 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet"
+ skeleton = "generator.skeleton"
+ imports = "org.eclipse.papyrus.cpp.codegen.Constants org.eclipse.papyrus.cpp.codegen.utils.* Cpp.CppInclude org.eclipse.uml2.uml.Class org.eclipse.uml2.uml.Package org.eclipse.uml2.uml.* org.eclipse.emf.common.util.EList org.eclipse.papyrus.cpp.codegen.jet.util.* java.util.* org.eclipse.papyrus.cpp.codegen.Activator"
+ class = "CppBindBody"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Class currentClass = (Class) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFullName = GenUtils.getFullName (currentClass);
+ String classFULLNAME = classFullName.toUpperCase();
+ String parentClass = "";
+ String namespace = GenUtils.getNamespace (currentClass);
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ // Retrieve owner Package
+ Package owner = currentClass.getPackage();
+ String fullPath = "";
+
+ if (owner != null) {
+ fullPath = GenUtils.getFullPath(owner) + "/";
+ } // else fullPath == ""
+
+ TemplateBinding tb = GenUtils.getTemplateBindings(currentClass);;
+
+ // prepare parent class declaration
+ EList<org.eclipse.uml2.uml.Element> templates = tb.getTargets();
+ Class templateClass = (Class) ((TemplateSignature) templates.get(0)).getOwner();
+ parentClass = GenUtils.qualifiedName (templateClass);
+
+ // Prepare bindings parameter declaration
+
+ String tParamDecl = "";
+ Iterator<TemplateParameterSubstitution> tps = tb.getParameterSubstitutions().iterator();
+ while(tps.hasNext()) {
+ TemplateParameterSubstitution paramSub = tps.next();
+
+ CppTemplateBindingParameter jetTParam = new CppTemplateBindingParameter();
+ tParamDecl = tParamDecl+jetTParam.generate (paramSub);
+
+ if (tps.hasNext()) {
+ tParamDecl = tParamDecl + ", ";
+ }
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#define <%= classFULLNAME %>_BODY
+
+/************************************************************
+ <%= className %> template binding body
+ ************************************************************/
+
+<%= Constants.cppIncPreBodyStart %>
+<%= ClassUtils.getCppIncludePreBody(currentClass) %>
+<%= Constants.cppIncPreBodyEnd %>
+
+<%= Constants.includeHFile %>
+#include <<%= fullPath %><%= className %>.<%= headerFileSuffix %>>
+
+<%= Constants.cppIncBodyStart %>
+<%= ClassUtils.getCppIncludeBody(currentClass) %>
+<%= Constants.cppIncBodyEnd %>
+
+<%= GenUtils.openNS(currentClass) %>
+
+<%= Constants.derivedIncludes %>
+<%= ClassUtils.createIncludeDecl(currentClass) %>
+
+/************************************************************/
+template class <%= parentClass %> <<%= tParamDecl %>>;
+
+<%= GenUtils.closeNS(currentClass) %>
+
+/************************************************************
+ End of <%= className %> template binding body
+ ************************************************************/
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppBindHeader.h.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppBindHeader.h.jet
new file mode 100644
index 00000000000..906567e511f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppBindHeader.h.jet
@@ -0,0 +1,115 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet"
+ skeleton = "generator.skeleton"
+ imports = "org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.CppInclude org.eclipse.uml2.uml.Class org.eclipse.emf.common.util.EList org.eclipse.uml2.uml.Package org.eclipse.uml2.uml.TemplateSignature org.eclipse.uml2.uml.TemplateParameterSubstitution org.eclipse.papyrus.cpp.codegen.jet.util.* java.util.* org.eclipse.papyrus.cpp.codegen.Activator"
+ class = "CppBindHeader"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Class currentClass = (Class) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFullName = GenUtils.getFullName (currentClass);
+ String classFULLNAME = classFullName.toUpperCase();
+ String classparent = "";
+ String openNS = GenUtils.openNS (currentClass);
+ String closeNS = GenUtils.closeNS (currentClass);
+
+ // Include declaration "CppInclude"
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentClass, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = "// Include from CppInclude declaration" + NL + cppInclude.getHeader() + NL;
+ }
+
+ // Prepare owner package header include
+ Package ownerPackage = currentClass.getPackage();
+ String ownerInclude = "";
+ if (ownerPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetOwnerInclude
+ = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ ownerInclude = jetOwnerInclude.generate(ownerPackage);
+ }
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ //find path for the package owning current class
+ String fullPath = "";
+ String separ = "";
+
+ if (ownerPackage != null) {
+ fullPath = GenUtils.getFullPath (ownerPackage);
+ separ = "/";
+ } // else fullPath == ""
+
+ org.eclipse.uml2.uml.TemplateBinding tb = GenUtils.getTemplateBindings(currentClass);
+
+ // prepare parent class declaration
+ EList<org.eclipse.uml2.uml.Element> templates = tb.getTargets();
+ Class templateClass = (Class) ((TemplateSignature)templates.get(0)).getOwner();
+ classparent = templateClass.getName();
+
+ // Prepare bindings parameter declaration
+
+ String tParamDecl="";
+ TemplateParameterSubstitution paramsub;
+ Iterator<TemplateParameterSubstitution> tps = tb.getParameterSubstitutions().iterator();
+ while(tps.hasNext()) {
+ paramsub = (TemplateParameterSubstitution)tps.next();
+
+ CppTemplateBindingParameter jetTParam
+ = new CppTemplateBindingParameter();
+ tParamDecl = tParamDecl+jetTParam.generate(paramsub);
+
+ if (tps.hasNext()) {
+ tParamDecl = tParamDecl+", ";
+ }
+ }
+
+
+ // Prepare dependency includes
+ CppClassAllIncludesDeclaration jetClassIncludes
+ = new CppClassAllIncludesDeclaration();
+ String classIncludes = jetClassIncludes.generate(argument);
+ if (!classIncludes.equals("")) {
+ classIncludes = "/* Structural includes (inheritance, dependencies... */"+NL+classIncludes;
+ }
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#ifndef <%= classFULLNAME %>_H
+#define <%= classFULLNAME %>_H
+
+/************************************************************
+ <%= className %> template binding header
+ ************************************************************/
+
+<%= ownerInclude %>
+
+<%= classIncludes %>
+
+<%= headerDecl %>
+
+#include <<%= fullPath %><%= separ %><%= classparent %>.<%= headerFileSuffix %>>
+
+<%= openNS %>
+/************************************************************/
+typedef <%= classparent %> <<%= tParamDecl %>> <%= className %>;
+
+<%= closeNS %>
+
+/************************************************************
+ End of <%= className %> template binding header
+ ************************************************************/
+
+#endif
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppClassBody.cpp.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppClassBody.cpp.jet
new file mode 100644
index 00000000000..13c3fe6ca9e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppClassBody.cpp.jet
@@ -0,0 +1,71 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet"
+ skeleton = "generator.skeleton"
+ imports = "org.eclipse.papyrus.cpp.codegen.Constants org.eclipse.papyrus.cpp.codegen.utils.* org.eclipse.emf.common.util.EList Cpp.CppInclude org.eclipse.uml2.uml.Classifier org.eclipse.uml2.uml.Package org.eclipse.papyrus.cpp.codegen.jet.util.* org.eclipse.papyrus.cpp.codegen.Activator"
+ class = "CppClassBody"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFullName= GenUtils.getFullName (currentClass);
+ String classFULLNAME= classFullName.toUpperCase();
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ // TODO - Prepare static attribute
+ String staticAttributes = "";
+
+ // Retrieve owner Package
+ Package owner = currentClass.getPackage();
+ String fullPath = "";
+
+ if (owner != null) {
+ fullPath = GenUtils.getFullPath(owner) + "/";
+ } // else fullPath == ""
+
+ // Prepare attributes and Methods declarations
+ String allOperations = "";
+
+ // Methods
+ CppClassOperationsImplementation jetClassOp
+ = new CppClassOperationsImplementation();
+ allOperations = jetClassOp.generate(currentClass);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#define <%= classFULLNAME %>_BODY
+
+/************************************************************
+ <%= className %> class body
+ ************************************************************/
+
+<%= Constants.cppIncPreBodyStart %>
+<%= ClassUtils.getCppIncludePreBody(currentClass)
+%><%= Constants.cppIncPreBodyEnd %>
+
+<%= Constants.includeHFile %>
+#include <<%= fullPath %><%= className %>.<%= headerFileSuffix %>>
+
+<%= Constants.cppIncBodyStart %>
+<%= ClassUtils.getCppIncludeBody(currentClass)
+%><%= Constants.cppIncBodyEnd %>
+
+<%= Constants.derivedIncludes %>
+<%= ClassUtils.createIncludeDecl(currentClass) %>
+
+<%= GenUtils.openNS(currentClass) %>
+<%= ClassUtils.getStaticAttributes(currentClass) %>
+<%= allOperations %>
+<%= GenUtils.closeNS(currentClass) %>
+
+/************************************************************
+ End of <%= className %> class body
+ ************************************************************/
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppClassHeader.h.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppClassHeader.h.jet
new file mode 100644
index 00000000000..e151058efd7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppClassHeader.h.jet
@@ -0,0 +1,192 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet"
+ skeleton = "generator.skeleton"
+ imports = "org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.CppInclude Cpp.Union org.eclipse.papyrus.cpp.codegen.StdStereo org.eclipse.uml2.uml.Package org.eclipse.uml2.uml.* org.eclipse.papyrus.cpp.codegen.jet.util.* org.eclipse.papyrus.cpp.codegen.jet.doc.*"
+ class = "CppClassHeader"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFULLNAME = GenUtils.getFullName (currentClass).toUpperCase();
+ String openNS = GenUtils.openNS (currentClass);
+ String closeNS = GenUtils.closeNS (currentClass);
+ String classDoc = "";
+ String classOrStruct = GenUtils.hasStereotype(currentClass, Union.class) ? "union" :
+ ((currentClass instanceof DataType) ? "struct" : "class");
+
+ // Doc for the class
+ CppElementDoc jDoc = new CppElementDoc();
+ classDoc = jDoc.generate(currentClass);
+
+ String includeProtection;
+
+ // Include declaration "CppInclude"
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentClass, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = GenUtils.maskNull(cppInclude.getHeader());
+ if (headerDecl.length() > 0) {
+ headerDecl = "// Include from CppInclude declaration" + NL + headerDecl.replace("HFILENAME", classFULLNAME) + NL;
+ }
+ }
+
+ // Prepare owner package header include
+ Package ownerPackage = currentClass.getPackage();
+ String ownerInclude = "";
+ if (ownerPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetOwnerInclude
+ = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ ownerInclude = jetOwnerInclude.generate(ownerPackage);
+ }
+
+
+ // Prepare owned type and enum declaration
+ String typeEnumDefPackage = "";
+ String typeEnumDef = "";
+
+ CppClassTypeAndEnum jetTE = new CppClassTypeAndEnum();
+ typeEnumDef = jetTE.generate(currentClass);
+
+ CppClassTypeAndEnumPackage jetTEp
+ = new CppClassTypeAndEnumPackage();
+ typeEnumDefPackage = jetTEp.generate(currentClass);
+
+
+ // Prepare dependency includes
+ CppClassAllIncludesDeclaration jetClassIncludes
+ = new CppClassAllIncludesDeclaration();
+ String classIncludes = jetClassIncludes.generate(argument);
+ if (!classIncludes.equals("")) {
+ classIncludes = "/* Structural includes (inheritance, dependencies... */"+NL+classIncludes;
+ }
+
+ // Prepare friend dependency includes
+ CppClassIncludeFriendDeclaration jetClassFIncludes
+ = new CppClassIncludeFriendDeclaration();
+ String friendIncludes = jetClassFIncludes.generate(argument);
+ if (!friendIncludes.equals("")) {
+ friendIncludes = "/* Friend class declaration */"+NL+friendIncludes;
+ }
+
+ // Prepare attributes and Methods declarations
+ String publicAttributes = "";
+ String publicOperations = "";
+ String protectedAttributes = "";
+ String protectedOperations = "";
+ String privateAttributes = "";
+ String privateOperations = "";
+ String packageAttributes = "";
+ String packageOperations = "";
+
+ // Attributes
+ CppClassAttributesDeclaration jetClassPAttr = new CppClassAttributesDeclaration();
+ publicAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PUBLIC_LITERAL);
+ protectedAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PROTECTED_LITERAL);
+ privateAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PRIVATE_LITERAL);
+ packageAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PACKAGE_LITERAL);
+
+ // Methods
+ CppClassOperationsDeclaration jetClassPOp = new CppClassOperationsDeclaration();
+ publicOperations = jetClassPOp.generate(currentClass, VisibilityKind.PUBLIC_LITERAL);
+ protectedOperations = jetClassPOp.generate(currentClass, VisibilityKind.PROTECTED_LITERAL);
+ privateOperations = jetClassPOp.generate(currentClass, VisibilityKind.PRIVATE_LITERAL);
+ packageOperations = jetClassPOp.generate(currentClass, VisibilityKind.PACKAGE_LITERAL);
+
+ boolean hasConstructor = false;
+ for (Operation operation : currentClass.getOperations ()) {
+ if (GenUtils.hasStereotype(operation, StdStereo.create)) {
+ hasConstructor = true;
+ break;
+ }
+ }
+ String defaultInitializer = "";
+ for (Property attribute : currentClass.getAttributes ()) {
+ if (attribute.isStatic()) {
+ // static attributes are initialized differently
+ continue;
+ }
+ ValueSpecification vs = attribute.getDefaultValue ();
+ if ((vs != null) && (vs.stringValue() != null)) {
+ if (!defaultInitializer.equals("")) {
+ // not first attribute
+ defaultInitializer += ", ";
+ }
+ defaultInitializer += attribute.getName () + "(" + vs.stringValue() + ")";
+ }
+ }
+ // no constructor, add it, if some properties have default values
+ if ((!hasConstructor) && (!defaultInitializer.equals (""))) {
+ defaultInitializer = className + "() : " + defaultInitializer + " {}";
+ }
+ else {
+ defaultInitializer = "";
+ }
+
+ // Inline functions implementations
+ String inlineFunctionsImplementation = "";
+ CppClassInlineOperationsImplementation jetInlineClassPOp
+ = new CppClassInlineOperationsImplementation();
+ inlineFunctionsImplementation = jetInlineClassPOp.generate(currentClass);
+
+ // Prepare inherited classes or implemented interfaces
+ String inheritedDeclarations = "";
+ CppClassInheritedDeclarations jetInherited
+ = new CppClassInheritedDeclarations();
+ inheritedDeclarations = jetInherited.generate(currentClass);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#ifndef <%= classFULLNAME %>_H
+#define <%= classFULLNAME %>_H
+
+/************************************************************
+ <%= className %> class header
+ ************************************************************/
+
+<%= ownerInclude %>
+
+<%= classIncludes %>
+
+<%= headerDecl %>
+<%= openNS %>
+<%= typeEnumDefPackage %>
+/************************************************************/
+<%= classDoc %>
+<%= classOrStruct %> <%= className %><%= inheritedDeclarations %> {
+<%= friendIncludes %><%= typeEnumDef %>
+
+ public:
+<%= defaultInitializer %><%= publicAttributes %><%= publicOperations %>
+
+ protected:
+<%= protectedAttributes %><%= protectedOperations %>
+
+ private:
+<%= privateAttributes %><%= privateOperations %>
+
+};
+/************************************************************/
+/* External declarations (package visibility) */
+<%= packageAttributes %>
+<%= packageOperations %>
+/************************************************************/
+/* Inline functions */
+<%= inlineFunctionsImplementation %>
+<%= closeNS %>
+
+/************************************************************
+ End of <%= className %> class header
+ ************************************************************/
+
+#endif
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppInterfaceHeader.h.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppInterfaceHeader.h.jet
new file mode 100644
index 00000000000..29a627bfbdc
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppInterfaceHeader.h.jet
@@ -0,0 +1,99 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet"
+ skeleton = "generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Interface org.eclipse.uml2.uml.Package Cpp.CppInclude org.eclipse.papyrus.cpp.codegen.utils.GenUtils org.eclipse.papyrus.cpp.codegen.jet.util.* org.eclipse.papyrus.cpp.codegen.jet.doc.*"
+ class = "CppInterfaceHeader"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Interface currentInterface = (Interface) argument;
+
+ // Get the package name
+ String interfaceName = currentInterface.getName();
+ String interfaceFULLNAME = GenUtils.getFullNameUC (currentInterface);
+
+ // For interface documentation
+ String iDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+ iDoc = jDoc.generate(currentInterface);
+
+ // Include declaration "CppInclude"
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentInterface, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = "// Include from CppInclude declaration" + NL + cppInclude.getHeader() + NL;
+ }
+
+ // Prepare owner package header include
+ Package ownerPackage = currentInterface.getPackage();
+ String ownerInclude = "";
+ if (ownerPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetOwnerInclude
+ = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ ownerInclude = jetOwnerInclude.generate(ownerPackage);
+ }
+
+
+ // Prepare dependency includes
+ CppInterfaceAllIncludesDeclaration jetInterfaceIncludes
+ = new CppInterfaceAllIncludesDeclaration();
+ String interfaceIncludes = jetInterfaceIncludes.generate(argument);
+ if (!interfaceIncludes.equals("")) {
+ interfaceIncludes = "/* Structural includes (inheritance, dependencies, ... */"+NL+interfaceIncludes;
+ }
+
+ // Prepare Methods declarations
+ String publicOperations = "";
+
+ // Methods
+ CppInterfacePublicOperationsDeclaration jetPublicInterfacePOp
+ = new CppInterfacePublicOperationsDeclaration();
+ publicOperations = jetPublicInterfacePOp.generate(currentInterface);
+
+
+ // Prepare inherited interfaces
+ String inheritedDeclarations = "";
+ CppInterfaceInheritedDeclarations jetInherited
+ = new CppInterfaceInheritedDeclarations();
+ inheritedDeclarations = jetInherited.generate(currentInterface);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#ifndef <%= interfaceFULLNAME %>_H
+#define <%= interfaceFULLNAME %>_H
+
+/************************************************************
+ <%= interfaceName %> interface header
+ ************************************************************/
+
+<%= ownerInclude %>
+
+<%= interfaceIncludes %>
+
+<%= headerDecl %>
+<%= GenUtils.openNS(currentInterface) %>
+/************************************************************/
+<%= iDoc %>
+class <%= interfaceName %> <%= inheritedDeclarations %>{
+
+/* Public declarations */
+public:
+<%= publicOperations %>
+
+};
+
+/************************************************************
+ End of <%= interfaceName %> interface header
+ ************************************************************/
+<%= GenUtils.closeNS(currentInterface) %>
+
+#endif
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppPackageHeader.h.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppPackageHeader.h.jet
new file mode 100644
index 00000000000..e0a61e00335
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppPackageHeader.h.jet
@@ -0,0 +1,138 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet"
+ skeleton = "generator.skeleton"
+ imports = "org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.CppInclude Cpp.CppNoCodeGen org.eclipse.uml2.uml.* org.eclipse.uml2.uml.Package org.eclipse.emf.common.util.EList org.eclipse.papyrus.cpp.codegen.jet.util.* org.eclipse.papyrus.cpp.codegen.jet.doc.* java.util.Iterator java.util.Set java.util.HashSet org.eclipse.papyrus.cpp.codegen.Activator"
+ class = "CppPackageHeader"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the package
+ Package currentPackage = (Package) argument;
+ Package fatherPackage = currentPackage.getNestingPackage(); // return owner package
+
+ // Get the package name
+ String packageName = currentPackage.getName();
+ String packageFULLNAME = GenUtils.getFullName (currentPackage).toUpperCase();
+ String openNS = GenUtils.openNS (currentPackage) + "namespace " + currentPackage.getName () + " {\n";
+ String closeNS = "} // of namespace" + currentPackage.getName () + "\n" + GenUtils.closeNS (currentPackage);
+
+ // Prepare the header declarations for this package
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentPackage, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = "// Include from CppInclude declaration" + NL + cppInclude.getHeader() + NL;
+ }
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+
+ // Prepare Father include declaration
+ String fatherPkgInclude = "";
+ if (fatherPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetPkgInclude
+ = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ fatherPkgInclude = jetPkgInclude.generate(fatherPackage);
+ }
+
+
+ // Prepare Dependency includes declarations ...
+ // Retrieve package used by current package (dependencies)
+
+ String cFullName = ""; // used in java to contruct and in template to read list
+
+ // Get packages linked by dependencies
+ EList<Package> usedPackages = GenUtils.getUsedPackages (currentPackage);
+ Set<String> usedPackagesNames = new HashSet<String>();
+ // Add imported packages
+ usedPackages.addAll(currentPackage.getImportedPackages());
+
+ Iterator<Package> usedPackagesIt = usedPackages.iterator();
+ Iterator<String> usedPackagesNamesIt;
+
+ // Refactor as a new Set containing names to be declared for packages (with path)
+ while(usedPackagesIt.hasNext()) {
+ Package currentUsedPackage = usedPackagesIt.next();
+ String cPackageName = currentUsedPackage.getName();
+ String cPackagePath = GenUtils.getFullPath (currentUsedPackage);
+
+ cFullName = cPackagePath+"/Pkg_"+cPackageName;
+
+ // Add this name to the set if codegen stereotype is not applied
+ PackageImport packImport = currentPackage.getPackageImport(currentUsedPackage);
+ if(!GenUtils.hasStereotype(packImport, CppNoCodeGen.class)) {
+ if (!GenUtils.hasStereotype(currentUsedPackage, CppNoCodeGen.class)) {
+ usedPackagesNames.add(cFullName);
+ }
+ }
+ }
+
+ // and prepare the Iterator for the template...
+ usedPackagesNamesIt = usedPackagesNames.iterator();
+
+
+
+ // Prepare owned type and enum declaration
+ String typeDef = "";
+ String enumDef = "";
+
+ Iterator<Type> typeIt = currentPackage.getOwnedTypes().iterator();
+ while (typeIt.hasNext()) {
+ Type currentElt = typeIt.next();
+ if (!GenUtils.hasStereotype(currentElt, CppNoCodeGen.class)) {
+ if (currentElt instanceof org.eclipse.uml2.uml.PrimitiveType) {
+
+ PrimitiveType currentType = (PrimitiveType) currentElt;
+ CppPrimitiveTypeDefinition jetPrimitiveType = new CppPrimitiveTypeDefinition();
+ // Execute the util template
+ typeDef = typeDef+jetPrimitiveType.generate(currentType);
+
+ } else if (currentElt instanceof org.eclipse.uml2.uml.Enumeration) {
+
+ Enumeration currentEnum = (Enumeration) currentElt;
+ CppEnumerationDefinition jetEnum = new CppEnumerationDefinition();
+ // Execute the util template
+ enumDef = enumDef+jetEnum.generate(currentEnum);
+
+ }
+ }
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#ifndef PKG_<%= packageFULLNAME %>
+#define PKG_<%= packageFULLNAME %>
+
+/************************************************************
+ Pkg_<%= packageName %> package header
+ ************************************************************/
+
+<%= fatherPkgInclude %>
+
+/* Package dependency header include */
+<% // For every depency linked package
+ while(usedPackagesNamesIt.hasNext()) {
+ cFullName = (String) usedPackagesNamesIt.next(); %>
+#include <<%= cFullName %>.<%= headerFileSuffix %>>
+<% } %>
+
+/* CppInclude header declarations insert */
+<%= headerDecl %>
+
+<%= openNS %>
+/* Types Defined in the package */
+<%= typeDef %>
+<%= enumDef %>
+<%= closeNS %>
+
+/************************************************************
+ End of Pkg_<%= packageName %> package header
+ ************************************************************/
+
+#endif
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppTemplateHeader.h.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppTemplateHeader.h.jet
new file mode 100644
index 00000000000..4b72e7c51c0
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/CppTemplateHeader.h.jet
@@ -0,0 +1,202 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet"
+ skeleton = "generator.skeleton"
+ imports = "org.eclipse.papyrus.cpp.codegen.jet.doc.* org.eclipse.uml2.uml.Package org.eclipse.uml2.uml.Class org.eclipse.uml2.uml.* org.eclipse.papyrus.cpp.codegen.jet.util.* Cpp.CppInclude Cpp.CppNoCodeGen Cpp.CppInline org.eclipse.papyrus.cpp.codegen.utils.GenUtils java.util.*"
+ class = "CppTemplateHeader"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Get the package name
+ String className = currentClass.getName();
+ String classFullName = GenUtils.getFullName(currentClass);
+ String classFULLNAME = classFullName.toUpperCase();
+ String openNS = GenUtils.openNS (currentClass);
+ String closeNS = GenUtils.closeNS (currentClass);
+
+ // Include declaration "CppInclude"
+ String headerDecl = "";
+ CppInclude cppInclude = GenUtils.getApplication(currentClass, CppInclude.class);
+ if (cppInclude != null) {
+ headerDecl = "// Include from CppInclude declaration" + NL + cppInclude.getHeader() + NL;
+ }
+
+ // Prepare owner package header include
+ Package ownerPackage = currentClass.getPackage();
+ String ownerInclude = "";
+ if (ownerPackage != null) {
+ // Create an util template to prepare the declaration
+ CppOwnerPackageIncludeDeclaration jetOwnerInclude = new CppOwnerPackageIncludeDeclaration();
+ // Execute the util template
+ ownerInclude = jetOwnerInclude.generate(ownerPackage);
+ }
+
+ // Prepare owned type and enum declaration
+ String typeEnumDefPackage = "";
+ String typeEnumDef = "";
+
+ CppClassTypeAndEnum jetTE = new CppClassTypeAndEnum();
+ typeEnumDef = jetTE.generate(currentClass);
+
+ CppClassTypeAndEnumPackage jetTEp = new CppClassTypeAndEnumPackage();
+ typeEnumDefPackage = jetTEp.generate(currentClass);
+
+ // Prepare template parameter declaration
+ Iterator<org.eclipse.uml2.uml.TemplateParameter> tparam =
+ GenUtils.getTemplateParameters(currentClass).iterator();
+
+ String tParamDecl = "";
+ String tDecl = "";
+
+ while (tparam.hasNext()) {
+ CppTemplateParameter jetTParam = new CppTemplateParameter();
+ tParamDecl = tParamDecl + jetTParam.generate(tparam.next());
+
+ if (tparam.hasNext()) {
+ tParamDecl = tParamDecl + ", ";
+ }
+ }
+
+ tDecl = "template <" + tParamDecl + ">" + NL;
+
+ // Prepare dependency includes
+ CppClassAllIncludesDeclaration jetClassIncludes = new CppClassAllIncludesDeclaration();
+ String classIncludes = jetClassIncludes.generate(argument);
+ if (!classIncludes.equals("")) {
+ classIncludes = "/* Structural includes (inheritance, dependencies... */"
+ + NL + classIncludes;
+ }
+
+ // Prepare attributes and Methods declarations
+ String publicAttributes = "";
+ String protectedAttributes = "";
+ String privateAttributes = "";
+ String publicOperations = "", publicOperationsImpl = "";
+ String protectedOperations = "", protectedOperationsImpl = "";
+ String privateOperations = "", privateOperationsImpl = "";
+
+ // Attributes
+ CppClassAttributesDeclaration jetClassPAttr = new CppClassAttributesDeclaration();
+ publicAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PUBLIC_LITERAL);
+ protectedAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PROTECTED_LITERAL);
+ privateAttributes = jetClassPAttr.generate(currentClass, VisibilityKind.PRIVATE_LITERAL);
+
+ // Methods implementation
+ String inlineFuncImpl = "";
+ // String inlineFuncDecl = "";
+
+ // Implementation
+ CppOperationTemplateImplementation jetOpImpl = new CppOperationTemplateImplementation();
+ // Declaration
+ CppOperationDeclaration jetOpDecl = new CppOperationDeclaration();
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentClass.getOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOperation = operations.next();
+
+ if (GenUtils.hasStereotype(currentOperation, CppNoCodeGen.class) ||
+ currentOperation.isAbstract()) {
+ continue;
+ }
+ if (GenUtils.hasStereotype(currentOperation, CppInline.class)) {
+ String opDoc = "";
+ // Doc for the template
+ CppOperationDoc jDoc = new CppOperationDoc();
+ opDoc = jDoc.generate(currentOperation);
+ // Inline declaration
+ if (currentOperation.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
+ publicOperations = publicOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } else if (currentOperation.getVisibility() == VisibilityKind.PRIVATE_LITERAL) {
+ privateOperations = privateOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } else if (currentOperation.getVisibility() == VisibilityKind.PROTECTED_LITERAL) {
+ protectedOperations = protectedOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } // else nothing
+ // Inline implementation
+ inlineFuncImpl = inlineFuncImpl + opDoc + NL + tDecl
+ + jetOpImpl.generate(currentOperation) + NL;
+ } else {
+ if (currentOperation.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
+ publicOperationsImpl = publicOperationsImpl + tDecl
+ + jetOpImpl.generate(currentOperation);
+ publicOperations = publicOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } else if (currentOperation.getVisibility() == VisibilityKind.PRIVATE_LITERAL) {
+ privateOperationsImpl = privateOperationsImpl + tDecl
+ + jetOpImpl.generate(currentOperation);
+ privateOperations = privateOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } else if (currentOperation.getVisibility() == VisibilityKind.PROTECTED_LITERAL) {
+ protectedOperationsImpl = protectedOperationsImpl + tDecl
+ + jetOpImpl.generate(currentOperation);
+ protectedOperations = protectedOperations
+ + jetOpDecl.generate(currentOperation) + ";";
+ } // else nothing
+ }
+ }
+
+ // Prepare inherited classes or implemented interfaces
+ String inheritedDeclarations = "";
+ CppClassInheritedDeclarations jetInherited = new CppClassInheritedDeclarations();
+ inheritedDeclarations = jetInherited.generate(currentClass);
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#ifndef <%= classFULLNAME %>_H
+#define <%= classFULLNAME %>_H
+
+/************************************************************
+ <%= className %> template class header
+ ************************************************************/
+
+<%= ownerInclude %>
+
+<%= classIncludes %>
+
+<%= headerDecl %>
+<%= openNS %>
+<%= typeEnumDefPackage %>
+/************************************************************/
+template <<%= tParamDecl %>> class <%= className %> <%= inheritedDeclarations %>{
+<%= typeEnumDef %>
+/* Public declarations */
+public:
+<%= publicAttributes %>
+<%= publicOperations %>
+
+/* Protected declarations */
+protected:
+<%= protectedAttributes %>
+<%= protectedOperations %>
+
+/* Private declarations */
+private:
+<%= privateAttributes %>
+<%= privateOperations %>
+
+};
+
+/************************************************************/
+/* Template functions */
+<%= publicOperationsImpl %>
+<%= protectedOperationsImpl %>
+<%= privateOperationsImpl %>
+/* Inline functions */
+<%= inlineFuncImpl %>
+
+<%= closeNS %>
+
+/************************************************************
+ End of <%= className %> template class header
+ ************************************************************/
+
+#endif
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppElementDoc.doc.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppElementDoc.doc.jet
new file mode 100644
index 00000000000..2a0e5b591c7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppElementDoc.doc.jet
@@ -0,0 +1,27 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.doc"
+ skeleton = "../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Element org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppElementDoc"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the element
+ Element currentElt = (Element) argument;
+ String eltDoc = "";
+
+
+ // Doc for the element
+ eltDoc = GenUtils.getComments(currentElt);
+ eltDoc = eltDoc.replaceAll(NL, NL+" * ");
+
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+/**
+ * <%= eltDoc %>
+ */ \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppOperationDoc.doc.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppOperationDoc.doc.jet
new file mode 100644
index 00000000000..de8ebf7cc19
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppOperationDoc.doc.jet
@@ -0,0 +1,47 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.doc"
+ skeleton = "../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Operation org.eclipse.uml2.uml.Parameter org.eclipse.papyrus.cpp.codegen.utils.GenUtils java.util.Iterator"
+ class = "CppOperationDoc"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the element
+ Operation currentOperation = (Operation) argument;
+ Parameter currentParameter;
+
+ String opDoc = "";
+ String opParams = "";
+// String opReturn = "";
+// TODO: return not handled? (or treated as any other parameter?)
+
+ // Doc for the element
+ opDoc = GenUtils.getComments(currentOperation);
+ opDoc = opDoc.replaceAll(NL, NL+" * ");
+
+ // Treat params
+ Iterator<Parameter> parameters = currentOperation.getOwnedParameters().iterator();
+ while(parameters.hasNext()) {
+ currentParameter = (Parameter) parameters.next();
+
+ // Prepare parameters
+ CppParamDoc jetParam = new CppParamDoc();
+ opParams = opParams+jetParam.generate(currentParameter);
+
+ if (parameters.hasNext()){
+ opParams = opParams+NL+" * ";
+ }
+ }
+
+ // Treat return
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+/**
+ * <%= opDoc %>
+ * <%= opParams %>
+ */ \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppParamDoc.doc.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppParamDoc.doc.jet
new file mode 100644
index 00000000000..4e8e2ee3fda
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/doc/CppParamDoc.doc.jet
@@ -0,0 +1,23 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.doc"
+ skeleton = "../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Parameter org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppParamDoc"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the element
+ Parameter currentElt = (Parameter) argument;
+
+ String paramName = currentElt.getName();
+ String paramDoc = GenUtils.getComments(currentElt);
+
+ paramDoc = paramDoc.replaceAll(NL, NL+" * ");
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+@param <%= paramName %> <%= paramDoc %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/generator.skeleton b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/generator.skeleton
new file mode 100644
index 00000000000..aa011c805d5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/generator.skeleton
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package PACKAGE;
+
+public class CLASS
+{
+ public String generate(Object argument)
+ {
+ return "";
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/generatorTwoArgs.skeleton b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/generatorTwoArgs.skeleton
new file mode 100644
index 00000000000..1e268756e0c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/generatorTwoArgs.skeleton
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+
+package PACKAGE;
+
+public class CLASS
+{
+ public String generate(Object argument1, Object argument2)
+ {
+ return "";
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassAllIncludesDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassAllIncludesDeclaration.util.jet
new file mode 100644
index 00000000000..b872a010e91
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassAllIncludesDeclaration.util.jet
@@ -0,0 +1,47 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "Cpp.* org.eclipse.papyrus.cpp.codegen.utils.* org.eclipse.uml2.uml.Class org.eclipse.emf.common.util.EList org.eclipse.uml2.uml.Package org.eclipse.emf.common.util.UniqueEList java.util.* org.eclipse.uml2.uml.PrimitiveType org.eclipse.uml2.uml.Enumeration org.eclipse.uml2.uml.Classifier"
+ class = "CppClassAllIncludesDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Get the package name
+ // String className = currentClass.getName();
+
+ // Prepare Dependency includes declarations ...
+ // Retrieve package used by current package (dependencies)
+ // use a unique list to avoid duplicates
+ EList<Classifier> usedClasses = new UniqueEList<Classifier> ();
+
+ String newInclude = "";
+
+ // class attributes dependencies
+ usedClasses.addAll (GenUtils.getOwnedAttributeTypes(currentClass));
+ // operation parameters dependencies
+ usedClasses.addAll (GenUtils.getIncludesFromOperations(currentClass));
+ // realized interface dependencies
+ if (currentClass instanceof Class) {
+ usedClasses.addAll (GenUtils.getImplementedInterfaces((Class) currentClass));
+ }
+ // dependencies and associations
+ usedClasses.addAll (GenUtils.getRelationshipsNoDeps(currentClass));
+
+ // template parameters are declared locally (if owned) and do not correspond to a file
+ // that can be included
+ usedClasses.removeAll (GenUtils.getTemplateParameteredElements(currentClass));
+
+ Iterator<Classifier> usedClassesIt = usedClasses.iterator();
+ // Parsing all as NamedElement
+ String includes = ClassUtils.createIncludeDecl (usedClasses, currentClass);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= includes %>
+
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassAttributesDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassAttributesDeclaration.util.jet
new file mode 100644
index 00000000000..a1c1ebc1f4a
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassAttributesDeclaration.util.jet
@@ -0,0 +1,28 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generatorTwoArgs.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.Iterator"
+ class = "CppClassAttributesDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument1;
+ String attrDecl = "";
+
+ // Retrieve public attributes
+ Iterator<Property> attributes = currentClass.getAttributes().iterator();
+ while (attributes.hasNext()) {
+ Property attribute = attributes.next();
+ if (attribute.getVisibility() == argument2) {
+ CppAttributeDeclaration jetAttDecl = new CppAttributeDeclaration();
+ attrDecl = attrDecl+jetAttDecl.generate(attribute);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= attrDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassFriendDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassFriendDeclaration.util.jet
new file mode 100644
index 00000000000..ddfb72badfc
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassFriendDeclaration.util.jet
@@ -0,0 +1,18 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.NamedElement"
+ class = "CppClassFriendDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ NamedElement currentNE = (NamedElement) argument;
+ String cClassName = currentNE.getName();
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+friend class <%= cClassName %>;
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeClassDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeClassDeclaration.util.jet
new file mode 100644
index 00000000000..41949a00117
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeClassDeclaration.util.jet
@@ -0,0 +1,28 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.NamedElement org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.*"
+ class = "CppClassIncludeClassDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ NamedElement currentNE = (NamedElement) argument;
+ String cClassName = currentNE.getName();
+ String isTemplate = "";
+ String openNS = GenUtils.openNS (currentNE);
+ String closeNS = GenUtils.closeNS (currentNE);
+
+ if (GenUtils.hasStereotype(currentNE, CppTemplate.class)) {
+ isTemplate = "template ";
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+
+<%= openNS %>
+<%= isTemplate %>class <%= cClassName %>;
+<%= closeNS %>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeDeclaration.util.jet
new file mode 100644
index 00000000000..e00089131b3
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeDeclaration.util.jet
@@ -0,0 +1,49 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.NamedElement org.eclipse.uml2.uml.Package org.eclipse.papyrus.cpp.codegen.Activator org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.*"
+ class = "CppClassIncludeDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+
+ // Retrieve the class
+ NamedElement currentNE = (NamedElement) argument;
+ String cClassPath = "";
+ Package nearestPkg = currentNE.getNearestPackage();
+ String cClassName = currentNE.getName();
+
+ if ( //!(nearestPkg.getUml2Package() instanceof org.eclipse.uml2.uml.Model)
+ /*&& */!(GenUtils.hasStereotype(nearestPkg, CppRoot.class))) {
+ cClassPath = GenUtils.getFullPath(nearestPkg)+"/";
+ }
+
+
+ // If an external class is referred
+ CppExternClass extClass = GenUtils.getApplication(currentNE, CppExternClass.class);
+ CppTemplate template = GenUtils.getApplication(currentNE, CppTemplate.class);
+ if (extClass != null) {
+ cClassPath = "";
+ cClassName = extClass.getName();
+ if ((cClassName == null) || cClassName.equals ("")) {
+ // default value
+ cClassName = currentNE.getQualifiedName ().replace ("::", "/") + "." + headerFileSuffix;
+ // strip model name
+ cClassName = cClassName.substring (currentNE.getModel ().getName ().length () + 1);
+ }
+ } else if (template != null) {
+ cClassPath = "";
+ cClassName = template.getDeclaration();
+ }
+ else cClassName=cClassName+"."+headerFileSuffix;
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#include <<%= cClassPath %><%= cClassName %>>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeFriendDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeFriendDeclaration.util.jet
new file mode 100644
index 00000000000..ab1941de515
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassIncludeFriendDeclaration.util.jet
@@ -0,0 +1,38 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.*"
+ class = "CppClassIncludeFriendDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+// NamedElement currentElt = (NamedElement) argument;
+
+ // Prepare Dependency includes declarations ...
+ // Retrieve package used by current package (dependencies)
+ Iterator<Classifier> friendClassesIt = GenUtils.getUsedClassifiers(currentClass).iterator();
+
+ // Parsing all as NamedElement
+ String friendClass = "";
+
+ while (friendClassesIt.hasNext()) {
+ Classifier cClass = friendClassesIt.next();
+
+ if (GenUtils.hasStereotype(cClass, CppFriend.class) &&
+ (!GenUtils.hasStereotype(cClass, CppNoCodeGen.class))) {
+
+ CppClassFriendDeclaration jetIDecl
+ = new CppClassFriendDeclaration();
+
+ friendClass = friendClass+jetIDecl.generate(cClass);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= friendClass %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassInheritedDeclarations.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassInheritedDeclarations.util.jet
new file mode 100644
index 00000000000..4ed12621cb3
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassInheritedDeclarations.util.jet
@@ -0,0 +1,96 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.*"
+ class = "CppClassInheritedDeclarations"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+ String targetName = "";
+ String visibility = "";
+ String decl = "";
+
+ // Get generalization and implementation relationships
+ Iterator<DirectedRelationship> relationshipIt =
+ currentClass.getSourceDirectedRelationships().iterator();
+ // Iterator impIt = currentClass.getImplementations().iterator();
+
+ while (relationshipIt.hasNext()) {
+
+ DirectedRelationship relationship = relationshipIt.next();
+
+ if ((relationship instanceof Generalization) ||
+ (relationship instanceof InterfaceRealization))
+ {
+ org.eclipse.uml2.uml.Classifier target = null;
+ if (relationship.getTargets ().size() > 0) {
+ // there should always be at least one element in the target
+ // list and it should be a classifier, but better check.
+ org.eclipse.uml2.uml.Element element =
+ relationship.getTargets().get(0);
+ if (element instanceof org.eclipse.uml2.uml.Classifier) {
+ target = (org.eclipse.uml2.uml.Classifier) element;
+ }
+ }
+ if (target != null) {
+ // If not <NoCodeGen>
+ if (!GenUtils.hasStereotype(target, CppNoCodeGen.class))
+ {
+ CppVisibility cppVisibility = GenUtils.getApplication(relationship, CppVisibility.class);
+ if (cppVisibility != null) {
+ visibility = cppVisibility.getValue();
+ } else {
+ visibility = "public";
+ }
+
+ targetName = GenUtils.qualifiedName (target);
+ if (!decl.equals("")) {
+ decl = decl + ", ";
+ }
+ decl = decl+visibility+" "+targetName;
+ }
+ }
+ }
+ }
+
+ // Parse implementations
+ // RS: removed code: Implementation does not exist in UML2 v2.
+ // TODO: replace Implementation with new UML2 constructions?
+// Implementation currentImp;
+//
+// while (impIt.hasNext()) {
+//
+// currentImp = (Implementation) impIt.next();
+// currentNE = (NamedElement) currentImp;
+//
+// // get visibility and target name
+// visibility = currentNE.getVisibilityAsString();
+//
+// // If not <NoCodeGen>
+// if (!GenUtils.hasStereotype(currentImp.getTarget(), CppNoCodeGen.class)) {
+//
+// targetName = currentImp.getTarget().getName();
+//
+// if (!decl.equals("")) {
+// decl = decl + ", ";
+// }
+// decl = decl+visibility+" "+targetName;
+//
+// }
+// }
+
+
+ // ":" if decl non empty
+ String prefix = "";
+ if (!decl.equals("")) {
+ prefix = " : ";
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= prefix %><%= decl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassInlineOperationsImplementation.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassInlineOperationsImplementation.util.jet
new file mode 100644
index 00000000000..1c8f5382870
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassInlineOperationsImplementation.util.jet
@@ -0,0 +1,30 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.Iterator org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.*"
+ class = "CppClassInlineOperationsImplementation"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+ String opDecl = "";
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentClass.getOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOp = operations.next();
+ if (GenUtils.hasStereotype (currentOp, CppInline.class) &&
+ !GenUtils.hasStereotype (currentOp, CppNoCodeGen.class)) {
+
+ CppOperationImplementation jetOpImpl = new CppOperationImplementation();
+ opDecl = opDecl+jetOpImpl.generate(currentOp);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= opDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassOperationsDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassOperationsDeclaration.util.jet
new file mode 100644
index 00000000000..a05242cb999
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassOperationsDeclaration.util.jet
@@ -0,0 +1,35 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generatorTwoArgs.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.Iterator org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.*"
+ class = "CppClassOperationsDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument1;
+ String opDecl = "";
+
+ // Retrieve attributes
+ Iterator<Operation> operations = currentClass.getOperations().iterator();
+ while (operations.hasNext()) {
+ Operation operation = operations.next();
+ if (!GenUtils.hasStereotype (operation, CppNoCodeGen.class)) {
+ if (operation.getVisibility() == argument2) {
+ CppOperationDeclaration jetOpDecl = new CppOperationDeclaration();
+ String cOpDecl = jetOpDecl.generate(operation);
+
+ // if main cOpDecl = "";
+ if (!cOpDecl.equals("")) {
+ opDecl = opDecl+NL+cOpDecl+";";
+ }
+ }
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= opDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassOperationsImplementation.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassOperationsImplementation.util.jet
new file mode 100644
index 00000000000..0ca8426587b
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassOperationsImplementation.util.jet
@@ -0,0 +1,30 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.Iterator org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.*"
+ class = "CppClassOperationsImplementation"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+ String opDecl = "";
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentClass.getOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOp = operations.next();
+ if (!GenUtils.hasStereotype (currentOp, CppInline.class) &&
+ !GenUtils.hasStereotype (currentOp, CppNoCodeGen.class) &&
+ !currentOp.isAbstract()) {
+ CppOperationImplementation jetOpImpl = new CppOperationImplementation();
+ opDecl = opDecl+jetOpImpl.generate(currentOp);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= opDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassTypeAndEnum.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassTypeAndEnum.util.jet
new file mode 100644
index 00000000000..8901678c6d4
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassTypeAndEnum.util.jet
@@ -0,0 +1,93 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.papyrus.cpp.codegen.utils.GenUtils org.eclipse.uml2.uml.*"
+ class = "CppClassTypeAndEnum"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+ // Prepare owned type and enum declaration
+ String publicTypeDef = "";
+ String privateTypeDef = "";
+ String protectedTypeDef = "";
+ String publicEnumDef = "";
+ String privateEnumDef = "";
+ String protectedEnumDef = "";
+ String publicKeyword = "public:";
+ String protectedKeyword = "protected:";
+ String privateKeyword = "private:";
+
+ for (Element currentElt : currentClass.getOwnedElements()) {
+ if (!GenUtils.hasStereotype(currentElt, Cpp.CppNoCodeGen.class)) {
+ if (currentElt instanceof PrimitiveType) {
+
+ org.eclipse.uml2.uml.PrimitiveType currentType = (org.eclipse.uml2.uml.PrimitiveType) currentElt;
+ CppPrimitiveTypeDefinition jetPrimitiveType = new CppPrimitiveTypeDefinition();
+ // Execute the util template
+ if (currentType.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
+ publicTypeDef = publicTypeDef+jetPrimitiveType.generate(currentType);
+ } else if (currentType.getVisibility() == VisibilityKind.PROTECTED_LITERAL) {
+ protectedTypeDef = protectedTypeDef+jetPrimitiveType.generate(currentType);
+ } else if (currentType.getVisibility() == VisibilityKind.PRIVATE_LITERAL) {
+ privateTypeDef = privateTypeDef+jetPrimitiveType.generate(currentType);
+ }
+ }
+ else if (currentElt instanceof Enumeration) {
+
+ Enumeration currentEnum = (Enumeration) currentElt;
+ CppEnumerationDefinition jetEnum = new CppEnumerationDefinition();
+ // Execute the util template
+ if (currentEnum.getVisibility() == VisibilityKind.PUBLIC_LITERAL) {
+ publicEnumDef = publicEnumDef+jetEnum.generate(currentEnum);
+ } else if (currentEnum.getVisibility() == VisibilityKind.PROTECTED_LITERAL) {
+ protectedEnumDef = protectedEnumDef+jetEnum.generate(currentEnum);
+ } else if (currentEnum.getVisibility() == VisibilityKind.PRIVATE_LITERAL) {
+ privateEnumDef = privateEnumDef+jetEnum.generate(currentEnum);
+ }
+ }
+ }
+ }
+
+ // If not "" add a comment before declarations
+ if (publicTypeDef.equals("") && publicEnumDef.equals("")) {
+ publicKeyword = "";
+ } else {
+ if (!publicTypeDef.equals("")) {
+ publicTypeDef = "/* Public type definitions */"+NL+publicTypeDef+NL;
+ }
+ if (!publicEnumDef.equals("")) {
+ publicEnumDef = "/* Public enumeration definitions */"+NL+publicEnumDef+NL;
+ }
+ }
+
+ if (protectedTypeDef.equals("") && protectedEnumDef.equals("")) {
+ protectedKeyword = "";
+ } else {
+ if (!protectedTypeDef.equals("")) {
+ protectedTypeDef = "/* Protected type definitions */"+NL+protectedTypeDef+NL;
+ }
+ if (!protectedEnumDef.equals("")) {
+ protectedEnumDef = "/* Protected enumeration definitions */"+NL+protectedEnumDef+NL;
+ }
+ }
+
+ if (privateTypeDef.equals("") && privateEnumDef.equals("")) {
+ privateKeyword = "";
+ } else {
+ if (!privateTypeDef.equals("")) {
+ privateTypeDef = "/* Private type definitions */"+NL+privateTypeDef+NL;
+ }
+ if (!privateEnumDef.equals("")) {
+ privateEnumDef = "/* Private enumeration definitions */"+NL+privateEnumDef+NL;
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= publicKeyword %><%= publicTypeDef %><%= publicEnumDef %><%= protectedKeyword %><%= protectedTypeDef %><%= protectedEnumDef %><%= privateKeyword %><%= privateTypeDef %><%= privateEnumDef %>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassTypeAndEnumPackage.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassTypeAndEnumPackage.util.jet
new file mode 100644
index 00000000000..52feb87b245
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/class/CppClassTypeAndEnumPackage.util.jet
@@ -0,0 +1,59 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Class org.eclipse.uml2.uml.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils java.util.Iterator Cpp.*"
+ class = "CppClassTypeAndEnumPackage"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+
+
+ // Prepare owned type and enum declaration
+ String packageTypeDef = "";
+ String packageEnumDef = "";
+
+ Iterator<Element> typeIt = currentClass.getOwnedElements().iterator();
+ while (typeIt.hasNext()) {
+ Element currentElt = typeIt.next();
+ if (!GenUtils.hasStereotype(currentElt, CppNoCodeGen.class)) {
+ if (currentElt instanceof PrimitiveType) {
+
+ PrimitiveType currentType = (PrimitiveType) currentElt;
+ CppPrimitiveTypeDefinition jetPrimitiveType = new CppPrimitiveTypeDefinition();
+ // Execute the util template
+ if (currentType.getVisibility() == VisibilityKind.PACKAGE_LITERAL) {
+ packageTypeDef = packageTypeDef+jetPrimitiveType.generate(currentType);
+ }
+
+
+ } else if (currentElt instanceof Enumeration) {
+
+ Enumeration currentEnum = (Enumeration) currentElt;
+ CppEnumerationDefinition jetEnum = new CppEnumerationDefinition();
+ // Execute the util template
+ if (currentEnum.getVisibility() == VisibilityKind.PACKAGE_LITERAL) {
+ packageEnumDef = packageEnumDef+jetEnum.generate(currentEnum);
+ }
+
+ }
+ }
+ }
+
+ // If not "" add a comment before declarations
+ if (!packageEnumDef.equals("")) {
+ packageEnumDef = "/* Package enumeration definitions */"+NL+packageEnumDef;
+ }
+ if (!packageTypeDef.equals("")) {
+ packageTypeDef = "/* Package type definitions */"+NL+packageTypeDef;
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= packageTypeDef %>
+<%= packageEnumDef %>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/enum/CppEnumerationDefinition.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/enum/CppEnumerationDefinition.util.jet
new file mode 100644
index 00000000000..469b0a3d723
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/enum/CppEnumerationDefinition.util.jet
@@ -0,0 +1,72 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Enumeration org.eclipse.uml2.uml.EnumerationLiteral org.eclipse.papyrus.cpp.codegen.jet.doc.* java.util.Iterator org.eclipse.papyrus.cpp.codegen.utils.GenUtils Cpp.*"
+ class = "CppEnumerationDefinition"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // This is an util template to prepare Enumeration definition
+ /////////////////////////////////////////////////////////////
+
+
+ // Retrieve the enumeration
+ Enumeration currentEnumeration = (Enumeration) argument;
+
+ // Get the package name
+ String enumName = currentEnumeration.getName();
+
+ // Doc
+ String enumDoc = "";
+ String enumLitDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+ enumDoc = jDoc.generate(currentEnumeration);
+
+ // Retrieve literals
+ String enumLiterals = "";
+
+ Iterator<EnumerationLiteral> literalsIt = currentEnumeration.getOwnedLiterals().iterator();
+
+ while (literalsIt.hasNext()) {
+
+ // retrieve current
+ EnumerationLiteral currentLiteral = literalsIt.next();
+
+ enumLiterals = enumLiterals+currentLiteral.getName();
+
+ // if current literal is initialised
+ CppInit cppInit = GenUtils.getApplication(currentLiteral, CppInit.class);
+ if (cppInit != null) {
+ // Add the initialisation value
+ int initValue = cppInit.getValue();
+ enumLiterals = enumLiterals + " = " + initValue;
+ }
+
+ // Retrieve doc
+ if (!GenUtils.getComments(currentLiteral).equals("")) {
+ enumLitDoc = " //< "+GenUtils.getComments(currentLiteral);
+ } else {
+ enumLitDoc = "";
+ }
+
+ // if more literal left prepare new line for next literal
+ if (literalsIt.hasNext()) {
+ enumLiterals = enumLiterals+" ,"+enumLitDoc+NL+"\t";
+ } else {
+ enumLiterals = enumLiterals+enumLitDoc;
+ }
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= enumDoc %>
+enum <%= enumName %> {
+ <%= enumLiterals %>
+};
+
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceAllIncludesDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceAllIncludesDeclaration.util.jet
new file mode 100644
index 00000000000..fdffc73bde7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceAllIncludesDeclaration.util.jet
@@ -0,0 +1,72 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils org.eclipse.uml2.uml.Interface org.eclipse.emf.common.util.EList org.eclipse.uml2.uml.Package org.eclipse.emf.common.util.UniqueEList java.util.* org.eclipse.uml2.uml.PrimitiveType org.eclipse.uml2.uml.Enumeration org.eclipse.uml2.uml.Classifier"
+ class = "CppInterfaceAllIncludesDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the interface
+ Interface currentInterface = (Interface) argument;
+
+ // Prepare Dependency includes declarations ...
+ // Retrieve package used by current package (dependencies)
+ // use a unique list to avoid duplicates
+ EList<Classifier> usedClasses = new UniqueEList<Classifier> ();
+
+ String newInclude = "";
+
+ // class attributes dependencies
+ usedClasses.addAll (GenUtils.getOwnedAttributeTypes(currentInterface));
+ // operation parameters dependencies
+ usedClasses.addAll (GenUtils.getIncludesFromOperations(currentInterface));
+ // dependencies and associations
+ usedClasses.addAll (GenUtils.getRelationships(currentInterface));
+
+ Iterator<Classifier> usedClassesIt = usedClasses.iterator();
+ // Parsing all as NamedElement
+ String includes = "";
+
+ while (usedClassesIt.hasNext())
+ {
+ Classifier cl = usedClassesIt.next ();
+
+ // Only add include if this is not for the current class
+ if (!currentInterface.equals(cl)) {
+ // ... and if it does not have the stereotype "CppNoCodeGen", unless
+ // it has stereotype "CppExternalClass"
+ if ( (!GenUtils.hasStereotype(cl, CppNoCodeGen.class)) ||
+ GenUtils.hasStereotype(cl, CppExternClass.class)) {
+
+ if ((cl instanceof Enumeration) || (cl instanceof PrimitiveType))
+ {
+ // Enumeration is not defined in a separate file, but in the
+ // package that owns it => include the owning package (might be a duplicate input, if owning
+ // package is also the owner of current interface)
+ CppOwnerPackageIncludeDeclaration jetIDecl
+ = new CppOwnerPackageIncludeDeclaration();
+ if (cl.getOwner() instanceof Package) {
+ newInclude = jetIDecl.generate (cl.getOwner ());
+ }
+ else {
+ newInclude = "";
+ }
+ }
+ else {
+ // include the file associated with the classifier
+ CppClassIncludeDeclaration jetIDecl
+ = new CppClassIncludeDeclaration();
+ newInclude = jetIDecl.generate (cl);
+ }
+
+ includes = includes+newInclude;
+ }
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= includes %>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceIncludeDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceIncludeDeclaration.util.jet
new file mode 100644
index 00000000000..3984fdbb0f3
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceIncludeDeclaration.util.jet
@@ -0,0 +1,29 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.NamedElement org.eclipse.uml2.uml.Package org.eclipse.papyrus.cpp.codegen.Activator Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppInterfaceIncludeDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ // Retrieve the interface
+ NamedElement currentNE = (NamedElement) argument;
+ String iInterfacePath = "";
+ Package nearestPkg = currentNE.getNearestPackage();
+ String iInterfaceName = currentNE.getName();
+
+ if ( //!(nearestPkg.getUml2Package() instanceof org.eclipse.uml2.uml.Model)
+ /*&&*/ !(GenUtils.hasStereotype(nearestPkg, CppRoot.class))) {
+ iInterfacePath = GenUtils.getFullPath (nearestPkg) + "/";
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+#include <<%= iInterfacePath %><%= iInterfaceName %>.<%= headerFileSuffix %>>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceInheritedDeclarations.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceInheritedDeclarations.util.jet
new file mode 100644
index 00000000000..b2528ccac0f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfaceInheritedDeclarations.util.jet
@@ -0,0 +1,49 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Classifier org.eclipse.uml2.uml.Generalization java.util.Iterator Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppInterfaceInheritedDeclarations"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the interface
+ Classifier currentClass = (Classifier) argument;
+ String decl = "";
+ String visibility = "";
+
+ // Get generalization and implementation relationships
+ Iterator<Generalization> genIt = currentClass.getGeneralizations().iterator();
+
+ // Parse generalizations
+ while (genIt.hasNext()) {
+
+ Generalization currentGen = genIt.next();
+
+ visibility = GenUtils.getVisibility(currentGen);
+
+ // If not <NoCodeGen>
+ Classifier tmpClassifier = currentGen.getGeneral();
+ if (!GenUtils.hasStereotype(tmpClassifier, CppNoCodeGen.class)) {
+
+ String targetName = tmpClassifier.getName();
+
+ if (!decl.equals("")) {
+ decl = decl + ", ";
+ }
+ decl = decl+visibility+" "+targetName;
+ }
+ }
+
+ // ":" only if decl not empty
+ String prefix = "";
+ if (!decl.equals("")) {
+ prefix = ": ";
+ visibility = "public ";
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= prefix %><%= decl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfacePublicOperationsDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfacePublicOperationsDeclaration.util.jet
new file mode 100644
index 00000000000..0867efce3b5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/interface/CppInterfacePublicOperationsDeclaration.util.jet
@@ -0,0 +1,34 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Interface org.eclipse.uml2.uml.Operation org.eclipse.uml2.uml.VisibilityKind java.util.* Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppInterfacePublicOperationsDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Interface currentInterface = (Interface) argument;
+ String opDecl = "";
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentInterface.getOwnedOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOperation = operations.next();
+ if ((currentOperation.getVisibility() == VisibilityKind.PUBLIC_LITERAL) &&
+ !GenUtils.hasStereotype (currentOperation, CppNoCodeGen.class)) {
+ CppOperationDeclaration jetOpDecl = new CppOperationDeclaration();
+ String cOpDecl = jetOpDecl.generate(currentOperation);
+
+ // if main cOpDecl = "";
+ if (!cOpDecl.equals("")) {
+ opDecl = opDecl+"\t"+cOpDecl+";";
+ }
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= opDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationDeclaration.util.jet
new file mode 100644
index 00000000000..0498b6ddd1c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationDeclaration.util.jet
@@ -0,0 +1,96 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* org.eclipse.papyrus.cpp.codegen.jet.doc.* Cpp.* org.eclipse.papyrus.cpp.codegen.StdStereo org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppOperationDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+
+ String operationName = currentOperation.getName();
+
+ String opParameters = "";
+
+ String returnTypeName = "void";
+ String pVirtualSuffix = "";
+ String prefix = "";
+ String constOp = "";
+
+
+ String opDoc = "";
+
+ // Doc for the template
+ CppOperationDoc jDoc = new CppOperationDoc();
+ opDoc = GenUtils.indent (jDoc.generate(currentOperation), "\t");
+
+ // Prepare return type
+ CppOperationReturnType jetRT = new CppOperationReturnType();
+ returnTypeName = jetRT.generate(currentOperation);
+ if (!returnTypeName.equals ("")) {
+ returnTypeName += " ";
+ }
+
+ boolean isInterface = currentOperation.getOwner () instanceof Interface;
+
+ // Static attribute
+ if (currentOperation.isStatic()) {
+ prefix = prefix+"static"+" ";
+ }
+
+ // Inline attribute
+ if (GenUtils.hasStereotype(currentOperation, CppInline.class)) {
+ prefix = prefix+"inline"+" ";
+ }
+
+ // Creator / Destructor: use function within StdStereo
+ if (StdStereo.isApplied(currentOperation, StdStereo.create)) {
+ returnTypeName = "";
+ }
+ if (StdStereo.isApplied(currentOperation, StdStereo.destroy)) {
+ returnTypeName = "";
+ operationName = "~"+operationName;
+ }
+
+ // Const attribute on operation
+ if (GenUtils.hasStereotype(currentOperation, CppConst.class)) {
+ constOp = " const";
+ }
+
+ // Virtual attribute on operation
+ if (GenUtils.hasStereotype(currentOperation, CppVirtual.class)) {
+ prefix = "virtual "+prefix;
+ }
+
+ // Pure Virtual attribute on operation
+ if (isInterface || currentOperation.isAbstract ()) {
+ prefix = "virtual "+prefix;
+ pVirtualSuffix = " = 0";
+ }
+
+ // Friend attribute on operation
+ if (GenUtils.hasStereotype(currentOperation, CppFriend.class)) {
+ prefix = "friend "+prefix;
+ }
+
+ // Prepare parameters
+ CppOperationParameters jetParams = new CppOperationParameters();
+ opParameters = jetParams.generate(currentOperation);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template only if current operation is not main
+// else nothing is return...
+//////////////////////////////////////////////////////////////////////////////////////////
+
+if (!operationName.equals("main")) {
+
+//////////////////////////////////////////////////////////////////////////////////////////%>
+
+<%= opDoc %>
+ <%= prefix %><%= returnTypeName %><%= operationName %>(<%= opParameters %>)<%= constOp %><%= pVirtualSuffix %>
+<%//////////////////////////////////////////////////////////////////////////////////////////
+} // else nothing done
+//////////////////////////////////////////////////////////////////////////////////////////%> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationImplementation.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationImplementation.util.jet
new file mode 100644
index 00000000000..b7761341a77
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationImplementation.util.jet
@@ -0,0 +1,99 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* org.eclipse.papyrus.cpp.codegen.jet.doc.* Cpp.* org.eclipse.papyrus.cpp.codegen.StdStereo org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppOperationImplementation"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+
+ String body = "";
+ String className = "";
+ String operationName = currentOperation.getName();
+ String opParameters = "";
+ String returnTypeName = "void";
+ String isInline = "";
+ String isConst = "";
+ String constInit = "";
+
+ String opDoc = "";
+
+ // Doc for the template
+ CppOperationDoc jDoc = new CppOperationDoc();
+ opDoc = jDoc.generate(currentOperation);
+
+ // Retrieve class name. Operation may belong to a class or datatype, thus use
+ // generic getOwner function
+ Element opOwner = currentOperation.getOwner();
+ className = (opOwner instanceof NamedElement) ? ((NamedElement) opOwner).getName() : "";
+
+ // Retrieve body content
+ body = GenUtils.getBody (currentOperation, "C/C++");
+
+ // Prepare return type
+ CppOperationReturnType jetRT = new CppOperationReturnType();
+ returnTypeName = jetRT.generate(currentOperation);
+
+ // Creator / Destructor: use function within StdStereo
+ if (StdStereo.isApplied(currentOperation, StdStereo.create)) {
+ returnTypeName = "";
+ }
+ if (StdStereo.isApplied(currentOperation, StdStereo.destroy)) {
+ returnTypeName = "";
+ operationName = "~"+operationName;
+ }
+
+ // If is inline operation
+ if (GenUtils.hasStereotype(currentOperation, CppInline.class)) {
+ isInline = "inline ";
+ }
+
+ // Const op
+ if (GenUtils.hasStereotype(currentOperation, CppConst.class)) {
+ isConst = " const";
+ }
+
+ // Constructor init list
+ CppConstInit cppConstInit = GenUtils.getApplication(currentOperation, CppConstInit.class);
+ if ((cppConstInit != null)
+ && StdStereo.isApplied(currentOperation, StdStereo.create)) {
+ constInit = " : " + cppConstInit.getInitialisation();
+ }
+
+ // Prepare parameters
+ CppOperationParametersWithoutDefaultValue jetParams = new CppOperationParametersWithoutDefaultValue();
+ opParameters = jetParams.generate(currentOperation);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template two cases main operation or classical
+//////////////////////////////////////////////////////////////////////////////////////////
+
+// main
+ if (operationName.equals("main")) {
+
+//////////////////////////////////////////////////////////////////////////////////////////%>
+
+<%= opDoc %>
+<%= returnTypeName %> <%= operationName %> (<%= opParameters %>) {
+<%= body %>
+}
+
+<%//////////////////////////////////////////////////////////////////////////////////////////
+
+ }
+ else {
+
+//////////////////////////////////////////////////////////////////////////////////////////%>
+
+<%= opDoc %>
+<%= isInline %><%= returnTypeName %> <%= className %>::<%= operationName %>(<%= opParameters %>)<%= isConst %><%= constInit %> {
+<%= body %>
+}
+
+<%//////////////////////////////////////////////////////////////////////////////////////////
+ }
+//////////////////////////////////////////////////////////////////////////////////////////%> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationParameters.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationParameters.util.jet
new file mode 100644
index 00000000000..00858e02574
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationParameters.util.jet
@@ -0,0 +1,35 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.*"
+ class = "CppOperationParameters"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+ Parameter currentParameter;
+
+ String paramDecl = "";
+
+ Iterator<Parameter> parameters = currentOperation.getOwnedParameters().iterator();
+ while(parameters.hasNext()) {
+ currentParameter = parameters.next();
+ if (currentParameter.getDirection () != ParameterDirectionKind.RETURN_LITERAL) {
+ // Prepare parameters
+ CppParameter jetParam = new CppParameter();
+ if (!paramDecl.equals("")) {
+ paramDecl += ", ";
+ }
+ paramDecl = paramDecl+jetParam.generate(currentParameter);
+ }
+ }
+
+ paramDecl.replaceAll(NL, "");
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+%><%= paramDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationParametersWithoutDefaultValue.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationParametersWithoutDefaultValue.util.jet
new file mode 100644
index 00000000000..9cc336e09c7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationParametersWithoutDefaultValue.util.jet
@@ -0,0 +1,33 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.*"
+ class = "CppOperationParametersWithoutDefaultValue"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+ Parameter currentParameter;
+
+ String paramDecl = "";
+
+ Iterator<Parameter> parameters = currentOperation.getOwnedParameters().iterator();
+ while(parameters.hasNext()) {
+ currentParameter = parameters.next();
+ if (currentParameter.getDirection () != ParameterDirectionKind.RETURN_LITERAL) {
+ // Prepare parameters
+ CppParameterWithoutDefaultValue jetParam = new CppParameterWithoutDefaultValue();
+ if (!paramDecl.equals("")) {
+ paramDecl += ", ";
+ }
+ paramDecl = paramDecl+jetParam.generate(currentParameter);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+%><%= paramDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationReturnType.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationReturnType.util.jet
new file mode 100644
index 00000000000..5c776417ef8
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationReturnType.util.jet
@@ -0,0 +1,76 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* org.eclipse.uml2.uml.Class Cpp.* org.eclipse.papyrus.cpp.codegen.utils.*"
+ class = "CppOperationReturnType"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+
+ String returnTypeName = "void";
+ String ownerName = "";
+ Modifier modifier = new Modifier();
+
+ // Return type
+ if (currentOperation.getType() == null) {
+ returnTypeName = "void";
+ } else {
+ if (currentOperation.getType() == null) {
+ returnTypeName = "undefined";
+ } else {
+ // Treat the type if it is not "package visibility" and owned by a class
+ Type currentType = currentOperation.getType();
+ returnTypeName = GenUtils.qualifiedName (currentType);
+
+ if (currentType.getVisibility() != VisibilityKind.PACKAGE_LITERAL) {
+ if (currentType.getOwner() instanceof Class) {
+ ownerName = ((Class) currentType.getOwner()).getName();
+ }
+ }
+ }
+
+ // Treat pointer or ref on return parameter (only one return parameter should exists)
+ // retrieve return parameter
+// RS: changed test: now getReturnResult returns only one param
+// if (currentOperation.getUml2Operation().getReturnResults().size() == 1) {
+// org.eclipse.uml2.uml.Parameter uml2Param
+// = (org.eclipse.uml2.uml.Parameter) currentOperation.getUml2Operation().getReturnResults().get(0);
+// Parameter currentRParameter
+// = new Parameter(uml2Param);
+// // case Pointer
+// if (currentRParameter.hasStereotype(xy, CppPtr.class)) {
+// isPointer = " "+currentRParameter.getTaggedValue(CppPtr.class, "declaration");
+// }
+// if (currentRParameter.hasStereotype(xy, CppRef.class)) {
+// isRef = " "+currentRParameter.getTaggedValue(CppRef.class, "declaration");
+// }
+// if (currentRParameter.hasStereotype(xy, CppConst.class_)) {
+// isConst = "const ";
+// }
+// }
+ if (currentOperation.getReturnResult() instanceof Parameter) {
+ Parameter uml2Param = (Parameter) currentOperation.getReturnResult();
+ modifier = new Modifier(uml2Param);
+ }
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template two cases : scope required or not
+//////////////////////////////////////////////////////////////////////////////////////////
+
+// No scope details
+ if (ownerName.equals("")) {
+//////////////////////////////////////////////////////////////////////////////////////////
+%><%= modifier.isConst %><%= returnTypeName %><%= modifier.ptr %><%= modifier.ref %>
+<%//////////////////////////////////////////////////////////////////////////////////////////
+} else {
+//////////////////////////////////////////////////////////////////////////////////////////
+%><%= modifier.isConst %><%= ownerName %>::<%= returnTypeName %><%= modifier.ptr %><%= modifier.ref %>
+<%//////////////////////////////////////////////////////////////////////////////////////////
+}
+//////////////////////////////////////////////////////////////////////////////////////////%> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationTemplateImplementation.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationTemplateImplementation.util.jet
new file mode 100644
index 00000000000..a7dde0e50da
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/operation/CppOperationTemplateImplementation.util.jet
@@ -0,0 +1,90 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* org.eclipse.uml2.uml.Class Cpp.* org.eclipse.papyrus.cpp.codegen.StdStereo org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppOperationTemplateImplementation"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Operation
+ Operation currentOperation = (Operation) argument;
+
+ String operationName = currentOperation.getName();
+ String opParameters = "";
+ String returnTypeName = "void";
+ String isConst = "";
+ String isInline = "";
+
+ // Retrieve class & class name
+ Class currentClass = currentOperation.getClass_ ();
+ String className = currentClass.getName();
+
+ // Retrieve body content
+ String body = GenUtils.getBody (currentOperation, "C/C++");
+
+ // Prepare return type
+ CppOperationReturnType jetRT = new CppOperationReturnType();
+ returnTypeName = jetRT.generate(currentOperation);
+ if (! "".equals(returnTypeName)) {
+ returnTypeName = returnTypeName + " ";
+ }
+
+ // Creator / Destructor: use function within StdStereo
+ if (StdStereo.isApplied(currentOperation, StdStereo.create)) {
+ returnTypeName = "";
+ }
+ if (StdStereo.isApplied(currentOperation, StdStereo.destroy)) {
+ returnTypeName = "";
+ operationName = "~"+operationName;
+ }
+
+ // If inline operation
+ if (GenUtils.hasStereotype(currentOperation, CppInline.class)) {
+ isInline = "inline ";
+ }
+
+ // Const op
+ if (GenUtils.hasStereotype(currentOperation, CppConst.class)) {
+ isConst = " const";
+ }
+
+ // Prepare parameters
+ CppOperationParametersWithoutDefaultValue jetParams
+ = new CppOperationParametersWithoutDefaultValue();
+ opParameters = jetParams.generate(currentOperation);
+
+
+ // Prepare template parameter declaration without type
+ String tparamWoType = "";
+
+ if (currentClass != null) {
+ tparamWoType = GenUtils.getTemplateParametersWoType(currentClass);
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+// Package visibility
+ if (currentOperation.getVisibility() == VisibilityKind.PACKAGE_LITERAL) {
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+%><%= isInline %><%= returnTypeName %><%= operationName %>(<%= opParameters %>)<%= isConst %> {
+<%= body %>
+}<%
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ } else { // Default case
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+%><%= isInline %><%= returnTypeName %><%= className %><<%= tparamWoType %>>::<%= operationName %>(<%= opParameters %>)<%= isConst %> {
+<%= body %>
+}<%
+
+//////////////////////////////////////////////////////////////////////////////////////////
+ }
+//////////////////////////////////////////////////////////////////////////////////////////%> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/package/CppOwnerPackageIncludeDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/package/CppOwnerPackageIncludeDeclaration.util.jet
new file mode 100644
index 00000000000..bd5a5d8dfb0
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/package/CppOwnerPackageIncludeDeclaration.util.jet
@@ -0,0 +1,40 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Package org.eclipse.papyrus.cpp.codegen.Activator Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppOwnerPackageIncludeDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the type passed as argument
+ Package currentPkg = (Package) argument;
+ String currentPkgName = currentPkg.getName();
+ String currentPkgPath = GenUtils.getFullPath (currentPkg);
+
+ // Retrieve header file suffix
+ String headerFileSuffix = Activator.getDefault().getPluginPreferences().getString("headSuffix");
+
+ // Prepare Father include declaration
+ boolean isRoot = false;
+
+ // The currentElt has the CppRoot stereotype
+ if (GenUtils.hasStereotype(currentPkg, CppRoot.class)) {
+ isRoot = true;
+ }
+ // The currentPkg is the model root package
+ //if (currentPkg instanceof org.eclipse.uml2.uml.Model){
+ // isRoot = true;
+ //}
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<% // if currentPkg is not root it is referenced here
+ if (!isRoot) { %>
+/* Owner package header include */
+#include <<%= currentPkgPath %>/Pkg_<%= currentPkgName %>.<%= headerFileSuffix %>>
+<% // endif
+ } %>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/parameter/CppParameter.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/parameter/CppParameter.util.jet
new file mode 100644
index 00000000000..78d0d60c020
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/parameter/CppParameter.util.jet
@@ -0,0 +1,36 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Parameter Cpp.* org.eclipse.papyrus.cpp.codegen.utils.Modifier org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppParameter"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Parameter
+ Parameter currentParameter = (Parameter) argument;
+
+ String parameterName = currentParameter.getName();
+
+ String typeName = "";
+ String suffix = "";
+ Modifier modifier = new Modifier(currentParameter);
+
+ if (currentParameter.getType() == null) {
+ typeName = "undefined";
+ } else {
+ typeName = GenUtils.qualifiedName (currentParameter.getType());
+ }
+
+ // Initial value
+ CppDefault cppDefault = GenUtils.getApplication(currentParameter, CppDefault.class);
+ if (cppDefault != null) {
+ suffix = " = " + cppDefault.getValue();
+ }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+%><%= modifier.isConst %><%= typeName %><%= modifier.ptr %><%= modifier.ref %> <%= parameterName %><%= modifier.array %><%= suffix %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/parameter/CppParameterWithoutDefaultValue.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/parameter/CppParameterWithoutDefaultValue.util.jet
new file mode 100644
index 00000000000..95862d64632
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/parameter/CppParameterWithoutDefaultValue.util.jet
@@ -0,0 +1,56 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Parameter org.eclipse.uml2.uml.Classifier Cpp.* org.eclipse.papyrus.cpp.codegen.utils.Modifier org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppParameterWithoutDefaultValue"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the Parameter
+ Parameter currentParameter = (Parameter) argument;
+
+ String parameterName = currentParameter.getName();
+
+ String typeName = "";
+ Modifier modifier = new Modifier(currentParameter);
+
+ // Prepare template parameter declaration without type
+ String tparamWoType = "";
+
+ if (currentParameter.getType() == null) {
+ typeName = "undefined";
+ }
+ else if (currentParameter.getType() instanceof Classifier) {
+ Classifier classifier = (Classifier) currentParameter.getType();
+ tparamWoType = GenUtils.getTemplateParametersWoType(classifier);
+
+ typeName = GenUtils.qualifiedName (currentParameter.getType());
+ }
+ else {
+ typeName = GenUtils.qualifiedName (currentParameter.getType());
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+// Package visibility
+ if (!"".equals(tparamWoType)) {
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+%><%= modifier.isConst %><%= typeName %><<%= tparamWoType %>><%= modifier.ptr %><%= modifier.ref %> <%= parameterName %><%= modifier.array %><%
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ } else { // Default case
+
+//////////////////////////////////////////////////////////////////////////////////////////
+
+%><%= modifier.isConst %><%= typeName %><%= modifier.ptr %><%= modifier.ref %> <%= parameterName %><%= modifier.array %><%
+
+
+//////////////////////////////////////////////////////////////////////////////////////////
+ }
+//////////////////////////////////////////////////////////////////////////////////////////%> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppAttributeDeclaration.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppAttributeDeclaration.util.jet
new file mode 100644
index 00000000000..58c5fc97a71
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppAttributeDeclaration.util.jet
@@ -0,0 +1,78 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Property org.eclipse.papyrus.cpp.codegen.jet.doc.* Cpp.* org.eclipse.papyrus.cpp.codegen.utils.*"
+ class = "CppAttributeDeclaration"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the property
+ Property currentAttribute = (Property) argument;
+
+ String attributeName = currentAttribute.getName();
+ String typeName = "";
+ String prefix = "";
+ String suffix = "";
+ String multiple = "";
+
+ // For property documentation
+ String propDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+ propDoc = jDoc.generate(currentAttribute);
+ propDoc = propDoc.replaceAll(NL, NL+" ");
+
+ if (currentAttribute.getType() == null) {
+ typeName = "undefined";
+ } else {
+ typeName = GenUtils.qualifiedName (currentAttribute.getType());
+ }
+
+ // Static attribute
+ if (currentAttribute.isStatic()) {
+ prefix = "static"+" ";
+ }
+
+ Modifier modifier = new Modifier(currentAttribute);
+
+ // Treat multiplicity for association attributes
+ int multiplicity = currentAttribute.getUpper();
+ if (multiplicity == 1) {
+ multiple = "";
+ } else if (multiplicity == -1) {
+ multiple = "*";
+ } else {
+ multiple = "";
+ modifier.array = "[" + multiplicity + "]";
+ }
+
+ // If attribute is aggregation
+ if (GenUtils.isAggregation(currentAttribute)) {
+ // attributeName = "(*"+attributeName+")"; // this produce a pointer on a tab
+ attributeName = "*"+attributeName; // this produce a tab of pointers
+ }
+
+
+ if (GenUtils.hasStereotype(currentAttribute, CppConst.class) && currentAttribute.isStatic()) {
+ // const & static attributes may be initialized within class declaration
+ // check if initial value UML or profile
+ if (currentAttribute.getDefaultValue() != null) {
+ suffix = " = " + currentAttribute.getDefaultValue().stringValue();
+ }
+ else {
+ CppDefault cppDefault = GenUtils.getApplication(currentAttribute, CppDefault.class);
+ if (cppDefault != null) {
+ suffix = " = " + cppDefault.getValue();
+ }
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+
+ <%= propDoc %>
+ <%= prefix %><%= modifier.isConst %><%= typeName %><%= multiple %><%= modifier.ptr %><%= modifier.ref %> <%= attributeName %><%= modifier.array %><%= suffix %>; \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppAttributeImplementation.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppAttributeImplementation.util.jet
new file mode 100644
index 00000000000..2980c4fee83
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppAttributeImplementation.util.jet
@@ -0,0 +1,58 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* org.eclipse.papyrus.cpp.codegen.jet.doc.* Cpp.* org.eclipse.papyrus.cpp.codegen.utils.*"
+ class = "CppAttributeImplementation"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the property
+ Property currentAttribute = (Property) argument;
+
+ String attributeName = currentAttribute.getName();
+// String className = currentAttribute.getOwner().getName();
+ String typeName = "";
+ String scopeName = "";
+// String prefix = "";
+ String suffix = "";
+ String multiple = "";
+
+ // For property documentation
+ String propDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+ propDoc = jDoc.generate(currentAttribute);
+ propDoc = propDoc.replaceAll(NL, NL+" ");
+
+ if (currentAttribute.getType() == null) {
+ typeName = "undefined";
+ }
+ else {
+ Type type = currentAttribute.getType();
+ typeName = GenUtils.qualifiedName (type);
+ /*
+ // If type is owned by a class add the scope
+ if (type.getOwner() instanceof Class) {
+ scopeName = ((Class) type.getOwner()).getName();
+ typeName = scopeName+"::"+typeName;
+ }
+ */
+ }
+
+ // Multiple
+ // TODO? need to evaluate limitMultiplicity stereotype?
+ int upper = currentAttribute.getUpper();
+ if ((upper == -1) || (upper > 1)) {
+ multiple = "*";
+ }
+
+ Modifier modifier = new Modifier(currentAttribute);
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+ <%= propDoc %>
+ <%= typeName %><%= multiple %><%= modifier.ptr %><%= modifier.ref %> <%= attributeName %><%= modifier.array %><%= suffix %>;
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppClassAttributesImplementation.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppClassAttributesImplementation.util.jet
new file mode 100644
index 00000000000..634b097bbb1
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppClassAttributesImplementation.util.jet
@@ -0,0 +1,37 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* java.util.Iterator Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppClassAttributesImplementation"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Classifier currentClass = (Classifier) argument;
+ String attrDecl = "";
+ String attrSDecl = "";
+
+ CppAttributeImplementation jetAttDecl = new CppAttributeImplementation();
+ CppStaticAttributeImplementation jetSAttDecl = new CppStaticAttributeImplementation();
+
+ Iterator<Property> attributesIt = currentClass.getAttributes().iterator();
+ while (attributesIt.hasNext()) {
+ Property attribute = (Property) attributesIt.next();
+
+ // just check that this property is not a static const
+ // in that case it declared and defined in the header file
+
+ // Static
+ if (attribute.isStatic()) {
+ attrSDecl = attrSDecl+jetSAttDecl.generate(attribute);
+ } else {
+ attrDecl = attrDecl+jetAttDecl.generate(attribute);
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= attrSDecl %><%= attrDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppStaticAttributeImplementation.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppStaticAttributeImplementation.util.jet
new file mode 100644
index 00000000000..aafed1f9c64
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/property/CppStaticAttributeImplementation.util.jet
@@ -0,0 +1,56 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.* Cpp.* org.eclipse.papyrus.cpp.codegen.utils.*"
+ class = "CppStaticAttributeImplementation"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the property
+ Property currentAttribute = (Property) argument;
+
+ String attributeName = currentAttribute.getName();
+ String className = GenUtils.qualifiedName (currentAttribute.getClass_());
+ String typeName = "";
+ String suffix = "";
+ String multiple = "";
+ String isAgg = ""; // attribute is an aggregation or association
+
+
+ if (currentAttribute.getType() == null) {
+ typeName = "undefined"+" ";
+ } else {
+ typeName = GenUtils.qualifiedName (currentAttribute.getType()) + " ";
+ }
+
+ // Multiple
+ // if (currentAttribute.isMultiple()) {
+ // multiple = "*";
+ // }
+
+ // If attribute is aggregation then generate a pointer
+ if (GenUtils.isAggregation(currentAttribute)) {
+ // attributeName = "(*"+attributeName+")"; // this produce a pointer on a tab
+ isAgg = "*"; // this produce a tab of pointers
+ }
+
+ Modifier modifier = new Modifier(currentAttribute);
+
+ // Initial value
+ if (currentAttribute.getDefaultValue() != null) {
+ // via UML
+ suffix = " = " + currentAttribute.getDefaultValue().stringValue();
+ }
+ else {
+ CppDefault cppDefault = GenUtils.getApplication(currentAttribute, CppDefault.class);
+ if (cppDefault != null) {
+ suffix = " = " + cppDefault.getValue();
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= typeName %><%= multiple %><%= modifier.ptr %><%= isAgg %><%= modifier.ref %><%= className %>::<%= attributeName %><%= modifier.array %><%= suffix %>;
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateBindingParameter.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateBindingParameter.util.jet
new file mode 100644
index 00000000000..ed41e210f5c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateBindingParameter.util.jet
@@ -0,0 +1,35 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.*"
+ class = "CppTemplateBindingParameter"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve the TemplateParameter
+ // Retrieve the TemplateParameter
+ TemplateParameterSubstitution currentTParam = (TemplateParameterSubstitution) argument;
+
+ String typeName = "";
+
+ if (currentTParam.getActual() == null) {
+ typeName ="param undefined";
+ }
+ else {
+ ParameterableElement actual = currentTParam.getActual();
+
+ if (actual instanceof LiteralInteger) {
+ typeName = "" + ((LiteralInteger) currentTParam.getActual()).getValue();
+ }
+ else {
+ typeName = ((NamedElement) currentTParam.getActual()).getName();
+ } // value = currentTParam.getFormal().getParameteredElement().getName();
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+%><%= typeName %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateDeclaration.h.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateDeclaration.h.jet
new file mode 100644
index 00000000000..c76b40afb08
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateDeclaration.h.jet
@@ -0,0 +1,33 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.Class org.eclipse.uml2.uml.TemplateParameter java.util.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppTemplateDeclaration"
+ %>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Class currentClass = (Class) argument;
+
+
+ // Prepare template parameter declaration
+ Iterator<TemplateParameter> tparam = GenUtils.getTemplateParameters(currentClass).iterator();
+ String tParamDecl = "";
+
+ while(tparam.hasNext()) {
+ TemplateParameter currentTParam = tparam.next();
+
+ CppTemplateParameter jetTParam = new CppTemplateParameter();
+ tParamDecl = tParamDecl+jetTParam.generate(currentTParam);
+
+ if (tparam.hasNext()) {
+ tParamDecl = tParamDecl+", ";
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+%>template <<%= tParamDecl %>> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateInlineOperationsImplementation.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateInlineOperationsImplementation.util.jet
new file mode 100644
index 00000000000..146deefca76
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateInlineOperationsImplementation.util.jet
@@ -0,0 +1,42 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.papyrus.cpp.codegen.jet.doc.* org.eclipse.uml2.uml.Class org.eclipse.uml2.uml.Operation java.util.Iterator Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppTemplateInlineOperationsImplementation"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the class
+ Class currentClass = (Class) argument;
+ String opDecl = "";
+ String tDecl = "";
+
+ // Retrieve template declaration
+ CppTemplateDeclaration jetTDecl = new CppTemplateDeclaration();
+ // tDecl should contain something like "template <class x, class y>"
+ tDecl = jetTDecl.generate(currentClass) + " ";
+
+ // Retrieve operations
+ Iterator<Operation> operations = currentClass.getOwnedOperations().iterator();
+ while (operations.hasNext()) {
+ Operation currentOperation = operations.next();
+
+ if (GenUtils.hasStereotype (currentOperation, CppInline.class) &&
+ !GenUtils.hasStereotype (currentOperation, CppNoCodeGen.class)) {
+ String opDoc = "";
+
+ // Doc for the template
+ CppOperationDoc jDoc = new CppOperationDoc();
+ opDoc = jDoc.generate(currentOperation);
+
+ CppOperationTemplateImplementation jetOpImpl = new CppOperationTemplateImplementation();
+ opDecl = opDecl+opDoc+NL+tDecl+jetOpImpl.generate(currentOperation)+NL;
+ }
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+%><%= opDecl %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateParameter.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateParameter.util.jet
new file mode 100644
index 00000000000..925439208bb
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/template/CppTemplateParameter.util.jet
@@ -0,0 +1,34 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils org.eclipse.uml2.uml.TemplateParameter"
+ class = "CppTemplateParameter"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+
+ // Retrieve the TemplateParameter
+ TemplateParameter currentTParam = (TemplateParameter) argument;
+
+ String parameterName = "";
+ String typeName = "";
+
+
+ if (GenUtils.getType(currentTParam) == "") {
+ typeName = "undefined";
+ } else {
+ typeName = GenUtils.getType(currentTParam); //.getName();
+ }
+
+ // Retrieve name under stereotype CppTemplateParameter/name
+ Cpp.CppTemplateParameter ctp = GenUtils.getApplication(currentTParam, Cpp.CppTemplateParameter.class);
+ if (ctp != null) {
+ parameterName = ctp.getName();
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////
+%><%= typeName %> <%= parameterName %> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/type/CppPrimitiveTypeDefinition.util.jet b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/type/CppPrimitiveTypeDefinition.util.jet
new file mode 100644
index 00000000000..ce6419b204f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.codegen/templates/util/type/CppPrimitiveTypeDefinition.util.jet
@@ -0,0 +1,53 @@
+<%@ jet package = "org.eclipse.papyrus.cpp.codegen.jet.util"
+ skeleton = "../../generator.skeleton"
+ imports = "org.eclipse.uml2.uml.PrimitiveType org.eclipse.papyrus.cpp.codegen.jet.doc.* Cpp.* org.eclipse.papyrus.cpp.codegen.utils.GenUtils"
+ class = "CppPrimitiveTypeDefinition"
+%>
+<%
+//////////////////////////////////////////////////////////////////////////////////////////
+// Java preparation
+//////////////////////////////////////////////////////////////////////////////////////////
+
+ // Retrieve the type passed as argument
+ PrimitiveType currentPType = (PrimitiveType) argument;
+ String currentPTypeName = currentPType.getName();
+ String definition = "";
+
+ // Doc
+ String typeDoc = "";
+
+ // Retrieve enum doc
+ CppElementDoc jDoc = new CppElementDoc();
+
+ /**
+ * Support two different kinds of primitive types
+ * (1) those that are native types of the programming language such as long
+ * For these, no additional definition has to be done and they should be referenced
+ * with their name only
+ * (2) those that correspond to a typedef (e.g. typedef long ErrorType). These require
+ * a typedef definition within the package and need to be referenced with their
+ * fully qualified name (e.g. MyPackage::ErrorType)
+ */
+ // Retrieve type definition
+ CppType cppType = GenUtils.getApplication(currentPType, CppType.class);
+ if (cppType != null) {
+ typeDoc = jDoc.generate(currentPType);
+ definition = "typedef " + cppType.getDefinition();
+
+ // If definition string contains "typeName" it should be replaced with type name...
+ if (definition.indexOf("typeName") != -1) {
+ definition = definition.replaceAll("typeName", currentPTypeName);
+ } else {
+ definition = definition + " " + currentPTypeName;
+ }
+ definition = definition + ";";
+ }
+ else {
+ definition = GenUtils.getStdtypes(currentPType);
+ }
+
+//////////////////////////////////////////////////////////////////////////////////////////
+// The following part contains the template
+//////////////////////////////////////////////////////////////////////////////////////////%>
+<%= typeDoc %>
+<%= definition %>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/.classpath b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/.project b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/.project
new file mode 100644
index 00000000000..1d8b98f86c4
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.cpp.profile</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/META-INF/MANIFEST.MF b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ae5d753db1d
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.cpp.profile;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.cpp.profile.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.uml2.uml;bundle-version="3.1.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Export-Package: Cpp,
+ Cpp.impl,
+ Cpp.util,
+ org.eclipse.papyrus.cpp.profile
+Bundle-Localization: plugin
+
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/about.html b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/build.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/build.properties
new file mode 100644
index 00000000000..e962c668873
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/build.properties
@@ -0,0 +1,11 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ profiles/,\
+ libraries/,\
+ icons/,\
+ about.html,\
+ plugin.properties
+src.includes = about.html
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/icons/transfo_cpp.gif b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/icons/transfo_cpp.gif
new file mode 100644
index 00000000000..7caaa0fdae8
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/icons/transfo_cpp.gif
Binary files differ
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.di b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.di
new file mode 100644
index 00000000000..27d5dafd653
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.di
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="AnsiCLibrary.notation#_r0SgwOmIEeG_gcDHG3asaQ"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="AnsiCLibrary.notation#_r0SgwOmIEeG_gcDHG3asaQ"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.notation b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.notation
new file mode 100644
index 00000000000..039e96e9c0b
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.notation
@@ -0,0 +1,348 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_r0SgwOmIEeG_gcDHG3asaQ" type="PapyrusUMLClassDiagram" name="AnsiC" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_txw6EOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tyJ7oOmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tyJ7oemIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tyJ7oumIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tyJ7o-mIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tyKisOmIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tyKisemIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tyM-8OmIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_txw6EemIEeG_gcDHG3asaQ" x="45" y="99"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_t56wgOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t56wgumIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t57XkOmIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t57XkemIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t57XkumIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t57Xk-mIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t57XlOmIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t57XlemIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t56wgemIEeG_gcDHG3asaQ" x="171" y="171"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_t_tPcOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t_t2gOmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t_t2gemIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t_udkOmIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t_udkemIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t_udkumIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t_udk-mIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t_udlOmIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t_tPcemIEeG_gcDHG3asaQ" x="45" y="171"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uE_YEOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uE__IOmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uE__IemIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uE__IumIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uE__I-mIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uE__JOmIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uE__JemIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uE__JumIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uE_YEemIEeG_gcDHG3asaQ" x="45" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uJrDwOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uJrq0emIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uJrq0umIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uJsR4OmIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uJsR4emIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uJsR4umIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uJsR4-mIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uJsR5OmIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uJrq0OmIEeG_gcDHG3asaQ" x="45" y="27"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uOhukOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uOiVoOmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uOiVoemIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uOiVoumIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uOiVo-mIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uOiVpOmIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uOiVpemIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uOiVpumIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uOhukemIEeG_gcDHG3asaQ" x="45" y="396"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uSY64OmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uSZh8OmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uSZh8emIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uSZh8umIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uSZh8-mIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uSZh9OmIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uSZh9emIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uSZh9umIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_DLNPkByeEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uSY64emIEeG_gcDHG3asaQ" x="297" y="171"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uV6I8OmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uV6wAOmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uV6wAemIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uV6wAumIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uV6wA-mIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uV6wBOmIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uV6wBemIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uV6wBumIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_K-lFQByeEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uV6I8emIEeG_gcDHG3asaQ" x="45" y="252"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uZYTsOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uZY6wOmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uZY6wemIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uZY6wumIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uZY6w-mIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uZY6xOmIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uZY6xemIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uZY6xumIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uZYTsemIEeG_gcDHG3asaQ" x="171" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uc13YOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uc13YumIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uc2ecOmIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uc2ecemIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uc2ecumIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uc2ec-mIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uc2edOmIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uc2edemIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_V5vyUByeEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uc13YemIEeG_gcDHG3asaQ" x="171" y="252"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uf0S4OmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uf058OmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uf058emIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uf058umIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uf058-mIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uf059OmIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uf059emIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uf059umIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uf0S4emIEeG_gcDHG3asaQ" x="171" y="99"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ujIsoOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ujJTsOmIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ujJTsemIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ujJTsumIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ujJTs-mIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ujJTtOmIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ujJTtemIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ujJTtumIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ujIsoemIEeG_gcDHG3asaQ" x="171" y="396"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_umgJsOmIEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_umgJsumIEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_umgJs-mIEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_umgwwOmIEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_umgwwemIEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_umgwwumIEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_umgww-mIEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_umgwxOmIEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_umgJsemIEeG_gcDHG3asaQ" x="45" y="468"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V3vUcOmJEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V3wikOmJEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V3wikemJEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V3wikumJEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V3wik-mJEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V3wilOmJEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V3wilemJEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V3wilumJEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_V3dAkOmJEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V3vUcemJEeG_gcDHG3asaQ" x="482" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Y4Nb0OmJEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y4OC4OmJEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y4OC4emJEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y4OC4umJEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y4OC4-mJEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y4OC5OmJEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y4OC5emJEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y4OC5umJEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_Y3550OmJEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y4Nb0emJEeG_gcDHG3asaQ" x="648" y="324"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yJ0C8OmJEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yJ0qAOmJEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yJ0qAemJEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yJ0qAumJEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yJ0qA-mJEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yJ0qBOmJEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yJ0qBemJEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yJ0qBumJEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_yJpD0OmJEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yJ0C8emJEeG_gcDHG3asaQ" x="483" y="396"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1rBf4OmJEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1rBf4umJEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1rCG8OmJEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1rCG8emJEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1rCG8umJEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1rCG8-mJEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1rCG9OmJEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1rCG9emJEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_1q1SoOmJEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1rBf4emJEeG_gcDHG3asaQ" x="648" y="396"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6hSrQOmJEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6hSrQumJEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6hSrQ-mJEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6hSrROmJEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6hSrRemJEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6hTSUOmJEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6hTSUemJEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6hTSUumJEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_6hHFEOmJEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6hSrQemJEeG_gcDHG3asaQ" x="483" y="468"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8kvJsOmJEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8kvJsumJEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8kvJs-mJEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8kvJtOmJEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8kvwwOmJEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8kvwwemJEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8kvwwumJEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8kvww-mJEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_8kiVYOmJEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8kvJsemJEeG_gcDHG3asaQ" x="648" y="468"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_J8FlUOmKEeG_gcDHG3asaQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J8GMYOmKEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J8GMYemKEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J8GMYumKEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J8GMY-mKEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J8GMZOmKEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J8GMZemKEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_J8GMZumKEeG_gcDHG3asaQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="AnsiCLibrary.uml#_J6d0sOmKEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J8FlUemKEeG_gcDHG3asaQ" x="549" y="171" width="157" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_b2FFsOmKEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b2FswOmKEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b2FswemKEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b2FswumKEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b2Fsw-mKEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b2FsxOmKEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b2GT0OmKEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_b2GT0emKEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_b1zY4OmKEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b2FFsemKEeG_gcDHG3asaQ" x="482" y="99"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zMqxoOmKEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zMrYsOmKEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zMrYsemKEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zMr_wOmKEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zMr_wemKEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zMr_wumKEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zMr_w-mKEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zMr_xOmKEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_zL7x0OmKEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zMqxoemKEeG_gcDHG3asaQ" x="484" y="254"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0_OUYOmKEeG_gcDHG3asaQ" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_O7cOmKEeG_gcDHG3asaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_O7cemKEeG_gcDHG3asaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_O7cumKEeG_gcDHG3asaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_O7c-mKEeG_gcDHG3asaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_O7dOmKEeG_gcDHG3asaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_O7demKEeG_gcDHG3asaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0_O7dumKEeG_gcDHG3asaQ" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="AnsiCLibrary.uml#_0-8nkOmKEeG_gcDHG3asaQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_OUYemKEeG_gcDHG3asaQ" x="646" y="252"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_r0SgwemIEeG_gcDHG3asaQ"/>
+ <element xmi:type="uml:Model" href="AnsiCLibrary.uml#_DV8nkBv8EduZN5aJJITI5w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_NZwmEOmKEeG_gcDHG3asaQ" type="4013" source="_J8FlUOmKEeG_gcDHG3asaQ" target="_zMqxoOmKEeG_gcDHG3asaQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NZwmEemKEeG_gcDHG3asaQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NZwmEumKEeG_gcDHG3asaQ" points="[-4, 14, 0, -50]$[14, 61, 18, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nab7gOmKEeG_gcDHG3asaQ" id="(0.15346534653465346,0.7666666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nab7gemKEeG_gcDHG3asaQ" id="(0.81,0.14)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OAB74OmKEeG_gcDHG3asaQ" type="4013" source="_J8FlUOmKEeG_gcDHG3asaQ" target="_0_OUYOmKEeG_gcDHG3asaQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_OAB74emKEeG_gcDHG3asaQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OAB74umKEeG_gcDHG3asaQ" points="[-7, 11, 0, -55]$[-20, 67, -13, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OAP-UOmKEeG_gcDHG3asaQ" id="(0.7707006369426752,0.9130434782608695)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OAP-UemKEeG_gcDHG3asaQ" id="(0.17,0.16)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gCpMwOmKEeG_gcDHG3asaQ" type="4013" source="_J8FlUOmKEeG_gcDHG3asaQ" target="_b2FFsOmKEeG_gcDHG3asaQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_gCpMwemKEeG_gcDHG3asaQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gCpMwumKEeG_gcDHG3asaQ" points="[0, -5, 0, 54]$[18, -58, 18, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gC2BEOmKEeG_gcDHG3asaQ" id="(0.14012738853503184,0.10869565217391304)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gC2BEemKEeG_gcDHG3asaQ" id="(0.82,0.54)"/>
+ </edges>
+</notation:Diagram>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.uml b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.uml
new file mode 100644
index 00000000000..00ee3486b79
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/libraries/AnsiCLibrary.uml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:l2="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_DV8nkBv8EduZN5aJJITI5w" name="AnsiCLibrary">
+ <ownedComment xmi:id="_J6d0sOmKEeG_gcDHG3asaQ" annotatedElement="_b1zY4OmKEeG_gcDHG3asaQ _0-8nkOmKEeG_gcDHG3asaQ _zL7x0OmKEeG_gcDHG3asaQ">
+ <body>Platform independent fixed size types</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_5lVhgBydEduyofBvg4RL2w" name="char"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_6j0jABydEduyofBvg4RL2w" name="double"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_7W3wkBydEduyofBvg4RL2w" name="float"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_7wRIABydEduyofBvg4RL2w" name="int"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_8I6RgBydEduyofBvg4RL2w" name="void"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_8heigBydEduyofBvg4RL2w" name="long"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_DLNPkByeEduyofBvg4RL2w" name="long double"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_K-lFQByeEduyofBvg4RL2w" name="short"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_LTZesByeEduyofBvg4RL2w" name="unsigned int"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_V5vyUByeEduyofBvg4RL2w" name="unsigned short"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_YYWiwByeEduyofBvg4RL2w" name="unsigned char"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_a1wZUByeEduyofBvg4RL2w" name="unsigned long"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_vAIV4I7PEdySGvm5GN66HA" name="bool"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_V3dAkOmJEeG_gcDHG3asaQ" name="int16_t"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Y3550OmJEeG_gcDHG3asaQ" name="uint16_t"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_yJpD0OmJEeG_gcDHG3asaQ" name="int32_t"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_1q1SoOmJEeG_gcDHG3asaQ" name="uint32_t"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_6hHFEOmJEeG_gcDHG3asaQ" name="int64_t"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_8kiVYOmJEeG_gcDHG3asaQ" name="uint64_t"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_b1zY4OmKEeG_gcDHG3asaQ" name="wchar_t"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_zL7x0OmKEeG_gcDHG3asaQ" name="int8_t"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_0-8nkOmKEeG_gcDHG3asaQ" name="uint8_t"/>
+ <profileApplication xmi:id="_a7EN4CAREdu9HM4q-Epbgg">
+ <eAnnotations xmi:id="_a7EN4SAREdu9HM4q-Epbgg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Model>
+ <l2:ModelLibrary xmi:id="_c2eKoCAREdu9HM4q-Epbgg" base_Package="_DV8nkBv8EduZN5aJJITI5w"/>
+</xmi:XMI>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/plugin.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/plugin.properties
new file mode 100644
index 00000000000..17e06150837
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus C/C++ profile (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/plugin.xml b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/plugin.xml
new file mode 100644
index 00000000000..2320d68b2a6
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/plugin.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="pathmap://PapyrusCpp_LIBRARIES/"
+ target="platform:/plugin/org.eclipse.papyrus.cpp.profile/libraries/"/>
+ <mapping
+ source="pathmap://PapyrusCpp_PROFILES/"
+ target="platform:/plugin/org.eclipse.papyrus.cpp.profile/profiles/"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://papyrus/CppProfile/1"
+ class = "Cpp.CppPackage"
+ genModel = "profile/Cpp.genmodel"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.uml2.uml.generated_package">
+ <profile
+ uri="http://papyrus/CppProfile/1"
+ location="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library
+ description="Standard C Ansi types"
+ iconpath="icons/transfo_cpp.gif"
+ name="AnsiCLibrary"
+ path="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml"
+ provider="CEA LIST"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+ <profile
+ description="C++ profile used in code generation"
+ iconpath="icons/transfo_cpp.gif"
+ name="PapyrusCpp"
+ path="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml"
+ provider="CEA LIST"/>
+ <profile
+ description="C profile used in code generation"
+ iconpath="icons/transfo_cpp.gif"
+ name="PapyrusC"
+ path="pathmap://PapyrusCpp_PROFILES/PapyrusC.profile.uml"
+ provider="CEA LIST"/>
+ </extension>
+</plugin>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/Cpp.ecore b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/Cpp.ecore
new file mode 100644
index 00000000000..189d6f6567e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/Cpp.ecore
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="Cpp" nsURI="http://papyrus/CppProfile/1" nsPrefix="Cpp">
+ <eClassifiers xsi:type="ecore:EClass" name="CppPtr">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="&quot;declaration&quot; attribute should only be used, if more than one indirections of pointers (often &quot;**&quot;)"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_parameter" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_property" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="declaration" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppInclude">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="&quot;preBody&quot; is added to a C++ body file before automatic include statements, &quot;body&quot; after"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="body" ordered="false" lowerBound="1"
+ eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="header" ordered="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"
+ defaultValueLiteral=""/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_package" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Package"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_PackageImport" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//PackageImport"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="preBody" ordered="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ManualGeneration">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="Some toolkits require a quite particular way of use. For instance, LTTng requires the use of C (not C++) for the declaration of a trace provider and the header file is read several time with redefined macros. Therefore, the code generator supports a &quot;manual&quot; generation mode, in which primarily the contents of the CppInclude directive is written."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="extensionBody" ordered="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="CppVisibilityKind">
+ <eLiterals name="private"/>
+ <eLiterals name="protected" value="1"/>
+ <eLiterals name="public" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppArray">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_parameter" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="definition" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_property" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_association" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Association"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppConst">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_parameter" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_property" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_operation" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppDefault">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_parameter" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_property" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppRef">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_parameter" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Parameter"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_property" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppExternClass">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppExternLibrary">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_package" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Package"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppRoot">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_package" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Package"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppNoCodeGen">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_element" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Element"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppConstInit">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="initialisation" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_operation" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppFriend">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_dependency" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Dependency"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_operation" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppInline">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_operation" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppVirtual">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_operation" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppType">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="definition" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_primitivetype" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//PrimitiveType"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppVisibility">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_generalization" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Generalization"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppInit">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_enumerationliteral"
+ ordered="false" unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//EnumerationLiteral"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppTemplate">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="declaration" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppTemplateBinding">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="binding" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_templatebinding" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//TemplateBinding"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppTemplateParameter">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_templateparameter"
+ ordered="false" unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//TemplateParameter"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Union">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_DataType" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//DataType"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/Cpp.genmodel b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/Cpp.genmodel
new file mode 100644
index 00000000000..2ba9cc72960
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/Cpp.genmodel
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.papyrus.cpp.profile/src" modelPluginID="org.eclipse.papyrus.cpp.profile"
+ modelName="Cpp" importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0"
+ copyrightFields="false" usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/plugin/org.eclipse.uml2.types/model/Types.genmodel#//types platform:/plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml">
+ <foreignModel>Cpp.ecore</foreignModel>
+ <genPackages prefix="Cpp" resource="XML" disposableProviderFactory="true" ecorePackage="Cpp.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="Cpp.ecore#//CppVisibilityKind">
+ <genEnumLiterals ecoreEnumLiteral="Cpp.ecore#//CppVisibilityKind/private"/>
+ <genEnumLiterals ecoreEnumLiteral="Cpp.ecore#//CppVisibilityKind/protected"/>
+ <genEnumLiterals ecoreEnumLiteral="Cpp.ecore#//CppVisibilityKind/public"/>
+ </genEnums>
+ <genClasses ecoreClass="Cpp.ecore#//CppPtr">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppPtr/base_parameter"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppPtr/base_property"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppPtr/declaration"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppInclude">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppInclude/body"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppInclude/header"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppInclude/base_package"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppInclude/base_class"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppInclude/base_PackageImport"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppInclude/preBody"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//ManualGeneration">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//ManualGeneration/extensionBody"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//ManualGeneration/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppArray">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppArray/base_parameter"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppArray/definition"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppArray/base_property"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppArray/base_association"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppConst">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppConst/base_parameter"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppConst/base_property"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppConst/base_operation"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppDefault">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppDefault/value"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppDefault/base_parameter"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppDefault/base_property"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppRef">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppRef/base_parameter"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppRef/base_property"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppExternClass">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppExternClass/name"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppExternClass/base_class"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppExternLibrary">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppExternLibrary/name"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppExternLibrary/base_package"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppRoot">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppRoot/base_package"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppNoCodeGen">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppNoCodeGen/base_element"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppConstInit">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppConstInit/initialisation"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppConstInit/base_operation"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppFriend">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppFriend/base_dependency"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppFriend/base_operation"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppInline">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppInline/base_operation"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppVirtual">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppVirtual/base_operation"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppType">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppType/definition"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppType/base_primitivetype"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppVisibility">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppVisibility/value"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppVisibility/base_generalization"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppInit">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppInit/value"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppInit/base_enumerationliteral"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppTemplate">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppTemplate/declaration"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppTemplate/base_class"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppTemplateBinding">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppTemplateBinding/binding"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppTemplateBinding/base_templatebinding"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//CppTemplateParameter">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Cpp.ecore#//CppTemplateParameter/name"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//CppTemplateParameter/base_templateparameter"/>
+ </genClasses>
+ <genClasses ecoreClass="Cpp.ecore#//Union">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Cpp.ecore#//Union/base_DataType"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.di b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.di
new file mode 100644
index 00000000000..89f2786c0ea
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.di
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <di:SashWindowsMngr>
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="PapyrusC.profile.notation#_kmephMoQEeGKstsYRuxdvw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="PapyrusC.profile.notation#_kmeo4MoQEeGKstsYRuxdvw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="PapyrusC.profile.notation#_kmfQysoQEeGKstsYRuxdvw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="PapyrusC.profile.notation#_kmfQyMoQEeGKstsYRuxdvw"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="/0/@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="PapyrusC.profile.notation#_kmeo4MoQEeGKstsYRuxdvw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="PapyrusC.profile.notation#_kmephMoQEeGKstsYRuxdvw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="PapyrusC.profile.notation#_kmfQyMoQEeGKstsYRuxdvw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="PapyrusC.profile.notation#_kmfQysoQEeGKstsYRuxdvw"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+ </di:SashWindowsMngr>
+ <di:TabFolder/>
+</xmi:XMI>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.notation b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.notation
new file mode 100644
index 00000000000..8d2827ae033
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.notation
@@ -0,0 +1,650 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_kmeo4MoQEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="ANSI_C" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_kmeo4coQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmeo4soQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmeo48oQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmeo5MoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmeo5coQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmeo5soQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmeo58oQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmeo6MoQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmeo6coQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmeo6soQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmeo68oQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmeo7MoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmeo7coQEeGKstsYRuxdvw" type="1071">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmeo7soQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_tLnF8NtyEduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmeo78oQEeGKstsYRuxdvw" x="36" y="225" width="100" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmeo8MoQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmeo8coQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmeo8soQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmeo88oQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmeo9MoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmeo9coQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmeo9soQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmeo98oQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmeo-MoQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmeo-coQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmeo-soQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmeo-8oQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmeo_MoQEeGKstsYRuxdvw" type="1071">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmeo_coQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_vF0I0NtyEduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmeo_soQEeGKstsYRuxdvw" x="171" y="225" width="100" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmeo_8oQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepAMoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepAcoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepAsoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepA8oQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepBMoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepBcoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepBsoQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmepB8oQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmepCMoQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmepCcoQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepCsoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmepC8oQEeGKstsYRuxdvw" type="1071">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepDMoQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_hyzoYNt3EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepDcoQEeGKstsYRuxdvw" x="36" y="117" width="235" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmepDsoQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepD8oQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepEMoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepEcoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepEsoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepE8oQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepFMoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepFcoQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Type"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepFsoQEeGKstsYRuxdvw" x="36" y="36" width="235" height="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmepF8oQEeGKstsYRuxdvw" type="1030" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepGMoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepGcoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepGsoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepG8oQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepHMoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepHcoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepHsoQEeGKstsYRuxdvw" type="1047"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepH8oQEeGKstsYRuxdvw" type="1042">
+ <children xmi:type="notation:Shape" xmi:id="_kmepIMoQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepIcoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepIsoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepI8oQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepJMoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepJcoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepJsoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepJ8oQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepKMoQEeGKstsYRuxdvw" x="13" y="22" width="154" height="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmepKcoQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepKsoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepK8oQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepLMoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepLcoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepLsoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepL8oQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepMMoQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmepMcoQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmepMsoQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmepM8oQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepNMoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmepNcoQEeGKstsYRuxdvw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_kmepNsoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_lE-x8EP9EdyXRJo_SB0POQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepN8oQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepOMoQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_HPbEkEHmEdyxlrpSW7ggPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepOcoQEeGKstsYRuxdvw" x="12" y="121" width="155" height="93"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmepOsoQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepO8oQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepPMoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepPcoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepPsoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepP8oQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepQMoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepQcoQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmepQsoQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmepQ8oQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmepRMoQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepRcoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmepRsoQEeGKstsYRuxdvw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_kmepR8oQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_zIUzcEHlEdyxlrpSW7ggPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepSMoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmepScoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_88h4cEHlEdyxlrpSW7ggPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepSsoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepS8oQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_ygvPAEHlEdyxlrpSW7ggPQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepTMoQEeGKstsYRuxdvw" x="256" y="121" width="155" height="93"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmepTcoQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepTsoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepT8oQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepUMoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepUcoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepUsoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepU8oQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepVMoQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepVcoQEeGKstsYRuxdvw" x="256" y="22" width="154" height="55"/>
+ </children>
+ </children>
+ <element xmi:type="uml:Profile" href="PapyrusC.profile.uml#_9WrSUBU5EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmepVsoQEeGKstsYRuxdvw" x="342" y="27" width="460" height="289"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_kmepV8oQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Profile" href="PapyrusC.profile.uml#_fyjaINtyEduxXYGi8mOVFA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_kmepWMoQEeGKstsYRuxdvw" type="4002" source="_kmeo4coQEeGKstsYRuxdvw" target="_kmeo_8oQEeGKstsYRuxdvw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepWcoQEeGKstsYRuxdvw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmepWsoQEeGKstsYRuxdvw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmepW8oQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Generalization" href="PapyrusC.profile.uml#_fg9sUNudEdu40vrGR5q4gQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmepXMoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepXcoQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepXsoQEeGKstsYRuxdvw" id="(0.251063829787234,0.9541284403669725)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kmepX8oQEeGKstsYRuxdvw" type="4002" source="_kmeo8MoQEeGKstsYRuxdvw" target="_kmeo_8oQEeGKstsYRuxdvw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepYMoQEeGKstsYRuxdvw" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmepYcoQEeGKstsYRuxdvw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmepYsoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Generalization" href="PapyrusC.profile.uml#_f6rM0NudEdu40vrGR5q4gQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmepY8oQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepZMoQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepZcoQEeGKstsYRuxdvw" id="(0.7659574468085106,0.9174311926605505)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kmepZsoQEeGKstsYRuxdvw" type="1013" source="_kmeo_8oQEeGKstsYRuxdvw" target="_kmepDsoQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmepZ8oQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_f5x_gNueEdu40vrGR5q4gQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmepaMoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepacoQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepasoQEeGKstsYRuxdvw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kmepa8oQEeGKstsYRuxdvw" type="1013" source="_kmepOsoQEeGKstsYRuxdvw" target="_kmepTcoQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmepbMoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_DkBw4EHmEdyxlrpSW7ggPQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmepbcoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepbsoQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepb8oQEeGKstsYRuxdvw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kmepcMoQEeGKstsYRuxdvw" type="1013" source="_kmepKcoQEeGKstsYRuxdvw" target="_kmepIMoQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmepccoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_Ua9XkEPwEdyRdtrzgCMxHg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmepcsoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepc8oQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmepdMoQEeGKstsYRuxdvw"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_kmepdcoQEeGKstsYRuxdvw" width="100" height="100"/>
+ <notation:Location xmi:id="_kmepdsoQEeGKstsYRuxdvw" x="105" y="220"/>
+ <notation:Location xmi:id="_kmepd8oQEeGKstsYRuxdvw" x="255" y="220"/>
+ <notation:Size xmi:id="_kmepeMoQEeGKstsYRuxdvw" width="154" height="139"/>
+ <notation:Location xmi:id="_kmepecoQEeGKstsYRuxdvw" x="143" y="28"/>
+ <notation:Size xmi:id="_kmepesoQEeGKstsYRuxdvw" width="100" height="51"/>
+ <notation:Location xmi:id="_kmepe8oQEeGKstsYRuxdvw" x="155" y="-47"/>
+ <notation:Size xmi:id="_kmepfMoQEeGKstsYRuxdvw" width="700" height="315"/>
+ <notation:Location xmi:id="_kmepfcoQEeGKstsYRuxdvw" x="76" y="372"/>
+ <notation:Location xmi:id="_kmepfsoQEeGKstsYRuxdvw" x="68" y="60"/>
+ <notation:Size xmi:id="_kmepf8oQEeGKstsYRuxdvw" width="211" height="159"/>
+ <notation:Location xmi:id="_kmepgMoQEeGKstsYRuxdvw" x="12" y="146"/>
+ <notation:Location xmi:id="_kmepgcoQEeGKstsYRuxdvw" x="20" y="20"/>
+ <notation:Location xmi:id="_kmepgsoQEeGKstsYRuxdvw" x="266" y="146"/>
+ <notation:Location xmi:id="_kmepg8oQEeGKstsYRuxdvw" x="322" y="60"/>
+ <notation:Diagram xmi:id="_kmephMoQEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="CGenerator" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_kmephcoQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmephsoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmeph8oQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepiMoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepicoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmepisoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmepi8oQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmepjMoQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfP8MoQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmfP8coQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmfP8soQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfP88oQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfP9MoQEeGKstsYRuxdvw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_kmfP9coQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_tWFcMBU8EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfP9soQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfP98oQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_1G9-kBU8EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfP-MoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfP-coQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_dTRqcBU9EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfP-soQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfP-8oQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_ty6FoBU9EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfP_MoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfP_coQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfP_soQEeGKstsYRuxdvw" x="27" y="356" width="298" height="144"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfP_8oQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQAMoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQAcoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQAsoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQA8oQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQBMoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQBcoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQBsoQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Type"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQB8oQEeGKstsYRuxdvw" x="27" y="270" width="298" height="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQCMoQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQCcoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQCsoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQC8oQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQDMoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQDcoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQDsoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQD8oQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQEMoQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmfQEcoQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmfQEsoQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQE8oQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQFMoQEeGKstsYRuxdvw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_kmfQFcoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_0uTCMNucEdu40vrGR5q4gQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQFsoQEeGKstsYRuxdvw" x="484" y="175" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQF8oQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_OrDCoNueEdu40vrGR5q4gQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQGMoQEeGKstsYRuxdvw" x="724" y="175" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQGcoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_kKIFENt3EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQGsoQEeGKstsYRuxdvw" x="844" y="175" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQG8oQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_kROLkNt3EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQHMoQEeGKstsYRuxdvw" x="964" y="175" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQHcoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_2SkKwBYHEdylxOSGZvSthg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQHsoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQH8oQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_5ARHIBYHEdylxOSGZvSthg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQIMoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQIcoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_JnhUMBjwEdyGHM4pSbTixw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQIsoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQI8oQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_3ydVcDnQEdyK9KOUzoZMXQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQJMoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQJcoQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_6KIgINuZEdu40vrGR5q4gQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQJsoQEeGKstsYRuxdvw" x="403" y="117" width="273" height="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQJ8oQEeGKstsYRuxdvw" type="2006" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQKMoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQKcoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQKsoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQK8oQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQLMoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQLcoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQLsoQEeGKstsYRuxdvw" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQL8oQEeGKstsYRuxdvw" type="1063">
+ <children xmi:type="notation:Shape" xmi:id="_kmfQMMoQEeGKstsYRuxdvw" type="1037">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusC.profile.uml#_rv0OoNt4EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmfQMcoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQMsoQEeGKstsYRuxdvw" type="1037">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusC.profile.uml#_r1uCUNt4EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmfQM8oQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQNMoQEeGKstsYRuxdvw" type="1037">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusC.profile.uml#_r6qMsNt4EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmfQNcoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQNsoQEeGKstsYRuxdvw" type="1037">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusC.profile.uml#_r_IdANt4EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmfQN8oQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQOMoQEeGKstsYRuxdvw" type="1037">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusC.profile.uml#_ytqxkNt4EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmfQOcoQEeGKstsYRuxdvw"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQOsoQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="PapyrusC.profile.uml#_qO2yMNt4EduxXYGi8mOVFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQO8oQEeGKstsYRuxdvw" x="405" y="351" width="100" height="118"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQPMoQEeGKstsYRuxdvw" type="2006" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQPcoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQPsoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQP8oQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQQMoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQQcoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQQsoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQQ8oQEeGKstsYRuxdvw" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQRMoQEeGKstsYRuxdvw" type="1063">
+ <children xmi:type="notation:Shape" xmi:id="_kmfQRcoQEeGKstsYRuxdvw" type="1037">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusC.profile.uml#_9tPMkBYHEdylxOSGZvSthg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmfQRsoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQR8oQEeGKstsYRuxdvw" type="1037">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusC.profile.uml#_9y0QIBYHEdylxOSGZvSthg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmfQSMoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQScoQEeGKstsYRuxdvw" type="1037">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusC.profile.uml#_-AI6cBYHEdylxOSGZvSthg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kmfQSsoQEeGKstsYRuxdvw"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQS8oQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="PapyrusC.profile.uml#_8b3rUBYHEdylxOSGZvSthg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQTMoQEeGKstsYRuxdvw" x="549" y="351" width="100" height="118"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQTcoQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQTsoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQT8oQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQUMoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQUcoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQUsoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQU8oQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQVMoQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQVcoQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmfQVsoQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmfQV8oQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQWMoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQWcoQEeGKstsYRuxdvw" visible="false" type="1071">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQWsoQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_CyQIURiqEdyL78Gqc5OeNA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQW8oQEeGKstsYRuxdvw" x="765" y="117" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQXMoQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQXcoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQXsoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQX8oQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQYMoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQYcoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQYsoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQY8oQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQZMoQEeGKstsYRuxdvw" x="769" y="27" width="91" height="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQZcoQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQZsoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQZ8oQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQaMoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQacoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQasoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQa8oQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQbMoQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQbcoQEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmfQbsoQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmfQb8oQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQcMoQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQccoQEeGKstsYRuxdvw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_kmfQcsoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_aViuABU9EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQc8oQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQdMoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_pAD3IBU8EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQdcoQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQdsoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_lJpmQBU8EdyGtuGaCXC25Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQd8oQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQeMoQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_93GTkBjCEdyfI_WOjDrRyg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQecoQEeGKstsYRuxdvw" x="30" y="114" width="295" height="103"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQesoQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQe8oQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQfMoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQfcoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQfsoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQf8oQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQgMoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQgcoQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQgsoQEeGKstsYRuxdvw" x="27" y="27" width="298" height="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQg8oQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQhMoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQhcoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQhsoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQh8oQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQiMoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQicoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQisoQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQi8oQEeGKstsYRuxdvw" x="567" y="27" width="109" height="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQjMoQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQjcoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQjsoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQj8oQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQkMoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQkcoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQksoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQk8oQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQlMoQEeGKstsYRuxdvw" x="405" y="27" width="124" height="48"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_kmfQlcoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Profile" href="PapyrusC.profile.uml#_GPY_cBU6EdyGtuGaCXC25Q"/>
+ <edges xmi:type="notation:Connector" xmi:id="_kmfQlsoQEeGKstsYRuxdvw" type="1013" source="_kmephcoQEeGKstsYRuxdvw" target="_kmfP_8oQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmfQl8oQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_1fkPUBU9EdyGtuGaCXC25Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmfQmMoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQmcoQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQmsoQEeGKstsYRuxdvw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kmfQm8oQEeGKstsYRuxdvw" type="1013" source="_kmfQTcoQEeGKstsYRuxdvw" target="_kmfQXMoQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmfQnMoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_GS6ysBiqEdyL78Gqc5OeNA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmfQncoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQnsoQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQn8oQEeGKstsYRuxdvw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kmfQoMoQEeGKstsYRuxdvw" type="1013" source="_kmfQZcoQEeGKstsYRuxdvw" target="_kmfQesoQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmfQocoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_MhedUBjDEdyfI_WOjDrRyg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmfQosoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQo8oQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQpMoQEeGKstsYRuxdvw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kmfQpcoQEeGKstsYRuxdvw" type="1013" source="_kmfQCMoQEeGKstsYRuxdvw" target="_kmfQjMoQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmfQpsoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_yqmg4MdtEd29as0ocaFXLw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmfQp8oQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQqMoQEeGKstsYRuxdvw" id="(0.2591240875912409,0.014423076923076924)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQqcoQEeGKstsYRuxdvw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kmfQqsoQEeGKstsYRuxdvw" type="1013" source="_kmfQCMoQEeGKstsYRuxdvw" target="_kmfQg8oQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmfQq8oQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_zt8NMMdtEd29as0ocaFXLw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmfQrMoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQrcoQEeGKstsYRuxdvw" id="(0.8065693430656934,0.038461538461538464)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmfQrsoQEeGKstsYRuxdvw"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_kmfQr8oQEeGKstsYRuxdvw" width="306" height="144"/>
+ <notation:Location xmi:id="_kmfQsMoQEeGKstsYRuxdvw" x="29" y="356"/>
+ <notation:Size xmi:id="_kmfQscoQEeGKstsYRuxdvw" width="72" height="48"/>
+ <notation:Location xmi:id="_kmfQssoQEeGKstsYRuxdvw" x="146" y="269"/>
+ <notation:Size xmi:id="_kmfQs8oQEeGKstsYRuxdvw" width="274" height="208"/>
+ <notation:Location xmi:id="_kmfQtMoQEeGKstsYRuxdvw" x="394" y="344"/>
+ <notation:Location xmi:id="_kmfQtcoQEeGKstsYRuxdvw" x="484" y="175"/>
+ <notation:Location xmi:id="_kmfQtsoQEeGKstsYRuxdvw" x="724" y="175"/>
+ <notation:Location xmi:id="_kmfQt8oQEeGKstsYRuxdvw" x="844" y="175"/>
+ <notation:Location xmi:id="_kmfQuMoQEeGKstsYRuxdvw" x="964" y="175"/>
+ <notation:Size xmi:id="_kmfQucoQEeGKstsYRuxdvw" width="90" height="149"/>
+ <notation:Location xmi:id="_kmfQusoQEeGKstsYRuxdvw" x="677" y="110"/>
+ <notation:Size xmi:id="_kmfQu8oQEeGKstsYRuxdvw" width="82" height="111"/>
+ <notation:Location xmi:id="_kmfQvMoQEeGKstsYRuxdvw" x="789" y="110"/>
+ <notation:Location xmi:id="_kmfQvcoQEeGKstsYRuxdvw" x="797" y="443"/>
+ <notation:Size xmi:id="_kmfQvsoQEeGKstsYRuxdvw" width="89" height="48"/>
+ <notation:Location xmi:id="_kmfQv8oQEeGKstsYRuxdvw" x="802" y="348"/>
+ <notation:Size xmi:id="_kmfQwMoQEeGKstsYRuxdvw" width="333" height="118"/>
+ <notation:Location xmi:id="_kmfQwcoQEeGKstsYRuxdvw" x="237" y="132"/>
+ <notation:Size xmi:id="_kmfQwsoQEeGKstsYRuxdvw" width="129" height="48"/>
+ <notation:Location xmi:id="_kmfQw8oQEeGKstsYRuxdvw" x="314" y="46"/>
+ <notation:Size xmi:id="_kmfQxMoQEeGKstsYRuxdvw" width="87" height="48"/>
+ <notation:Location xmi:id="_kmfQxcoQEeGKstsYRuxdvw" x="513" y="263"/>
+ <notation:Size xmi:id="_kmfQxsoQEeGKstsYRuxdvw" width="124" height="48"/>
+ <notation:Location xmi:id="_kmfQx8oQEeGKstsYRuxdvw" x="365" y="264"/>
+ <notation:Diagram xmi:id="_kmfQyMoQEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Class diagram of src/com/cea/gen/c/profile/C_AINSI" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_kmfQycoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Profile" href="PapyrusC.profile.uml#_fyjaINtyEduxXYGi8mOVFA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_kmfQysoQEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Import" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_kmfQy8oQEeGKstsYRuxdvw" type="1026" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQzMoQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQzcoQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQzsoQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQz8oQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQ0MoQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQ0coQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmfQ0soQEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQ08oQEeGKstsYRuxdvw" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kmfQ1MoQEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kmfQ1coQEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQ1soQEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kmfQ18oQEeGKstsYRuxdvw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_kmfQ2MoQEeGKstsYRuxdvw" type="3002">
+ <element xmi:type="uml:Property" href="PapyrusC.profile.uml#_aQdtEBmYEdyYiu3uPO8AqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQ2coQEeGKstsYRuxdvw" x="20" y="20" width="100" height="100"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQ2soQEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusC.profile.uml#_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmfQ28oQEeGKstsYRuxdvw" x="48" y="121" width="152" height="84"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kmfQ3MoQEeGKstsYRuxdvw" type="1031" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQ3coQEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQ3soQEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQ38oQEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmfQ4MoQEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kmfQ4coQEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kmf3AMoQEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kmf3AcoQEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Namespace"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kmf3AsoQEeGKstsYRuxdvw" x="54" y="36" width="145" height="48"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_kmf3A8oQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Profile" href="PapyrusC.profile.uml#_GPY_cBU6EdyGtuGaCXC25Q"/>
+ <edges xmi:type="notation:Connector" xmi:id="_kmf3BMoQEeGKstsYRuxdvw" type="1013" source="_kmfQy8oQEeGKstsYRuxdvw" target="_kmfQ3MoQEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmf3BcoQEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Extension" href="PapyrusC.profile.uml#_gS_3QBmYEdyYiu3uPO8AqQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmf3BsoQEeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmf3B8oQEeGKstsYRuxdvw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmf3CMoQEeGKstsYRuxdvw"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_kmf3CcoQEeGKstsYRuxdvw" width="152" height="84"/>
+ <notation:Location xmi:id="_kmf3CsoQEeGKstsYRuxdvw" x="291" y="239"/>
+ <notation:Size xmi:id="_kmf3C8oQEeGKstsYRuxdvw" width="110" height="48"/>
+ <notation:Location xmi:id="_kmf3DMoQEeGKstsYRuxdvw" x="312" y="154"/>
+</xmi:XMI>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.uml b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.uml
new file mode 100644
index 00000000000..8684a4b4967
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusC.profile.uml
@@ -0,0 +1,4143 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Profile xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_fyjaINtyEduxXYGi8mOVFA" name="PapyrusC" metaclassReference="_TP4uUNtzEduxXYGi8mOVFA _lxuqUNueEdu40vrGR5q4gQ">
+ <eAnnotations xmi:id="_kJuYEd3KEdumDrdb5IYxAA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <contents xmi:type="ecore:EPackage" xmi:id="_7bHUQcdtEd29as0ocaFXLw" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_7bHUQMdtEd29as0ocaFXLw/38" nsPrefix="PapyrusC">
+ <eAnnotations xmi:id="_7bRFhMdtEd29as0ocaFXLw" source="PapyrusVersion">
+ <details xmi:id="_7bRFhcdtEd29as0ocaFXLw" key="Version" value="1.1.0"/>
+ <details xmi:id="_7bRFhsdtEd29as0ocaFXLw" key="Comment" value=""/>
+ <details xmi:id="_7bRFh8dtEd29as0ocaFXLw" key="Copyright" value=""/>
+ <details xmi:id="_7bRFiMdtEd29as0ocaFXLw" key="Date" value="2008-12-11"/>
+ <details xmi:id="_7bRFicdtEd29as0ocaFXLw" key="Author" value="Yann Tanguy (CEA LIST)"/>
+ </eAnnotations>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_lgkvkcdtEd29as0ocaFXLw" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_lgkvkMdtEd29as0ocaFXLw/37" nsPrefix="PapyrusC">
+ <eAnnotations xmi:id="_lg3qyMdtEd29as0ocaFXLw" source="PapyrusVersion">
+ <details xmi:id="_lg3qycdtEd29as0ocaFXLw" key="Version" value="1.0.0"/>
+ <details xmi:id="_lg3qysdtEd29as0ocaFXLw" key="Comment" value=""/>
+ <details xmi:id="_lg3qy8dtEd29as0ocaFXLw" key="Copyright" value=""/>
+ <details xmi:id="_lg3qzMdtEd29as0ocaFXLw" key="Date" value="2008-12-11"/>
+ <details xmi:id="_lg3qzcdtEd29as0ocaFXLw" key="Author" value="Yann Tanguy (CEA LIST)"/>
+ </eAnnotations>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="__1dVYEP-EdyN-oOhaWIQYg" name="PapyrusC" nsURI="http:///schemas/PapyrusC/__1cHQEP-EdyN-oOhaWIQYg/36" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_xvNB0EP9EdyXRJo_SB0POQ" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_xvLzsEP9EdyXRJo_SB0POQ/35" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_1gPg8EPxEdybAJ4m8R8XFA" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_1gO54EPxEdybAJ4m8R8XFA/34" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_n29-gEHmEdyxlrpSW7ggPQ" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_n29XcEHmEdyxlrpSW7ggPQ/33" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_FgCKkUHmEdyxlrpSW7ggPQ" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_FgCKkEHmEdyxlrpSW7ggPQ/32" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_ZdfnIUDsEdyjuIyCaGFHvQ" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_ZdfnIEDsEdyjuIyCaGFHvQ/31" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_1e_PMD98EdyWndo1HgT9Ig" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_1e-BED98EdyWndo1HgT9Ig/30" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_SYHBgD97EdydlOlmTTAQlA" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_SYFzYD97EdydlOlmTTAQlA/29" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_11qmgDweEdyHm6HnfLC8wA" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_11pYYDweEdyHm6HnfLC8wA/28" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_mJH8gDwbEdy50P3mY4f53Q" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_mJGuYDwbEdy50P3mY4f53Q/27" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_-H3CMDnZEdyK9KOUzoZMXQ" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_-H10EDnZEdyK9KOUzoZMXQ/26" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_51VlcDnLEdyhj8_f1ShKKA" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_51UXUDnLEdyhj8_f1ShKKA/25" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_U7DHoBtFEdyd3OUuj4yv-Q" name="PapyrusC" nsURI="http:///schemas/PapyrusC/_U7B5gRtFEdyd3OUuj4yv-Q/24" nsPrefix="PapyrusC"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_l_4hkBmYEdyYiu3uPO8AqQ" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_l_36gBmYEdyYiu3uPO8AqQ/23" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_k7d3MBmYEdyYiu3uPO8AqQ" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_k7dQIBmYEdyYiu3uPO8AqQ/22" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_NDfr0RjwEdyGHM4pSbTixw" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_NDfr0BjwEdyGHM4pSbTixw/21" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Vts4URjvEdyGHM4pSbTixw" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_Vts4UBjvEdyGHM4pSbTixw/20" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_VqJDcRjuEdyGHM4pSbTixw" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_VqJDcBjuEdyGHM4pSbTixw/19" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_XLt10BjsEdyGHM4pSbTixw" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_XLsnsBjsEdyGHM4pSbTixw/18" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_koHXERjMEdyo-J6sTQ4XlA" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_koHXEBjMEdyo-J6sTQ4XlA/17" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_WhI1UBjMEdyo-J6sTQ4XlA" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_WhHnMRjMEdyo-J6sTQ4XlA/16" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_TnxxoRjDEdyfI_WOjDrRyg" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_TnxxoBjDEdyfI_WOjDrRyg/15" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Fv0YwBjCEdyfI_WOjDrRyg" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_FvzKoBjCEdyfI_WOjDrRyg/14" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_VzngcBiqEdyL78Gqc5OeNA" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_VzmSUBiqEdyL78Gqc5OeNA/13" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_24UGsRYIEdylxOSGZvSthg" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_24UGsBYIEdylxOSGZvSthg/12" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_hMIHERYIEdylxOSGZvSthg" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_hMIHEBYIEdylxOSGZvSthg/11" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_DuUlQBYIEdylxOSGZvSthg" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_DuTXIBYIEdylxOSGZvSthg/10" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_gkPPcRU-EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_gkPPcBU-EdyGtuGaCXC25Q/9" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_-EnZkRU9EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_-EnZkBU9EdyGtuGaCXC25Q/8" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_NYtykRU6EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_NYtykBU6EdyGtuGaCXC25Q/7" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_IEWV8RU6EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_IEWV8BU6EdyGtuGaCXC25Q/6" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_E7Fe8BU6EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_E7E34BU6EdyGtuGaCXC25Q/5" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_BZgOkRU6EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_BZgOkBU6EdyGtuGaCXC25Q/4" nsPrefix="srccomceagencprofileC_AINSI"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_2P-8cBU5EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_2P-VYBU5EdyGtuGaCXC25Q/3" nsPrefix="srccomceagencprofileC_AINSI">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_2P-8cRU5EdyGtuGaCXC25Q" name="Union" eSuperTypes="_2P-8cxU5EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_2P-8chU5EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_2P-8cxU5EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_2P-8dBU5EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_2P-8dRU5EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_2P-8dhU5EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_2P-8cxU5EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_2P-8dxU5EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_2P-8eBU5EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_2P-8cxU5EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_2P-8eRU5EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_2P-8ehU5EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_2P-8exU5EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_2P-8fBU5EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_2P-8fRU5EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_2P-8fRU5EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_2P-8fhU5EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_2P-8fxU5EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_2P-8gBU5EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_2P-8gRU5EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_2P-8ghU5EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_2P-8gxU5EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_2P-8hBU5EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_2P-8hRU5EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_2P-8hhU5EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_2P-8hxU5EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_2P-8iBU5EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_2P-8iRU5EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_2P-8ihU5EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_2P-8ixU5EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_2P-8jBU5EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_2P-8jRU5EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_2P-8hBU5EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_2P-8jhU5EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_2P-8jxU5EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_2P-8kBU5EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_2P-8kRU5EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_O2xzYBU3EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_O2xMUBU3EdyGtuGaCXC25Q/2" nsPrefix="srccomceagencprofileC_AINSI">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_O2xzYRU3EdyGtuGaCXC25Q" name="Union" eSuperTypes="_O2xzYxU3EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_O2xzYhU3EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_O2xzYxU3EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_O2xzZBU3EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_O2xzZRU3EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_O2xzZhU3EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_O2xzYxU3EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_O2xzZxU3EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_O2xzaBU3EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_O2xzYxU3EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_O2xzaRU3EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_O2xzahU3EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_O2xzaxU3EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_O2xzbBU3EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_O2xzbRU3EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_O2xzbRU3EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_O2xzbhU3EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_O2xzbxU3EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_O2xzcBU3EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_O2xzcRU3EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_O2xzchU3EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_O2xzcxU3EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_O2xzdBU3EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_O2xzdRU3EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_O2xzdhU3EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_O2xzdxU3EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_O2xzeBU3EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_O2xzeRU3EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_O2xzehU3EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_O2xzexU3EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_O2xzfBU3EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_O2xzfRU3EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_O2xzdBU3EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_O2xzfhU3EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_O2xzfxU3EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_O2xzgBU3EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_O2xzgRU3EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_maKaoBU2EdyGtuGaCXC25Q" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_maHXUBU2EdyGtuGaCXC25Q/1" nsPrefix="srccomceagencprofileC_AINSI">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_maKaoRU2EdyGtuGaCXC25Q" name="Union" eSuperTypes="_maKaoxU2EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_maKaohU2EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_maKaoxU2EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_maKapBU2EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_maKapRU2EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_maKaphU2EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_maKaoxU2EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_maKapxU2EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_maKaqBU2EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_maKaoxU2EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_maKaqRU2EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_maKaqhU2EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_maKaqxU2EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_maKarBU2EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_maKarRU2EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_maKarRU2EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_maKarhU2EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_maKarxU2EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_maKasBU2EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_maKasRU2EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_maKashU2EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_maKasxU2EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_maKatBU2EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_maKatRU2EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_maKathU2EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_maKatxU2EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_maKauBU2EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_maKauRU2EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_maKauhU2EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_maKauxU2EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_maKavBU2EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_maKavRU2EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_maKatBU2EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_maKavhU2EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_maKavxU2EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_maKawBU2EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_maKawRU2EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_kJu_IN3KEdumDrdb5IYxAA" name="srccomceagencprofileC_AINSI" nsURI="http:///schemas/srccomceagencprofileC_AINSI/_kJuYEN3KEdumDrdb5IYxAA/0" nsPrefix="srccomceagencprofileC_AINSI">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_kJu_Id3KEdumDrdb5IYxAA" name="C_Union" eSuperTypes="_kJu_I93KEdumDrdb5IYxAA">
+ <eAnnotations xmi:id="_kJu_It3KEdumDrdb5IYxAA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_kJu_I93KEdumDrdb5IYxAA" name="C_QualifiedType">
+ <eAnnotations xmi:id="_kJu_JN3KEdumDrdb5IYxAA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_kJu_Jd3KEdumDrdb5IYxAA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_kJu_Jt3KEdumDrdb5IYxAA" name="C_Struct" eSuperTypes="_kJu_I93KEdumDrdb5IYxAA">
+ <eAnnotations xmi:id="_kJu_J93KEdumDrdb5IYxAA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_kJu_KN3KEdumDrdb5IYxAA" name="C_PrimitiveType" eSuperTypes="_kJu_I93KEdumDrdb5IYxAA">
+ <eAnnotations xmi:id="_kJu_Kd3KEdumDrdb5IYxAA" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_kJu_Kt3KEdumDrdb5IYxAA" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_kJu_K93KEdumDrdb5IYxAA" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_kJu_LN3KEdumDrdb5IYxAA" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_kJu_Ld3KEdumDrdb5IYxAA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_kJu_Ld3KEdumDrdb5IYxAA" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_kJu_Lt3KEdumDrdb5IYxAA" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_kJu_L93KEdumDrdb5IYxAA" name="void"/>
+ <eLiterals xmi:id="_kJu_MN3KEdumDrdb5IYxAA" name="char" value="1"/>
+ <eLiterals xmi:id="_kJu_Md3KEdumDrdb5IYxAA" name="int" value="2"/>
+ <eLiterals xmi:id="_kJu_Mt3KEdumDrdb5IYxAA" name="float" value="3"/>
+ <eLiterals xmi:id="_kJu_M93KEdumDrdb5IYxAA" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_kJu_NN3KEdumDrdb5IYxAA" name="StorageClass">
+ <eAnnotations xmi:id="_kJu_Nd3KEdumDrdb5IYxAA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_kJu_Nt3KEdumDrdb5IYxAA" name="auto"/>
+ <eLiterals xmi:id="_kJu_N93KEdumDrdb5IYxAA" name="register" value="1"/>
+ <eLiterals xmi:id="_kJu_ON3KEdumDrdb5IYxAA" name="extern" value="2"/>
+ <eLiterals xmi:id="_kJu_Od3KEdumDrdb5IYxAA" name="static" value="3"/>
+ <eLiterals xmi:id="_kJu_Ot3KEdumDrdb5IYxAA" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_kJu_O93KEdumDrdb5IYxAA" name="C_TypedElement">
+ <eAnnotations xmi:id="_kJu_PN3KEdumDrdb5IYxAA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_kJu_Pd3KEdumDrdb5IYxAA" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_kJu_NN3KEdumDrdb5IYxAA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_kJu_Pt3KEdumDrdb5IYxAA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_kJu_P93KEdumDrdb5IYxAA" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_kJu_QN3KEdumDrdb5IYxAA" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_kJu_Qd3KEdumDrdb5IYxAA" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ </eAnnotations>
+ <elementImport xmi:id="_TP4uUNtzEduxXYGi8mOVFA" alias="Type">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Type"/>
+ </elementImport>
+ <elementImport xmi:id="_lxuqUNueEdu40vrGR5q4gQ" alias="TypedElement">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
+ </elementImport>
+ <packageImport xmi:id="_fyjaIdtyEduxXYGi8mOVFA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Profile" xmi:id="_9WrSUBU5EdyGtuGaCXC25Q" name="ANSI_C" metaclassReference="_gajFsEHlEdyxlrpSW7ggPQ _ZM26gEHmEdyxlrpSW7ggPQ">
+ <eAnnotations xmi:id="_BZhcsBU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <contents xmi:type="ecore:EPackage" xmi:id="_7bHUQ8dtEd29as0ocaFXLw" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_7bHUQsdtEd29as0ocaFXLw/34" nsPrefix="ANSI_C">
+ <eAnnotations xmi:id="_7bRFjsdtEd29as0ocaFXLw" source="PapyrusVersion">
+ <details xmi:id="_7bRFj8dtEd29as0ocaFXLw" key="Version" value="1.1.0"/>
+ <details xmi:id="_7bRFkMdtEd29as0ocaFXLw" key="Comment" value=""/>
+ <details xmi:id="_7bRFkcdtEd29as0ocaFXLw" key="Copyright" value=""/>
+ <details xmi:id="_7bRFksdtEd29as0ocaFXLw" key="Date" value="2008-12-11"/>
+ <details xmi:id="_7bRFk8dtEd29as0ocaFXLw" key="Author" value="Yann Tanguy (CEA LIST)"/>
+ </eAnnotations>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bHURMdtEd29as0ocaFXLw" name="Union" eSuperTypes="_7bHUR8dtEd29as0ocaFXLw">
+ <eAnnotations xmi:id="_7bHURcdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bHUR8dtEd29as0ocaFXLw" name="QualifiedType">
+ <eAnnotations xmi:id="_7bHUSMdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bHUScdtEd29as0ocaFXLw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bHUS8dtEd29as0ocaFXLw" name="Struct" eSuperTypes="_7bHUR8dtEd29as0ocaFXLw">
+ <eAnnotations xmi:id="_7bHUTMdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bHUTsdtEd29as0ocaFXLw" name="C_Typedef">
+ <eAnnotations xmi:id="_7bHUT8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_ygvPAEHlEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bHUUMdtEd29as0ocaFXLw" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bHUUsdtEd29as0ocaFXLw" name="type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bHUVMdtEd29as0ocaFXLw" name="base_PrimitiveType" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bHUVsdtEd29as0ocaFXLw" name="C_Macro">
+ <eAnnotations xmi:id="_7bHUV8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_HPbEkEHmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bHUWMdtEd29as0ocaFXLw" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bHUWsdtEd29as0ocaFXLw" name="body" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_lgt5gcdtEd29as0ocaFXLw" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_lgt5gMdtEd29as0ocaFXLw/33" nsPrefix="ANSI_C">
+ <eAnnotations xmi:id="_lg3q0sdtEd29as0ocaFXLw" source="PapyrusVersion">
+ <details xmi:id="_lg3q08dtEd29as0ocaFXLw" key="Version" value="1.0.0"/>
+ <details xmi:id="_lg3q1MdtEd29as0ocaFXLw" key="Comment" value=""/>
+ <details xmi:id="_lg3q1cdtEd29as0ocaFXLw" key="Copyright" value=""/>
+ <details xmi:id="_lg3q1sdtEd29as0ocaFXLw" key="Date" value="2008-12-11"/>
+ <details xmi:id="_lg3q18dtEd29as0ocaFXLw" key="Author" value="Yann Tanguy (CEA LIST)"/>
+ </eAnnotations>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lgt5gsdtEd29as0ocaFXLw" name="Union" eSuperTypes="_lgt5hcdtEd29as0ocaFXLw">
+ <eAnnotations xmi:id="_lgt5g8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lgt5hcdtEd29as0ocaFXLw" name="QualifiedType">
+ <eAnnotations xmi:id="_lgt5hsdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lgt5h8dtEd29as0ocaFXLw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lgt5icdtEd29as0ocaFXLw" name="Struct" eSuperTypes="_lgt5hcdtEd29as0ocaFXLw">
+ <eAnnotations xmi:id="_lgt5isdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lgt5jMdtEd29as0ocaFXLw" name="C_Typedef">
+ <eAnnotations xmi:id="_lgt5jcdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_ygvPAEHlEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lgt5jsdtEd29as0ocaFXLw" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lgt5kMdtEd29as0ocaFXLw" name="type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lgt5ksdtEd29as0ocaFXLw" name="base_PrimitiveType" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lgt5lMdtEd29as0ocaFXLw" name="C_Macro">
+ <eAnnotations xmi:id="_lgt5lcdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_HPbEkEHmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lgt5lsdtEd29as0ocaFXLw" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lgt5mMdtEd29as0ocaFXLw" name="body" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="__1kDEEP-EdyN-oOhaWIQYg" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/__1iN4EP-EdyN-oOhaWIQYg/32" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1kDEUP-EdyN-oOhaWIQYg" name="Union" eSuperTypes="__1kDFEP-EdyN-oOhaWIQYg">
+ <eAnnotations xmi:id="__1kDEkP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1kDFEP-EdyN-oOhaWIQYg" name="QualifiedType">
+ <eAnnotations xmi:id="__1kDFUP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1kDFkP-EdyN-oOhaWIQYg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1kDGEP-EdyN-oOhaWIQYg" name="Struct" eSuperTypes="__1kDFEP-EdyN-oOhaWIQYg">
+ <eAnnotations xmi:id="__1kDGUP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1kDG0P-EdyN-oOhaWIQYg" name="C_Typedef">
+ <eAnnotations xmi:id="__1kDHEP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_ygvPAEHlEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1kDHUP-EdyN-oOhaWIQYg" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1kDH0P-EdyN-oOhaWIQYg" name="type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1kDIUP-EdyN-oOhaWIQYg" name="base_PrimitiveType" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1kDI0P-EdyN-oOhaWIQYg" name="C_Macro">
+ <eAnnotations xmi:id="__1kDJEP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_HPbEkEHmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1kDJUP-EdyN-oOhaWIQYg" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1kDJ0P-EdyN-oOhaWIQYg" name="body" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_xvWLwEP9EdyXRJo_SB0POQ" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_xvUWkEP9EdyXRJo_SB0POQ/31" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvWLwUP9EdyXRJo_SB0POQ" name="Union" eSuperTypes="_xvWLxEP9EdyXRJo_SB0POQ">
+ <eAnnotations xmi:id="_xvWLwkP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvWLxEP9EdyXRJo_SB0POQ" name="QualifiedType">
+ <eAnnotations xmi:id="_xvWLxUP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvWLxkP9EdyXRJo_SB0POQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvWLyEP9EdyXRJo_SB0POQ" name="Struct" eSuperTypes="_xvWLxEP9EdyXRJo_SB0POQ">
+ <eAnnotations xmi:id="_xvWLyUP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvWLy0P9EdyXRJo_SB0POQ" name="C_Typedef">
+ <eAnnotations xmi:id="_xvWLzEP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_ygvPAEHlEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvWLzUP9EdyXRJo_SB0POQ" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvWLz0P9EdyXRJo_SB0POQ" name="type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvWL0UP9EdyXRJo_SB0POQ" name="base_PrimitiveType" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvWL00P9EdyXRJo_SB0POQ" name="C_Macro">
+ <eAnnotations xmi:id="_xvWL1EP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_HPbEkEHmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvWL1UP9EdyXRJo_SB0POQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvWL10P9EdyXRJo_SB0POQ" name="body" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_1gVnkEPxEdybAJ4m8R8XFA" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_1gUZcEPxEdybAJ4m8R8XFA/30" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gVnkUPxEdybAJ4m8R8XFA" name="Union" eSuperTypes="_1gVnlEPxEdybAJ4m8R8XFA">
+ <eAnnotations xmi:id="_1gVnkkPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gVnlEPxEdybAJ4m8R8XFA" name="QualifiedType">
+ <eAnnotations xmi:id="_1gVnlUPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gVnlkPxEdybAJ4m8R8XFA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gVnmEPxEdybAJ4m8R8XFA" name="Struct" eSuperTypes="_1gVnlEPxEdybAJ4m8R8XFA">
+ <eAnnotations xmi:id="_1gVnmUPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gVnm0PxEdybAJ4m8R8XFA" name="C_Typedef">
+ <eAnnotations xmi:id="_1gVnnEPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_ygvPAEHlEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gVnnUPxEdybAJ4m8R8XFA" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gVnn0PxEdybAJ4m8R8XFA" name="type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gWOoEPxEdybAJ4m8R8XFA" name="base_PrimitiveType" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gWOokPxEdybAJ4m8R8XFA" name="C_Macro">
+ <eAnnotations xmi:id="_1gWOo0PxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_HPbEkEHmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gWOpEPxEdybAJ4m8R8XFA" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_n2_MoUHmEdyxlrpSW7ggPQ" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_n2_MoEHmEdyxlrpSW7ggPQ/29" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n2_MokHmEdyxlrpSW7ggPQ" name="Union" eSuperTypes="_n2_MpUHmEdyxlrpSW7ggPQ">
+ <eAnnotations xmi:id="_n2_Mo0HmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n2_MpUHmEdyxlrpSW7ggPQ" name="QualifiedType">
+ <eAnnotations xmi:id="_n2_MpkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n2_Mp0HmEdyxlrpSW7ggPQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n2_MqUHmEdyxlrpSW7ggPQ" name="Struct" eSuperTypes="_n2_MpUHmEdyxlrpSW7ggPQ">
+ <eAnnotations xmi:id="_n2_MqkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n2_MrEHmEdyxlrpSW7ggPQ" name="C_Typedef">
+ <eAnnotations xmi:id="_n2_MrUHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_ygvPAEHlEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n2_zsEHmEdyxlrpSW7ggPQ" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n2_zskHmEdyxlrpSW7ggPQ" name="type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n2_ztEHmEdyxlrpSW7ggPQ" name="base_PrimitiveType" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n2_ztkHmEdyxlrpSW7ggPQ" name="C_Macro">
+ <eAnnotations xmi:id="_n2_zt0HmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_HPbEkEHmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n2_zuEHmEdyxlrpSW7ggPQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_FgDYsUHmEdyxlrpSW7ggPQ" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_FgDYsEHmEdyxlrpSW7ggPQ/28" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgDYskHmEdyxlrpSW7ggPQ" name="Union" eSuperTypes="_FgDYtUHmEdyxlrpSW7ggPQ">
+ <eAnnotations xmi:id="_FgDYs0HmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgDYtUHmEdyxlrpSW7ggPQ" name="QualifiedType">
+ <eAnnotations xmi:id="_FgDYtkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgDYt0HmEdyxlrpSW7ggPQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgD_wUHmEdyxlrpSW7ggPQ" name="Struct" eSuperTypes="_FgDYtUHmEdyxlrpSW7ggPQ">
+ <eAnnotations xmi:id="_FgD_wkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgD_xEHmEdyxlrpSW7ggPQ" name="C_Typedef">
+ <eAnnotations xmi:id="_FgD_xUHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_ygvPAEHlEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgD_xkHmEdyxlrpSW7ggPQ" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgD_yEHmEdyxlrpSW7ggPQ" name="type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgD_ykHmEdyxlrpSW7ggPQ" name="base_PrimitiveType" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Zdg1QUDsEdyjuIyCaGFHvQ" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_Zdg1QEDsEdyjuIyCaGFHvQ/27" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Zdg1QkDsEdyjuIyCaGFHvQ" name="Union" eSuperTypes="_Zdg1RUDsEdyjuIyCaGFHvQ">
+ <eAnnotations xmi:id="_Zdg1Q0DsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Zdg1RUDsEdyjuIyCaGFHvQ" name="QualifiedType">
+ <eAnnotations xmi:id="_Zdg1RkDsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Zdg1R0DsEdyjuIyCaGFHvQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Zdg1SUDsEdyjuIyCaGFHvQ" name="Struct" eSuperTypes="_Zdg1RUDsEdyjuIyCaGFHvQ">
+ <eAnnotations xmi:id="_Zdg1SkDsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_1fF84D98EdyWndo1HgT9Ig" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_1fEuwD98EdyWndo1HgT9Ig/26" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1fF84T98EdyWndo1HgT9Ig" name="Union" eSuperTypes="_1fF85D98EdyWndo1HgT9Ig">
+ <eAnnotations xmi:id="_1fF84j98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1fF85D98EdyWndo1HgT9Ig" name="QualifiedType">
+ <eAnnotations xmi:id="_1fF85T98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1fF85j98EdyWndo1HgT9Ig" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1fF86D98EdyWndo1HgT9Ig" name="Struct" eSuperTypes="_1fF85D98EdyWndo1HgT9Ig">
+ <eAnnotations xmi:id="_1fF86T98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_SYYHQD97EdydlOlmTTAQlA" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_SYW5ID97EdydlOlmTTAQlA/25" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SYYHQT97EdydlOlmTTAQlA" name="Union" eSuperTypes="_SYYHRD97EdydlOlmTTAQlA">
+ <eAnnotations xmi:id="_SYYHQj97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SYYHRD97EdydlOlmTTAQlA" name="QualifiedType">
+ <eAnnotations xmi:id="_SYYHRT97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SYYHRj97EdydlOlmTTAQlA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SYYHSD97EdydlOlmTTAQlA" name="Struct" eSuperTypes="_SYYHRD97EdydlOlmTTAQlA">
+ <eAnnotations xmi:id="_SYYHST97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_11xUMDweEdyHm6HnfLC8wA" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_11wGEDweEdyHm6HnfLC8wA/24" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_11xUMTweEdyHm6HnfLC8wA" name="Union" eSuperTypes="_11xUNDweEdyHm6HnfLC8wA">
+ <eAnnotations xmi:id="_11xUMjweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_11xUNDweEdyHm6HnfLC8wA" name="QualifiedType">
+ <eAnnotations xmi:id="_11xUNTweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_11xUNjweEdyHm6HnfLC8wA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_11xUODweEdyHm6HnfLC8wA" name="Struct" eSuperTypes="_11xUNDweEdyHm6HnfLC8wA">
+ <eAnnotations xmi:id="_11xUOTweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_mJLm4DwbEdy50P3mY4f53Q" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_mJKYwDwbEdy50P3mY4f53Q/23" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_mJLm4TwbEdy50P3mY4f53Q" name="Union" eSuperTypes="_mJLm5DwbEdy50P3mY4f53Q">
+ <eAnnotations xmi:id="_mJLm4jwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_mJLm5DwbEdy50P3mY4f53Q" name="QualifiedType">
+ <eAnnotations xmi:id="_mJLm5TwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_mJLm5jwbEdy50P3mY4f53Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_mJLm6DwbEdy50P3mY4f53Q" name="Struct" eSuperTypes="_mJLm5DwbEdy50P3mY4f53Q">
+ <eAnnotations xmi:id="_mJLm6TwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_-ILLQDnZEdyK9KOUzoZMXQ" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_-IJ9IDnZEdyK9KOUzoZMXQ/22" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-ILLQTnZEdyK9KOUzoZMXQ" name="Union" eSuperTypes="_-ILLRDnZEdyK9KOUzoZMXQ">
+ <eAnnotations xmi:id="_-ILLQjnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-ILLRDnZEdyK9KOUzoZMXQ" name="QualifiedType">
+ <eAnnotations xmi:id="_-ILLRTnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-ILLRjnZEdyK9KOUzoZMXQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-ILLSDnZEdyK9KOUzoZMXQ" name="Struct" eSuperTypes="_-ILLRDnZEdyK9KOUzoZMXQ">
+ <eAnnotations xmi:id="_-ILLSTnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_51bsEDnLEdyhj8_f1ShKKA" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_51ad8DnLEdyhj8_f1ShKKA/21" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_51bsETnLEdyhj8_f1ShKKA" name="Union" eSuperTypes="_51bsFDnLEdyhj8_f1ShKKA">
+ <eAnnotations xmi:id="_51bsEjnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_51bsFDnLEdyhj8_f1ShKKA" name="QualifiedType">
+ <eAnnotations xmi:id="_51bsFTnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_51bsFjnLEdyhj8_f1ShKKA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_51bsGDnLEdyhj8_f1ShKKA" name="Struct" eSuperTypes="_51bsFDnLEdyhj8_f1ShKKA">
+ <eAnnotations xmi:id="_51bsGTnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_U7HZEBtFEdyd3OUuj4yv-Q" name="ANSI_C" nsURI="http://PapyrusC/schemas/ANSI_C/_U7GK8BtFEdyd3OUuj4yv-Q/20" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_U7HZERtFEdyd3OUuj4yv-Q" name="Union" eSuperTypes="_U7HZExtFEdyd3OUuj4yv-Q">
+ <eAnnotations xmi:id="_U7HZEhtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_U7HZExtFEdyd3OUuj4yv-Q" name="QualifiedType">
+ <eAnnotations xmi:id="_U7HZFBtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_U7HZFRtFEdyd3OUuj4yv-Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_U7HZFhtFEdyd3OUuj4yv-Q" name="Struct" eSuperTypes="_U7HZExtFEdyd3OUuj4yv-Q">
+ <eAnnotations xmi:id="_U7HZFxtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_l_5vsRmYEdyYiu3uPO8AqQ" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_l_5vsBmYEdyYiu3uPO8AqQ/19" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_l_5vshmYEdyYiu3uPO8AqQ" name="Union" eSuperTypes="_l_5vtBmYEdyYiu3uPO8AqQ">
+ <eAnnotations xmi:id="_l_5vsxmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_l_5vtBmYEdyYiu3uPO8AqQ" name="QualifiedType">
+ <eAnnotations xmi:id="_l_5vtRmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_l_5vthmYEdyYiu3uPO8AqQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_l_5vtxmYEdyYiu3uPO8AqQ" name="Struct" eSuperTypes="_l_5vtBmYEdyYiu3uPO8AqQ">
+ <eAnnotations xmi:id="_l_5vuBmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_k7g6gBmYEdyYiu3uPO8AqQ" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_k7fsYBmYEdyYiu3uPO8AqQ/18" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_k7g6gRmYEdyYiu3uPO8AqQ" name="Union" eSuperTypes="_k7g6gxmYEdyYiu3uPO8AqQ">
+ <eAnnotations xmi:id="_k7g6ghmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_k7g6gxmYEdyYiu3uPO8AqQ" name="QualifiedType">
+ <eAnnotations xmi:id="_k7g6hBmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_k7g6hRmYEdyYiu3uPO8AqQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_k7g6hhmYEdyYiu3uPO8AqQ" name="Struct" eSuperTypes="_k7g6gxmYEdyYiu3uPO8AqQ">
+ <eAnnotations xmi:id="_k7g6hxmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_NDgS4RjwEdyGHM4pSbTixw" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_NDgS4BjwEdyGHM4pSbTixw/17" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NDgS4hjwEdyGHM4pSbTixw" name="Union" eSuperTypes="_NDgS5BjwEdyGHM4pSbTixw">
+ <eAnnotations xmi:id="_NDgS4xjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NDgS5BjwEdyGHM4pSbTixw" name="QualifiedType">
+ <eAnnotations xmi:id="_NDgS5RjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NDgS5hjwEdyGHM4pSbTixw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NDgS5xjwEdyGHM4pSbTixw" name="Struct" eSuperTypes="_NDgS5BjwEdyGHM4pSbTixw">
+ <eAnnotations xmi:id="_NDg58BjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_VtuGcRjvEdyGHM4pSbTixw" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_VtuGcBjvEdyGHM4pSbTixw/16" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VtuGchjvEdyGHM4pSbTixw" name="Union" eSuperTypes="_VtuGdBjvEdyGHM4pSbTixw">
+ <eAnnotations xmi:id="_VtuGcxjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VtuGdBjvEdyGHM4pSbTixw" name="QualifiedType">
+ <eAnnotations xmi:id="_VtuGdRjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VtuGdhjvEdyGHM4pSbTixw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VtuGdxjvEdyGHM4pSbTixw" name="Struct" eSuperTypes="_VtuGdBjvEdyGHM4pSbTixw">
+ <eAnnotations xmi:id="_VtuGeBjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_VqJqgRjuEdyGHM4pSbTixw" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_VqJqgBjuEdyGHM4pSbTixw/15" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VqJqghjuEdyGHM4pSbTixw" name="Union" eSuperTypes="_VqJqhBjuEdyGHM4pSbTixw">
+ <eAnnotations xmi:id="_VqJqgxjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VqJqhBjuEdyGHM4pSbTixw" name="QualifiedType">
+ <eAnnotations xmi:id="_VqJqhRjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VqJqhhjuEdyGHM4pSbTixw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VqJqhxjuEdyGHM4pSbTixw" name="Struct" eSuperTypes="_VqJqhBjuEdyGHM4pSbTixw">
+ <eAnnotations xmi:id="_VqJqiBjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_XLxgMBjsEdyGHM4pSbTixw" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_XLwSEBjsEdyGHM4pSbTixw/14" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_XLxgMRjsEdyGHM4pSbTixw" name="Union" eSuperTypes="_XLxgMxjsEdyGHM4pSbTixw">
+ <eAnnotations xmi:id="_XLxgMhjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_XLxgMxjsEdyGHM4pSbTixw" name="QualifiedType">
+ <eAnnotations xmi:id="_XLxgNBjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_XLxgNRjsEdyGHM4pSbTixw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_XLxgNhjsEdyGHM4pSbTixw" name="Struct" eSuperTypes="_XLxgMxjsEdyGHM4pSbTixw">
+ <eAnnotations xmi:id="_XLxgNxjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_koIlMBjMEdyo-J6sTQ4XlA" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_koH-IBjMEdyo-J6sTQ4XlA/13" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_koIlMRjMEdyo-J6sTQ4XlA" name="Union" eSuperTypes="_koIlMxjMEdyo-J6sTQ4XlA">
+ <eAnnotations xmi:id="_koIlMhjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_koIlMxjMEdyo-J6sTQ4XlA" name="QualifiedType">
+ <eAnnotations xmi:id="_koIlNBjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_koIlNRjMEdyo-J6sTQ4XlA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_koIlNhjMEdyo-J6sTQ4XlA" name="Struct" eSuperTypes="_koIlMxjMEdyo-J6sTQ4XlA">
+ <eAnnotations xmi:id="_koIlNxjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_WhL4oBjMEdyo-J6sTQ4XlA" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_WhKqgBjMEdyo-J6sTQ4XlA/12" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_WhL4oRjMEdyo-J6sTQ4XlA" name="Union" eSuperTypes="_WhL4oxjMEdyo-J6sTQ4XlA">
+ <eAnnotations xmi:id="_WhL4ohjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_WhL4oxjMEdyo-J6sTQ4XlA" name="QualifiedType">
+ <eAnnotations xmi:id="_WhL4pBjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_WhL4pRjMEdyo-J6sTQ4XlA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_WhL4phjMEdyo-J6sTQ4XlA" name="Struct" eSuperTypes="_WhL4oxjMEdyo-J6sTQ4XlA">
+ <eAnnotations xmi:id="_WhL4pxjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Tny_wRjDEdyfI_WOjDrRyg" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_Tny_wBjDEdyfI_WOjDrRyg/11" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Tny_whjDEdyfI_WOjDrRyg" name="Union" eSuperTypes="_Tny_xBjDEdyfI_WOjDrRyg">
+ <eAnnotations xmi:id="_Tny_wxjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Tny_xBjDEdyfI_WOjDrRyg" name="QualifiedType">
+ <eAnnotations xmi:id="_Tny_xRjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Tny_xhjDEdyfI_WOjDrRyg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Tny_xxjDEdyfI_WOjDrRyg" name="Struct" eSuperTypes="_Tny_xBjDEdyfI_WOjDrRyg">
+ <eAnnotations xmi:id="_Tny_yBjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Fv4DIBjCEdyfI_WOjDrRyg" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_Fv3cEBjCEdyfI_WOjDrRyg/10" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Fv4DIRjCEdyfI_WOjDrRyg" name="Union" eSuperTypes="_Fv4DIxjCEdyfI_WOjDrRyg">
+ <eAnnotations xmi:id="_Fv4DIhjCEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Fv4DIxjCEdyfI_WOjDrRyg" name="QualifiedType">
+ <eAnnotations xmi:id="_Fv4DJBjCEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Fv4DJRjCEdyfI_WOjDrRyg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Fv4DJhjCEdyfI_WOjDrRyg" name="Struct" eSuperTypes="_Fv4DIxjCEdyfI_WOjDrRyg">
+ <eAnnotations xmi:id="_Fv4DJxjCEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Vzp8sBiqEdyL78Gqc5OeNA" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_VzpVoBiqEdyL78Gqc5OeNA/9" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Vzp8sRiqEdyL78Gqc5OeNA" name="Union" eSuperTypes="_Vzp8sxiqEdyL78Gqc5OeNA">
+ <eAnnotations xmi:id="_Vzp8shiqEdyL78Gqc5OeNA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Vzp8sxiqEdyL78Gqc5OeNA" name="QualifiedType">
+ <eAnnotations xmi:id="_Vzp8tBiqEdyL78Gqc5OeNA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Vzp8tRiqEdyL78Gqc5OeNA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Vzp8thiqEdyL78Gqc5OeNA" name="Struct" eSuperTypes="_Vzp8sxiqEdyL78Gqc5OeNA">
+ <eAnnotations xmi:id="_Vzp8txiqEdyL78Gqc5OeNA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_24VU0RYIEdylxOSGZvSthg" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_24VU0BYIEdylxOSGZvSthg/8" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_24VU0hYIEdylxOSGZvSthg" name="Union" eSuperTypes="_24VU1BYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_24VU0xYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_24VU1BYIEdylxOSGZvSthg" name="QualifiedType">
+ <eAnnotations xmi:id="_24VU1RYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_24VU1hYIEdylxOSGZvSthg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_24VU1xYIEdylxOSGZvSthg" name="Struct" eSuperTypes="_24VU1BYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_24VU2BYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_24VU2RYIEdylxOSGZvSthg" name="PrimitiveType" eSuperTypes="_24VU1BYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_24VU2hYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24VU2xYIEdylxOSGZvSthg" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24VU3BYIEdylxOSGZvSthg" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24VU3RYIEdylxOSGZvSthg" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_24VU3hYIEdylxOSGZvSthg"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_24VU3hYIEdylxOSGZvSthg" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_24VU3xYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_24VU4BYIEdylxOSGZvSthg" name="void"/>
+ <eLiterals xmi:id="_24VU4RYIEdylxOSGZvSthg" name="char" value="1"/>
+ <eLiterals xmi:id="_24VU4hYIEdylxOSGZvSthg" name="int" value="2"/>
+ <eLiterals xmi:id="_24VU4xYIEdylxOSGZvSthg" name="float" value="3"/>
+ <eLiterals xmi:id="_24VU5BYIEdylxOSGZvSthg" name="double" value="4"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_hMJVMBYIEdylxOSGZvSthg" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_hMIuIBYIEdylxOSGZvSthg/7" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_hMJVMRYIEdylxOSGZvSthg" name="Union" eSuperTypes="_hMJVMxYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_hMJVMhYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_hMJVMxYIEdylxOSGZvSthg" name="QualifiedType">
+ <eAnnotations xmi:id="_hMJVNBYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_hMJVNRYIEdylxOSGZvSthg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_hMJVNhYIEdylxOSGZvSthg" name="Struct" eSuperTypes="_hMJVMxYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_hMJVNxYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_hMJVOBYIEdylxOSGZvSthg" name="PrimitiveType" eSuperTypes="_hMJVMxYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_hMJVORYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMJVOhYIEdylxOSGZvSthg" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMJVOxYIEdylxOSGZvSthg" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMJVPBYIEdylxOSGZvSthg" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_hMJVPRYIEdylxOSGZvSthg"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_hMJVPRYIEdylxOSGZvSthg" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_hMJVPhYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_hMJVPxYIEdylxOSGZvSthg" name="void"/>
+ <eLiterals xmi:id="_hMJVQBYIEdylxOSGZvSthg" name="char" value="1"/>
+ <eLiterals xmi:id="_hMJVQRYIEdylxOSGZvSthg" name="int" value="2"/>
+ <eLiterals xmi:id="_hMJVQhYIEdylxOSGZvSthg" name="float" value="3"/>
+ <eLiterals xmi:id="_hMJVQxYIEdylxOSGZvSthg" name="double" value="4"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_DuYPoBYIEdylxOSGZvSthg" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_DuWacBYIEdylxOSGZvSthg/6" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_DuYPoRYIEdylxOSGZvSthg" name="Union" eSuperTypes="_DuYPoxYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_DuYPohYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_DuYPoxYIEdylxOSGZvSthg" name="QualifiedType">
+ <eAnnotations xmi:id="_DuYPpBYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_DuYPpRYIEdylxOSGZvSthg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_DuYPphYIEdylxOSGZvSthg" name="Struct" eSuperTypes="_DuYPoxYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_DuYPpxYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_DuYPqBYIEdylxOSGZvSthg" name="PrimitiveType" eSuperTypes="_DuYPoxYIEdylxOSGZvSthg">
+ <eAnnotations xmi:id="_DuYPqRYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_DuYPqhYIEdylxOSGZvSthg" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_DuYPqxYIEdylxOSGZvSthg" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_DuYPrBYIEdylxOSGZvSthg" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_DuYPrRYIEdylxOSGZvSthg"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_DuYPrRYIEdylxOSGZvSthg" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_DuYPrhYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_DuYPrxYIEdylxOSGZvSthg" name="void"/>
+ <eLiterals xmi:id="_DuYPsBYIEdylxOSGZvSthg" name="char" value="1"/>
+ <eLiterals xmi:id="_DuYPsRYIEdylxOSGZvSthg" name="int" value="2"/>
+ <eLiterals xmi:id="_DuYPshYIEdylxOSGZvSthg" name="float" value="3"/>
+ <eLiterals xmi:id="_DuYPsxYIEdylxOSGZvSthg" name="double" value="4"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_gkQdkRU-EdyGtuGaCXC25Q" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_gkQdkBU-EdyGtuGaCXC25Q/5" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_gkQdkhU-EdyGtuGaCXC25Q" name="Union" eSuperTypes="_gkQdlBU-EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_gkQdkxU-EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_gkQdlBU-EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_gkQdlRU-EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_gkQdlhU-EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_gkQdlxU-EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_gkQdlBU-EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_gkQdmBU-EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_gkQdmRU-EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_gkQdlBU-EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_gkQdmhU-EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkQdmxU-EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkQdnBU-EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkQdnRU-EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_gkQdnhU-EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_gkQdnhU-EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_gkQdnxU-EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_gkQdoBU-EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_gkQdoRU-EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_gkQdohU-EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_gkQdoxU-EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_gkQdpBU-EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_gkREoBU-EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_gkREoRU-EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_gkREohU-EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_gkREoxU-EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_gkREpBU-EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_gkREpRU-EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_gkREphU-EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_gkREpxU-EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_gkREqBU-EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkREqRU-EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_gkREoBU-EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_gkREqhU-EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkREqxU-EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRErBU-EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRErRU-EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_-EpOwBU9EdyGtuGaCXC25Q" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_-EonsBU9EdyGtuGaCXC25Q/4" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-EpOwRU9EdyGtuGaCXC25Q" name="Union" eSuperTypes="_-EpOwxU9EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_-EpOwhU9EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-EpOwxU9EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_-EpOxBU9EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-EpOxRU9EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-EpOxhU9EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_-EpOwxU9EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_-EpOxxU9EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-EpOyBU9EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_-EpOwxU9EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_-EpOyRU9EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-EpOyhU9EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-EpOyxU9EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-EpOzBU9EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_-EpOzRU9EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_-EpOzRU9EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_-EpOzhU9EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_-EpOzxU9EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_-EpO0BU9EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_-EpO0RU9EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_-EpO0hU9EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_-EpO0xU9EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_-EpO1BU9EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_-EpO1RU9EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_-EpO1hU9EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_-EpO1xU9EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_-EpO2BU9EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_-EpO2RU9EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_-EpO2hU9EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-EpO2xU9EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_-EpO3BU9EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-EpO3RU9EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_-EpO1BU9EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-EpO3hU9EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-EpO3xU9EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-EpO4BU9EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-EpO4RU9EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_NYvAsBU6EdyGtuGaCXC25Q" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_NYuZoBU6EdyGtuGaCXC25Q/3" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NYvAsRU6EdyGtuGaCXC25Q" name="Union" eSuperTypes="_NYvAsxU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_NYvAshU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NYvAsxU6EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_NYvAtBU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NYvAtRU6EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NYvAthU6EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_NYvAsxU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_NYvAtxU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NYvAuBU6EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_NYvAsxU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_NYvAuRU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NYvAuhU6EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NYvAuxU6EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NYvAvBU6EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_NYvAvRU6EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_NYvAvRU6EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_NYvAvhU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_NYvAvxU6EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_NYvAwBU6EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_NYvAwRU6EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_NYvAwhU6EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_NYvAwxU6EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_NYvAxBU6EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_NYvAxRU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_NYvAxhU6EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_NYvAxxU6EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_NYvnwBU6EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_NYvnwRU6EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_NYvnwhU6EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NYvnwxU6EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_NYvnxBU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NYvnxRU6EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_NYvAxBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NYvnxhU6EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NYvnxxU6EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NYvnyBU6EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NYvnyRU6EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_IEXkEBU6EdyGtuGaCXC25Q" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_IEW9ABU6EdyGtuGaCXC25Q/2" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_IEXkERU6EdyGtuGaCXC25Q" name="Union" eSuperTypes="_IEXkExU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_IEXkEhU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_IEXkExU6EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_IEXkFBU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_IEXkFRU6EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_IEXkFhU6EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_IEXkExU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_IEXkFxU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_IEXkGBU6EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_IEXkExU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_IEXkGRU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_IEXkGhU6EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_IEXkGxU6EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_IEXkHBU6EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_IEXkHRU6EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_IEXkHRU6EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_IEXkHhU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_IEXkHxU6EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_IEXkIBU6EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_IEXkIRU6EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_IEXkIhU6EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_IEXkIxU6EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_IEXkJBU6EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_IEXkJRU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_IEXkJhU6EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_IEXkJxU6EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_IEXkKBU6EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_IEXkKRU6EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_IEXkKhU6EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_IEXkKxU6EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_IEXkLBU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_IEXkLRU6EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_IEXkJBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_IEXkLhU6EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_IEXkLxU6EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_IEXkMBU6EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_IEXkMRU6EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_E7GGARU6EdyGtuGaCXC25Q" name="ANSI_C" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSI_C/_E7GGABU6EdyGtuGaCXC25Q/1" nsPrefix="ANSI_C">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_E7GGAhU6EdyGtuGaCXC25Q" name="Union" eSuperTypes="_E7GGBBU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_E7GGAxU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_E7GGBBU6EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_E7GGBRU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_E7GGBhU6EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_E7GGBxU6EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_E7GGBBU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_E7GGCBU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_E7GGCRU6EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_E7GGBBU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_E7GGChU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_E7GGCxU6EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_E7GGDBU6EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_E7GGDRU6EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_E7GtEBU6EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_E7GtEBU6EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_E7GtERU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_E7GtEhU6EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_E7HUIBU6EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_E7HUIRU6EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_E7HUIhU6EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_E7HUIxU6EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_E7HUJBU6EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_E7HUJRU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_E7HUJhU6EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_E7HUJxU6EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_E7HUKBU6EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_E7HUKRU6EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_E7HUKhU6EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_E7HUKxU6EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_E7HULBU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_E7HULRU6EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_E7HUJBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_E7HULhU6EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_E7HULxU6EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_E7HUMBU6EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_E7HUMRU6EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_BZiq0BU6EdyGtuGaCXC25Q" name="ANSIC" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/ANSIC/_BZg1oBU6EdyGtuGaCXC25Q/0" nsPrefix="ANSIC">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_BZiq0RU6EdyGtuGaCXC25Q" name="Union" eSuperTypes="_BZiq0xU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_BZiq0hU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_tLnF8NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_BZiq0xU6EdyGtuGaCXC25Q" name="QualifiedType">
+ <eAnnotations xmi:id="_BZiq1BU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_hyzoYNt3EduxXYGi8mOVFA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_BZiq1RU6EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_BZiq1hU6EdyGtuGaCXC25Q" name="Struct" eSuperTypes="_BZiq0xU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_BZiq1xU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_vF0I0NtyEduxXYGi8mOVFA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_BZiq2BU6EdyGtuGaCXC25Q" name="PrimitiveType" eSuperTypes="_BZiq0xU6EdyGtuGaCXC25Q">
+ <eAnnotations xmi:id="_BZiq2RU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_BZiq2hU6EdyGtuGaCXC25Q" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_BZiq2xU6EdyGtuGaCXC25Q" name="isLong" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_BZiq3BU6EdyGtuGaCXC25Q" name="specifier" ordered="false" unique="false" lowerBound="1" eType="_BZiq3RU6EdyGtuGaCXC25Q"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_BZiq3RU6EdyGtuGaCXC25Q" name="PrimitiveTypeSpecifierKind">
+ <eAnnotations xmi:id="_BZiq3hU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eLiterals xmi:id="_BZiq3xU6EdyGtuGaCXC25Q" name="void"/>
+ <eLiterals xmi:id="_BZiq4BU6EdyGtuGaCXC25Q" name="char" value="1"/>
+ <eLiterals xmi:id="_BZiq4RU6EdyGtuGaCXC25Q" name="int" value="2"/>
+ <eLiterals xmi:id="_BZiq4hU6EdyGtuGaCXC25Q" name="float" value="3"/>
+ <eLiterals xmi:id="_BZiq4xU6EdyGtuGaCXC25Q" name="double" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_BZiq5BU6EdyGtuGaCXC25Q" name="StorageClass">
+ <eAnnotations xmi:id="_BZiq5RU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_BZiq5hU6EdyGtuGaCXC25Q" name="auto"/>
+ <eLiterals xmi:id="_BZiq5xU6EdyGtuGaCXC25Q" name="register" value="1"/>
+ <eLiterals xmi:id="_BZiq6BU6EdyGtuGaCXC25Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_BZiq6RU6EdyGtuGaCXC25Q" name="static" value="3"/>
+ <eLiterals xmi:id="_BZiq6hU6EdyGtuGaCXC25Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_BZiq6xU6EdyGtuGaCXC25Q" name="TypedElement">
+ <eAnnotations xmi:id="_BZiq7BU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_BZiq7RU6EdyGtuGaCXC25Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_BZiq5BU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_BZiq7hU6EdyGtuGaCXC25Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_BZiq7xU6EdyGtuGaCXC25Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_BZiq8BU6EdyGtuGaCXC25Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_BZiq8RU6EdyGtuGaCXC25Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ </eAnnotations>
+ <elementImport xmi:id="_gajFsEHlEdyxlrpSW7ggPQ" alias="PrimitiveType">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </elementImport>
+ <elementImport xmi:id="_ZM26gEHmEdyxlrpSW7ggPQ" alias="Feature">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
+ </elementImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_tLnF8NtyEduxXYGi8mOVFA" name="Union">
+ <generalization xmi:id="_fg9sUNudEdu40vrGR5q4gQ" general="_hyzoYNt3EduxXYGi8mOVFA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_vF0I0NtyEduxXYGi8mOVFA" name="Struct">
+ <generalization xmi:id="_f6rM0NudEdu40vrGR5q4gQ" general="_hyzoYNt3EduxXYGi8mOVFA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_hyzoYNt3EduxXYGi8mOVFA" name="QualifiedType">
+ <ownedAttribute xmi:id="_f50bwNueEdu40vrGR5q4gQ" name="base_Type" isUnique="false" association="_f5x_gNueEdu40vrGR5q4gQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Type"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_f5x_gNueEdu40vrGR5q4gQ" name="Extension_C_QualifiedType" memberEnd="_f5ymkNueEdu40vrGR5q4gQ _f50bwNueEdu40vrGR5q4gQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_f5ymkNueEdu40vrGR5q4gQ" name="extension_C_QualifiedType" type="_hyzoYNt3EduxXYGi8mOVFA" aggregation="composite" association="_f5x_gNueEdu40vrGR5q4gQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_ygvPAEHlEdyxlrpSW7ggPQ" name="C_Typedef">
+ <ownedAttribute xmi:id="_zIUzcEHlEdyxlrpSW7ggPQ" name="isUnsigned" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_88h4cEHlEdyxlrpSW7ggPQ" name="type" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_DkGCUEHmEdyxlrpSW7ggPQ" name="base_PrimitiveType" isUnique="false" association="_DkBw4EHmEdyxlrpSW7ggPQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_DkBw4EHmEdyxlrpSW7ggPQ" name="Extension_C_Typedef" memberEnd="_DkDmEEHmEdyxlrpSW7ggPQ _DkGCUEHmEdyxlrpSW7ggPQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_DkDmEEHmEdyxlrpSW7ggPQ" name="extension_C_Typedef" type="_ygvPAEHlEdyxlrpSW7ggPQ" aggregation="composite" association="_DkBw4EHmEdyxlrpSW7ggPQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_HPbEkEHmEdyxlrpSW7ggPQ" name="C_Macro">
+ <ownedAttribute xmi:id="_UbCQEEPwEdyRdtrzgCMxHg" name="base_Feature" isUnique="false" association="_Ua9XkEPwEdyRdtrzgCMxHg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_lE-x8EP9EdyXRJo_SB0POQ" name="body" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Ua9XkEPwEdyRdtrzgCMxHg" name="Extension_C_Macro" memberEnd="_Ua_MwEPwEdyRdtrzgCMxHg _UbCQEEPwEdyRdtrzgCMxHg">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Ua_MwEPwEdyRdtrzgCMxHg" name="extension_C_Macro" type="_HPbEkEHmEdyxlrpSW7ggPQ" aggregation="composite" association="_Ua9XkEPwEdyRdtrzgCMxHg"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Profile" xmi:id="_GPY_cBU6EdyGtuGaCXC25Q" name="CGenerator" metaclassReference="_zgFD0BU9EdyGtuGaCXC25Q _FIQWYBiqEdyL78Gqc5OeNA _KpH0kBjDEdyfI_WOjDrRyg _Hv59MBjuEdyGHM4pSbTixw _ONCjQBjvEdyGHM4pSbTixw _fMxPABmYEdyYiu3uPO8AqQ">
+ <eAnnotations xmi:id="_IEXkMxU6EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <contents xmi:type="ecore:EPackage" xmi:id="_7bRFQcdtEd29as0ocaFXLw" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_7bRFQMdtEd29as0ocaFXLw/32" nsPrefix="CGenerator">
+ <eAnnotations xmi:id="_7bRFmsdtEd29as0ocaFXLw" source="PapyrusVersion">
+ <details xmi:id="_7bRFm8dtEd29as0ocaFXLw" key="Version" value="1.1.0"/>
+ <details xmi:id="_7bRFnMdtEd29as0ocaFXLw" key="Comment" value=""/>
+ <details xmi:id="_7bRFncdtEd29as0ocaFXLw" key="Copyright" value=""/>
+ <details xmi:id="_7bRFnsdtEd29as0ocaFXLw" key="Date" value="2008-12-11"/>
+ <details xmi:id="_7bRFn8dtEd29as0ocaFXLw" key="Author" value="Yann Tanguy (CEA LIST)"/>
+ </eAnnotations>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bRFQsdtEd29as0ocaFXLw" name="C_Type">
+ <eAnnotations xmi:id="_7bRFQ8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFRMdtEd29as0ocaFXLw" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFRsdtEd29as0ocaFXLw" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFSMdtEd29as0ocaFXLw" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFSsdtEd29as0ocaFXLw" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bRFTMdtEd29as0ocaFXLw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bRFTsdtEd29as0ocaFXLw" name="C_Feature">
+ <eAnnotations xmi:id="_7bRFT8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFUMdtEd29as0ocaFXLw" name="storageClass" ordered="false" unique="false" eType="_7bRFZMdtEd29as0ocaFXLw"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFUsdtEd29as0ocaFXLw" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFVMdtEd29as0ocaFXLw" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFVsdtEd29as0ocaFXLw" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFWMdtEd29as0ocaFXLw" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFWsdtEd29as0ocaFXLw" name="acess" ordered="false" unique="false" lowerBound="1" eType="_7bRFa8dtEd29as0ocaFXLw"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFXMdtEd29as0ocaFXLw" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFXsdtEd29as0ocaFXLw" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bRFYMdtEd29as0ocaFXLw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bRFYsdtEd29as0ocaFXLw" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_7bRFZMdtEd29as0ocaFXLw" name="StorageClass">
+ <eAnnotations xmi:id="_7bRFZcdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_7bRFZsdtEd29as0ocaFXLw" name="auto"/>
+ <eLiterals xmi:id="_7bRFZ8dtEd29as0ocaFXLw" name="register" value="1"/>
+ <eLiterals xmi:id="_7bRFaMdtEd29as0ocaFXLw" name="extern" value="2"/>
+ <eLiterals xmi:id="_7bRFacdtEd29as0ocaFXLw" name="static" value="3"/>
+ <eLiterals xmi:id="_7bRFasdtEd29as0ocaFXLw" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_7bRFa8dtEd29as0ocaFXLw" name="AccessKind">
+ <eAnnotations xmi:id="_7bRFbMdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_7bRFbcdtEd29as0ocaFXLw" name="read"/>
+ <eLiterals xmi:id="_7bRFbsdtEd29as0ocaFXLw" name="write" value="1"/>
+ <eLiterals xmi:id="_7bRFb8dtEd29as0ocaFXLw" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bRFcMdtEd29as0ocaFXLw" name="NoGenCode">
+ <eAnnotations xmi:id="_7bRFccdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bRFcsdtEd29as0ocaFXLw" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bRFdMdtEd29as0ocaFXLw" name="C_NamedElement">
+ <eAnnotations xmi:id="_7bRFdcdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFdsdtEd29as0ocaFXLw" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFeMdtEd29as0ocaFXLw" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFesdtEd29as0ocaFXLw" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bRFfMdtEd29as0ocaFXLw" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_7bRFfsdtEd29as0ocaFXLw" name="Importer">
+ <eAnnotations xmi:id="_7bRFf8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_7bRFgMdtEd29as0ocaFXLw" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_7bRFgsdtEd29as0ocaFXLw" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_lg3qgcdtEd29as0ocaFXLw" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_lg3qgMdtEd29as0ocaFXLw/31" nsPrefix="CGenerator">
+ <eAnnotations xmi:id="_lhA0csdtEd29as0ocaFXLw" source="PapyrusVersion">
+ <details xmi:id="_lhA0c8dtEd29as0ocaFXLw" key="Version" value="1.0.0"/>
+ <details xmi:id="_lhA0dMdtEd29as0ocaFXLw" key="Comment" value=""/>
+ <details xmi:id="_lhA0dcdtEd29as0ocaFXLw" key="Copyright" value=""/>
+ <details xmi:id="_lhA0dsdtEd29as0ocaFXLw" key="Date" value="2008-12-11"/>
+ <details xmi:id="_lhA0d8dtEd29as0ocaFXLw" key="Author" value="Yann Tanguy (CEA LIST)"/>
+ </eAnnotations>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lg3qgsdtEd29as0ocaFXLw" name="C_Type">
+ <eAnnotations xmi:id="_lg3qg8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qhMdtEd29as0ocaFXLw" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qhsdtEd29as0ocaFXLw" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qiMdtEd29as0ocaFXLw" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qisdtEd29as0ocaFXLw" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lg3qjMdtEd29as0ocaFXLw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lg3qjsdtEd29as0ocaFXLw" name="C_Feature">
+ <eAnnotations xmi:id="_lg3qj8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_lg3qkMdtEd29as0ocaFXLw" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_lg3qkcdtEd29as0ocaFXLw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_lg3qksdtEd29as0ocaFXLw" source="redefines" references="_lg3qnMdtEd29as0ocaFXLw"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qlMdtEd29as0ocaFXLw" name="storageClass" ordered="false" unique="false" eType="_lg3qqMdtEd29as0ocaFXLw"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qlsdtEd29as0ocaFXLw" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qmMdtEd29as0ocaFXLw" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qmsdtEd29as0ocaFXLw" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lg3qnMdtEd29as0ocaFXLw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qnsdtEd29as0ocaFXLw" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qoMdtEd29as0ocaFXLw" name="acess" ordered="false" unique="false" lowerBound="1" eType="_lg3qr8dtEd29as0ocaFXLw"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qosdtEd29as0ocaFXLw" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qpMdtEd29as0ocaFXLw" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lg3qpsdtEd29as0ocaFXLw" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_lg3qqMdtEd29as0ocaFXLw" name="StorageClass">
+ <eAnnotations xmi:id="_lg3qqcdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_lg3qqsdtEd29as0ocaFXLw" name="auto"/>
+ <eLiterals xmi:id="_lg3qq8dtEd29as0ocaFXLw" name="register" value="1"/>
+ <eLiterals xmi:id="_lg3qrMdtEd29as0ocaFXLw" name="extern" value="2"/>
+ <eLiterals xmi:id="_lg3qrcdtEd29as0ocaFXLw" name="static" value="3"/>
+ <eLiterals xmi:id="_lg3qrsdtEd29as0ocaFXLw" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_lg3qr8dtEd29as0ocaFXLw" name="AccessKind">
+ <eAnnotations xmi:id="_lg3qsMdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_lg3qscdtEd29as0ocaFXLw" name="read"/>
+ <eLiterals xmi:id="_lg3qssdtEd29as0ocaFXLw" name="write" value="1"/>
+ <eLiterals xmi:id="_lg3qs8dtEd29as0ocaFXLw" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lg3qtMdtEd29as0ocaFXLw" name="NoGenCode">
+ <eAnnotations xmi:id="_lg3qtcdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lg3qtsdtEd29as0ocaFXLw" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lg3quMdtEd29as0ocaFXLw" name="C_NamedElement">
+ <eAnnotations xmi:id="_lg3qucdtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qusdtEd29as0ocaFXLw" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qvMdtEd29as0ocaFXLw" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qvsdtEd29as0ocaFXLw" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lg3qwMdtEd29as0ocaFXLw" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_lg3qwsdtEd29as0ocaFXLw" name="Importer">
+ <eAnnotations xmi:id="_lg3qw8dtEd29as0ocaFXLw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_lg3qxMdtEd29as0ocaFXLw" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_lg3qxsdtEd29as0ocaFXLw" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="__1yskEP-EdyN-oOhaWIQYg" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/__1yFgEP-EdyN-oOhaWIQYg/30" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1yskUP-EdyN-oOhaWIQYg" name="C_Type">
+ <eAnnotations xmi:id="__1yskkP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1ysk0P-EdyN-oOhaWIQYg" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1yslUP-EdyN-oOhaWIQYg" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1ysl0P-EdyN-oOhaWIQYg" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1ysmUP-EdyN-oOhaWIQYg" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1ysm0P-EdyN-oOhaWIQYg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1ysnUP-EdyN-oOhaWIQYg" name="C_Feature">
+ <eAnnotations xmi:id="__1ysnkP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="__1ysn0P-EdyN-oOhaWIQYg" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="__1ysoEP-EdyN-oOhaWIQYg" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="__1ysoUP-EdyN-oOhaWIQYg" source="redefines" references="__1zTpUP-EdyN-oOhaWIQYg"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1yso0P-EdyN-oOhaWIQYg" name="storageClass" ordered="false" unique="false" eType="__1zTsUP-EdyN-oOhaWIQYg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1yspUP-EdyN-oOhaWIQYg" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zToUP-EdyN-oOhaWIQYg" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTo0P-EdyN-oOhaWIQYg" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1zTpUP-EdyN-oOhaWIQYg" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTp0P-EdyN-oOhaWIQYg" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTqUP-EdyN-oOhaWIQYg" name="acess" ordered="false" unique="false" lowerBound="1" eType="__1zTuEP-EdyN-oOhaWIQYg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTq0P-EdyN-oOhaWIQYg" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTrUP-EdyN-oOhaWIQYg" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1zTr0P-EdyN-oOhaWIQYg" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="__1zTsUP-EdyN-oOhaWIQYg" name="StorageClass">
+ <eAnnotations xmi:id="__1zTskP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="__1zTs0P-EdyN-oOhaWIQYg" name="auto"/>
+ <eLiterals xmi:id="__1zTtEP-EdyN-oOhaWIQYg" name="register" value="1"/>
+ <eLiterals xmi:id="__1zTtUP-EdyN-oOhaWIQYg" name="extern" value="2"/>
+ <eLiterals xmi:id="__1zTtkP-EdyN-oOhaWIQYg" name="static" value="3"/>
+ <eLiterals xmi:id="__1zTt0P-EdyN-oOhaWIQYg" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="__1zTuEP-EdyN-oOhaWIQYg" name="AccessKind">
+ <eAnnotations xmi:id="__1zTuUP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="__1zTukP-EdyN-oOhaWIQYg" name="read"/>
+ <eLiterals xmi:id="__1zTu0P-EdyN-oOhaWIQYg" name="write" value="1"/>
+ <eLiterals xmi:id="__1zTvEP-EdyN-oOhaWIQYg" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1zTvUP-EdyN-oOhaWIQYg" name="NoGenCode">
+ <eAnnotations xmi:id="__1zTvkP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1zTv0P-EdyN-oOhaWIQYg" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1zTwUP-EdyN-oOhaWIQYg" name="C_NamedElement">
+ <eAnnotations xmi:id="__1zTwkP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTw0P-EdyN-oOhaWIQYg" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTxUP-EdyN-oOhaWIQYg" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTx0P-EdyN-oOhaWIQYg" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1zTyUP-EdyN-oOhaWIQYg" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="__1zTy0P-EdyN-oOhaWIQYg" name="Importer">
+ <eAnnotations xmi:id="__1zTzEP-EdyN-oOhaWIQYg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="__1zTzUP-EdyN-oOhaWIQYg" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="__1zTz0P-EdyN-oOhaWIQYg" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_xvdggEP9EdyXRJo_SB0POQ" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_xvcSYEP9EdyXRJo_SB0POQ/29" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvdggUP9EdyXRJo_SB0POQ" name="C_Type">
+ <eAnnotations xmi:id="_xvdggkP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgg0P9EdyXRJo_SB0POQ" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdghUP9EdyXRJo_SB0POQ" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgh0P9EdyXRJo_SB0POQ" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgiUP9EdyXRJo_SB0POQ" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvdgi0P9EdyXRJo_SB0POQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvdgjUP9EdyXRJo_SB0POQ" name="C_Feature">
+ <eAnnotations xmi:id="_xvdgjkP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_xvdgj0P9EdyXRJo_SB0POQ" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_xvdgkEP9EdyXRJo_SB0POQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_xvdgkUP9EdyXRJo_SB0POQ" source="redefines" references="_xvdgm0P9EdyXRJo_SB0POQ"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgk0P9EdyXRJo_SB0POQ" name="storageClass" ordered="false" unique="false" eType="_xvdgp0P9EdyXRJo_SB0POQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdglUP9EdyXRJo_SB0POQ" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgl0P9EdyXRJo_SB0POQ" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgmUP9EdyXRJo_SB0POQ" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvdgm0P9EdyXRJo_SB0POQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgnUP9EdyXRJo_SB0POQ" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgn0P9EdyXRJo_SB0POQ" name="acess" ordered="false" unique="false" lowerBound="1" eType="_xvdgrkP9EdyXRJo_SB0POQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgoUP9EdyXRJo_SB0POQ" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgo0P9EdyXRJo_SB0POQ" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvdgpUP9EdyXRJo_SB0POQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_xvdgp0P9EdyXRJo_SB0POQ" name="StorageClass">
+ <eAnnotations xmi:id="_xvdgqEP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_xvdgqUP9EdyXRJo_SB0POQ" name="auto"/>
+ <eLiterals xmi:id="_xvdgqkP9EdyXRJo_SB0POQ" name="register" value="1"/>
+ <eLiterals xmi:id="_xvdgq0P9EdyXRJo_SB0POQ" name="extern" value="2"/>
+ <eLiterals xmi:id="_xvdgrEP9EdyXRJo_SB0POQ" name="static" value="3"/>
+ <eLiterals xmi:id="_xvdgrUP9EdyXRJo_SB0POQ" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_xvdgrkP9EdyXRJo_SB0POQ" name="AccessKind">
+ <eAnnotations xmi:id="_xvdgr0P9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_xvdgsEP9EdyXRJo_SB0POQ" name="read"/>
+ <eLiterals xmi:id="_xvdgsUP9EdyXRJo_SB0POQ" name="write" value="1"/>
+ <eLiterals xmi:id="_xvdgskP9EdyXRJo_SB0POQ" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvdgs0P9EdyXRJo_SB0POQ" name="NoGenCode">
+ <eAnnotations xmi:id="_xvdgtEP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvdgtUP9EdyXRJo_SB0POQ" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvdgt0P9EdyXRJo_SB0POQ" name="C_NamedElement">
+ <eAnnotations xmi:id="_xvdguEP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdguUP9EdyXRJo_SB0POQ" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgu0P9EdyXRJo_SB0POQ" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgvUP9EdyXRJo_SB0POQ" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvdgv0P9EdyXRJo_SB0POQ" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_xvdgwUP9EdyXRJo_SB0POQ" name="Importer">
+ <eAnnotations xmi:id="_xvdgwkP9EdyXRJo_SB0POQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_xvdgw0P9EdyXRJo_SB0POQ" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_xvdgxUP9EdyXRJo_SB0POQ" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_1gpJkEPxEdybAJ4m8R8XFA" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_1goigEPxEdybAJ4m8R8XFA/28" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gpJkUPxEdybAJ4m8R8XFA" name="C_Type">
+ <eAnnotations xmi:id="_1gpJkkPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpJk0PxEdybAJ4m8R8XFA" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpJlUPxEdybAJ4m8R8XFA" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpJl0PxEdybAJ4m8R8XFA" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpJmUPxEdybAJ4m8R8XFA" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gpwoUPxEdybAJ4m8R8XFA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gpwo0PxEdybAJ4m8R8XFA" name="C_Feature">
+ <eAnnotations xmi:id="_1gpwpEPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_1gpwpUPxEdybAJ4m8R8XFA" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_1gpwpkPxEdybAJ4m8R8XFA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_1gpwp0PxEdybAJ4m8R8XFA" source="redefines" references="_1gpwsUPxEdybAJ4m8R8XFA"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpwqUPxEdybAJ4m8R8XFA" name="storageClass" ordered="false" unique="false" eType="_1gpwvUPxEdybAJ4m8R8XFA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpwq0PxEdybAJ4m8R8XFA" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpwrUPxEdybAJ4m8R8XFA" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpwr0PxEdybAJ4m8R8XFA" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gpwsUPxEdybAJ4m8R8XFA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpws0PxEdybAJ4m8R8XFA" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpwtUPxEdybAJ4m8R8XFA" name="acess" ordered="false" unique="false" lowerBound="1" eType="_1gpwxEPxEdybAJ4m8R8XFA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpwt0PxEdybAJ4m8R8XFA" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpwuUPxEdybAJ4m8R8XFA" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gpwu0PxEdybAJ4m8R8XFA" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_1gpwvUPxEdybAJ4m8R8XFA" name="StorageClass">
+ <eAnnotations xmi:id="_1gpwvkPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_1gpwv0PxEdybAJ4m8R8XFA" name="auto"/>
+ <eLiterals xmi:id="_1gpwwEPxEdybAJ4m8R8XFA" name="register" value="1"/>
+ <eLiterals xmi:id="_1gpwwUPxEdybAJ4m8R8XFA" name="extern" value="2"/>
+ <eLiterals xmi:id="_1gpwwkPxEdybAJ4m8R8XFA" name="static" value="3"/>
+ <eLiterals xmi:id="_1gpww0PxEdybAJ4m8R8XFA" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_1gpwxEPxEdybAJ4m8R8XFA" name="AccessKind">
+ <eAnnotations xmi:id="_1gpwxUPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_1gpwxkPxEdybAJ4m8R8XFA" name="read"/>
+ <eLiterals xmi:id="_1gpwx0PxEdybAJ4m8R8XFA" name="write" value="1"/>
+ <eLiterals xmi:id="_1gpwyEPxEdybAJ4m8R8XFA" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gpwyUPxEdybAJ4m8R8XFA" name="NoGenCode">
+ <eAnnotations xmi:id="_1gpwykPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gpwy0PxEdybAJ4m8R8XFA" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gpwzUPxEdybAJ4m8R8XFA" name="C_NamedElement">
+ <eAnnotations xmi:id="_1gpwzkPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpwz0PxEdybAJ4m8R8XFA" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpw0UPxEdybAJ4m8R8XFA" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpw00PxEdybAJ4m8R8XFA" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gpw1UPxEdybAJ4m8R8XFA" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1gpw10PxEdybAJ4m8R8XFA" name="Importer">
+ <eAnnotations xmi:id="_1gpw2EPxEdybAJ4m8R8XFA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1gpw2UPxEdybAJ4m8R8XFA" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1gpw20PxEdybAJ4m8R8XFA" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_n3EFIEHmEdyxlrpSW7ggPQ" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_n3C3AEHmEdyxlrpSW7ggPQ/27" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n3EFIUHmEdyxlrpSW7ggPQ" name="C_Type">
+ <eAnnotations xmi:id="_n3EFIkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFI0HmEdyxlrpSW7ggPQ" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFJUHmEdyxlrpSW7ggPQ" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFJ0HmEdyxlrpSW7ggPQ" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFKUHmEdyxlrpSW7ggPQ" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n3EFK0HmEdyxlrpSW7ggPQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n3EFLUHmEdyxlrpSW7ggPQ" name="C_Feature">
+ <eAnnotations xmi:id="_n3EFLkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_n3EFL0HmEdyxlrpSW7ggPQ" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_n3EFMEHmEdyxlrpSW7ggPQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_n3EFMUHmEdyxlrpSW7ggPQ" source="redefines" references="_n3EFO0HmEdyxlrpSW7ggPQ"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFM0HmEdyxlrpSW7ggPQ" name="storageClass" ordered="false" unique="false" eType="_n3EFR0HmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFNUHmEdyxlrpSW7ggPQ" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFN0HmEdyxlrpSW7ggPQ" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFOUHmEdyxlrpSW7ggPQ" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n3EFO0HmEdyxlrpSW7ggPQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFPUHmEdyxlrpSW7ggPQ" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFP0HmEdyxlrpSW7ggPQ" name="acess" ordered="false" unique="false" lowerBound="1" eType="_n3EFTkHmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFQUHmEdyxlrpSW7ggPQ" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFQ0HmEdyxlrpSW7ggPQ" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n3EFRUHmEdyxlrpSW7ggPQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_n3EFR0HmEdyxlrpSW7ggPQ" name="StorageClass">
+ <eAnnotations xmi:id="_n3EFSEHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_n3EFSUHmEdyxlrpSW7ggPQ" name="auto"/>
+ <eLiterals xmi:id="_n3EFSkHmEdyxlrpSW7ggPQ" name="register" value="1"/>
+ <eLiterals xmi:id="_n3EFS0HmEdyxlrpSW7ggPQ" name="extern" value="2"/>
+ <eLiterals xmi:id="_n3EFTEHmEdyxlrpSW7ggPQ" name="static" value="3"/>
+ <eLiterals xmi:id="_n3EFTUHmEdyxlrpSW7ggPQ" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_n3EFTkHmEdyxlrpSW7ggPQ" name="AccessKind">
+ <eAnnotations xmi:id="_n3EFT0HmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_n3EFUEHmEdyxlrpSW7ggPQ" name="read"/>
+ <eLiterals xmi:id="_n3EFUUHmEdyxlrpSW7ggPQ" name="write" value="1"/>
+ <eLiterals xmi:id="_n3EFUkHmEdyxlrpSW7ggPQ" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n3EFU0HmEdyxlrpSW7ggPQ" name="NoGenCode">
+ <eAnnotations xmi:id="_n3EFVEHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n3EFVUHmEdyxlrpSW7ggPQ" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n3EFV0HmEdyxlrpSW7ggPQ" name="C_NamedElement">
+ <eAnnotations xmi:id="_n3EFWEHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFWUHmEdyxlrpSW7ggPQ" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFW0HmEdyxlrpSW7ggPQ" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFXUHmEdyxlrpSW7ggPQ" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n3EFX0HmEdyxlrpSW7ggPQ" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_n3EFYUHmEdyxlrpSW7ggPQ" name="Importer">
+ <eAnnotations xmi:id="_n3EFYkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_n3EFY0HmEdyxlrpSW7ggPQ" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_n3EFZUHmEdyxlrpSW7ggPQ" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_FgHqIEHmEdyxlrpSW7ggPQ" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_FgHDEEHmEdyxlrpSW7ggPQ/26" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgHqIUHmEdyxlrpSW7ggPQ" name="C_Type">
+ <eAnnotations xmi:id="_FgHqIkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqI0HmEdyxlrpSW7ggPQ" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqJUHmEdyxlrpSW7ggPQ" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqJ0HmEdyxlrpSW7ggPQ" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqKUHmEdyxlrpSW7ggPQ" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgHqK0HmEdyxlrpSW7ggPQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgHqLUHmEdyxlrpSW7ggPQ" name="C_Feature">
+ <eAnnotations xmi:id="_FgHqLkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_FgHqL0HmEdyxlrpSW7ggPQ" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_FgHqMEHmEdyxlrpSW7ggPQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_FgHqMUHmEdyxlrpSW7ggPQ" source="redefines" references="_FgHqO0HmEdyxlrpSW7ggPQ"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqM0HmEdyxlrpSW7ggPQ" name="storageClass" ordered="false" unique="false" eType="_FgIRN0HmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqNUHmEdyxlrpSW7ggPQ" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqN0HmEdyxlrpSW7ggPQ" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqOUHmEdyxlrpSW7ggPQ" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgHqO0HmEdyxlrpSW7ggPQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqPUHmEdyxlrpSW7ggPQ" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgHqP0HmEdyxlrpSW7ggPQ" name="acess" ordered="false" unique="false" lowerBound="1" eType="_FgIRPkHmEdyxlrpSW7ggPQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgIRMUHmEdyxlrpSW7ggPQ" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgIRM0HmEdyxlrpSW7ggPQ" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgIRNUHmEdyxlrpSW7ggPQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_FgIRN0HmEdyxlrpSW7ggPQ" name="StorageClass">
+ <eAnnotations xmi:id="_FgIROEHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_FgIROUHmEdyxlrpSW7ggPQ" name="auto"/>
+ <eLiterals xmi:id="_FgIROkHmEdyxlrpSW7ggPQ" name="register" value="1"/>
+ <eLiterals xmi:id="_FgIRO0HmEdyxlrpSW7ggPQ" name="extern" value="2"/>
+ <eLiterals xmi:id="_FgIRPEHmEdyxlrpSW7ggPQ" name="static" value="3"/>
+ <eLiterals xmi:id="_FgIRPUHmEdyxlrpSW7ggPQ" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_FgIRPkHmEdyxlrpSW7ggPQ" name="AccessKind">
+ <eAnnotations xmi:id="_FgIRP0HmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_FgIRQEHmEdyxlrpSW7ggPQ" name="read"/>
+ <eLiterals xmi:id="_FgIRQUHmEdyxlrpSW7ggPQ" name="write" value="1"/>
+ <eLiterals xmi:id="_FgIRQkHmEdyxlrpSW7ggPQ" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgIRQ0HmEdyxlrpSW7ggPQ" name="NoGenCode">
+ <eAnnotations xmi:id="_FgIRREHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgIRRUHmEdyxlrpSW7ggPQ" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgIRR0HmEdyxlrpSW7ggPQ" name="C_NamedElement">
+ <eAnnotations xmi:id="_FgIRSEHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgIRSUHmEdyxlrpSW7ggPQ" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgIRS0HmEdyxlrpSW7ggPQ" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgIRTUHmEdyxlrpSW7ggPQ" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgIRT0HmEdyxlrpSW7ggPQ" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FgIRUUHmEdyxlrpSW7ggPQ" name="Importer">
+ <eAnnotations xmi:id="_FgIRUkHmEdyxlrpSW7ggPQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FgIRU0HmEdyxlrpSW7ggPQ" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FgIRVUHmEdyxlrpSW7ggPQ" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_ZdlGsEDsEdyjuIyCaGFHvQ" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_ZdkfoEDsEdyjuIyCaGFHvQ/25" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_ZdlGsUDsEdyjuIyCaGFHvQ" name="C_Type">
+ <eAnnotations xmi:id="_ZdlGskDsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGs0DsEdyjuIyCaGFHvQ" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGtUDsEdyjuIyCaGFHvQ" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGt0DsEdyjuIyCaGFHvQ" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGuUDsEdyjuIyCaGFHvQ" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_ZdlGu0DsEdyjuIyCaGFHvQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_ZdlGvUDsEdyjuIyCaGFHvQ" name="C_Feature">
+ <eAnnotations xmi:id="_ZdlGvkDsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_ZdlGv0DsEdyjuIyCaGFHvQ" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_ZdlGwEDsEdyjuIyCaGFHvQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_ZdlGwUDsEdyjuIyCaGFHvQ" source="redefines" references="_ZdlGy0DsEdyjuIyCaGFHvQ"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGw0DsEdyjuIyCaGFHvQ" name="storageClass" ordered="false" unique="false" eType="_ZdlG10DsEdyjuIyCaGFHvQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGxUDsEdyjuIyCaGFHvQ" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGx0DsEdyjuIyCaGFHvQ" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGyUDsEdyjuIyCaGFHvQ" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_ZdlGy0DsEdyjuIyCaGFHvQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGzUDsEdyjuIyCaGFHvQ" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlGz0DsEdyjuIyCaGFHvQ" name="acess" ordered="false" unique="false" lowerBound="1" eType="_ZdlG3kDsEdyjuIyCaGFHvQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlG0UDsEdyjuIyCaGFHvQ" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdlG00DsEdyjuIyCaGFHvQ" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_ZdlG1UDsEdyjuIyCaGFHvQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_ZdlG10DsEdyjuIyCaGFHvQ" name="StorageClass">
+ <eAnnotations xmi:id="_ZdlG2EDsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_ZdlG2UDsEdyjuIyCaGFHvQ" name="auto"/>
+ <eLiterals xmi:id="_ZdlG2kDsEdyjuIyCaGFHvQ" name="register" value="1"/>
+ <eLiterals xmi:id="_ZdlG20DsEdyjuIyCaGFHvQ" name="extern" value="2"/>
+ <eLiterals xmi:id="_ZdlG3EDsEdyjuIyCaGFHvQ" name="static" value="3"/>
+ <eLiterals xmi:id="_ZdlG3UDsEdyjuIyCaGFHvQ" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_ZdlG3kDsEdyjuIyCaGFHvQ" name="AccessKind">
+ <eAnnotations xmi:id="_ZdlG30DsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_ZdlG4EDsEdyjuIyCaGFHvQ" name="read"/>
+ <eLiterals xmi:id="_ZdlG4UDsEdyjuIyCaGFHvQ" name="write" value="1"/>
+ <eLiterals xmi:id="_ZdlG4kDsEdyjuIyCaGFHvQ" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_ZdlG40DsEdyjuIyCaGFHvQ" name="NoGenCode">
+ <eAnnotations xmi:id="_ZdlG5EDsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_ZdltwEDsEdyjuIyCaGFHvQ" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_ZdltwkDsEdyjuIyCaGFHvQ" name="C_NamedElement">
+ <eAnnotations xmi:id="_Zdltw0DsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdltxEDsEdyjuIyCaGFHvQ" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdltxkDsEdyjuIyCaGFHvQ" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdltyEDsEdyjuIyCaGFHvQ" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_ZdltykDsEdyjuIyCaGFHvQ" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_ZdltzEDsEdyjuIyCaGFHvQ" name="Importer">
+ <eAnnotations xmi:id="_ZdltzUDsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_ZdltzkDsEdyjuIyCaGFHvQ" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Zdlt0EDsEdyjuIyCaGFHvQ" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Zdlt0kDsEdyjuIyCaGFHvQ" name="C_Typedef">
+ <eAnnotations xmi:id="_Zdlt00DsEdyjuIyCaGFHvQ" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Zdlt1EDsEdyjuIyCaGFHvQ" name="base_PrimitiveType" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Zdlt1kDsEdyjuIyCaGFHvQ" name="type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//PrimitiveType"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Zdlt2EDsEdyjuIyCaGFHvQ" name="isUnsigned" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_1fMqkD98EdyWndo1HgT9Ig" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_1fK1YD98EdyWndo1HgT9Ig/24" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1fMqkT98EdyWndo1HgT9Ig" name="C_Type">
+ <eAnnotations xmi:id="_1fMqkj98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqkz98EdyWndo1HgT9Ig" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqlT98EdyWndo1HgT9Ig" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqlz98EdyWndo1HgT9Ig" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqmT98EdyWndo1HgT9Ig" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1fMqmz98EdyWndo1HgT9Ig" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1fMqnT98EdyWndo1HgT9Ig" name="C_Feature">
+ <eAnnotations xmi:id="_1fMqnj98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_1fMqnz98EdyWndo1HgT9Ig" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_1fMqoD98EdyWndo1HgT9Ig" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_1fMqoT98EdyWndo1HgT9Ig" source="redefines" references="_1fMqqz98EdyWndo1HgT9Ig"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqoz98EdyWndo1HgT9Ig" name="storageClass" ordered="false" unique="false" eType="_1fMqtz98EdyWndo1HgT9Ig"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqpT98EdyWndo1HgT9Ig" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqpz98EdyWndo1HgT9Ig" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqqT98EdyWndo1HgT9Ig" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1fMqqz98EdyWndo1HgT9Ig" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqrT98EdyWndo1HgT9Ig" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqrz98EdyWndo1HgT9Ig" name="acess" ordered="false" unique="false" lowerBound="1" eType="_1fMqvj98EdyWndo1HgT9Ig"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqsT98EdyWndo1HgT9Ig" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqsz98EdyWndo1HgT9Ig" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1fMqtT98EdyWndo1HgT9Ig" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_1fMqtz98EdyWndo1HgT9Ig" name="StorageClass">
+ <eAnnotations xmi:id="_1fMquD98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_1fMquT98EdyWndo1HgT9Ig" name="auto"/>
+ <eLiterals xmi:id="_1fMquj98EdyWndo1HgT9Ig" name="register" value="1"/>
+ <eLiterals xmi:id="_1fMquz98EdyWndo1HgT9Ig" name="extern" value="2"/>
+ <eLiterals xmi:id="_1fMqvD98EdyWndo1HgT9Ig" name="static" value="3"/>
+ <eLiterals xmi:id="_1fMqvT98EdyWndo1HgT9Ig" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_1fMqvj98EdyWndo1HgT9Ig" name="AccessKind">
+ <eAnnotations xmi:id="_1fMqvz98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_1fMqwD98EdyWndo1HgT9Ig" name="read"/>
+ <eLiterals xmi:id="_1fMqwT98EdyWndo1HgT9Ig" name="write" value="1"/>
+ <eLiterals xmi:id="_1fMqwj98EdyWndo1HgT9Ig" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1fMqwz98EdyWndo1HgT9Ig" name="NoGenCode">
+ <eAnnotations xmi:id="_1fMqxD98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1fMqxT98EdyWndo1HgT9Ig" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1fMqxz98EdyWndo1HgT9Ig" name="C_NamedElement">
+ <eAnnotations xmi:id="_1fMqyD98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqyT98EdyWndo1HgT9Ig" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqyz98EdyWndo1HgT9Ig" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMqzT98EdyWndo1HgT9Ig" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1fMqzz98EdyWndo1HgT9Ig" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_1fMq0T98EdyWndo1HgT9Ig" name="Importer">
+ <eAnnotations xmi:id="_1fMq0j98EdyWndo1HgT9Ig" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_1fMq0z98EdyWndo1HgT9Ig" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_1fMq1T98EdyWndo1HgT9Ig" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_SYifUD97EdydlOlmTTAQlA" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_SYgqID97EdydlOlmTTAQlA/23" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SYifUT97EdydlOlmTTAQlA" name="C_Type">
+ <eAnnotations xmi:id="_SYifUj97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifUz97EdydlOlmTTAQlA" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifVT97EdydlOlmTTAQlA" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifVz97EdydlOlmTTAQlA" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifWT97EdydlOlmTTAQlA" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SYifWz97EdydlOlmTTAQlA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SYifXT97EdydlOlmTTAQlA" name="C_Feature">
+ <eAnnotations xmi:id="_SYifXj97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_SYifXz97EdydlOlmTTAQlA" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_SYifYD97EdydlOlmTTAQlA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_SYifYT97EdydlOlmTTAQlA" source="redefines" references="_SYifaz97EdydlOlmTTAQlA"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifYz97EdydlOlmTTAQlA" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_SYifdz97EdydlOlmTTAQlA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifZT97EdydlOlmTTAQlA" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifZz97EdydlOlmTTAQlA" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifaT97EdydlOlmTTAQlA" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SYifaz97EdydlOlmTTAQlA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifbT97EdydlOlmTTAQlA" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifbz97EdydlOlmTTAQlA" name="acess" ordered="false" unique="false" lowerBound="1" eType="_SYiffj97EdydlOlmTTAQlA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifcT97EdydlOlmTTAQlA" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifcz97EdydlOlmTTAQlA" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SYifdT97EdydlOlmTTAQlA" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_SYifdz97EdydlOlmTTAQlA" name="StorageClass">
+ <eAnnotations xmi:id="_SYifeD97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_SYifeT97EdydlOlmTTAQlA" name="auto"/>
+ <eLiterals xmi:id="_SYifej97EdydlOlmTTAQlA" name="register" value="1"/>
+ <eLiterals xmi:id="_SYifez97EdydlOlmTTAQlA" name="extern" value="2"/>
+ <eLiterals xmi:id="_SYiffD97EdydlOlmTTAQlA" name="static" value="3"/>
+ <eLiterals xmi:id="_SYiffT97EdydlOlmTTAQlA" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_SYiffj97EdydlOlmTTAQlA" name="AccessKind">
+ <eAnnotations xmi:id="_SYiffz97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_SYifgD97EdydlOlmTTAQlA" name="read"/>
+ <eLiterals xmi:id="_SYifgT97EdydlOlmTTAQlA" name="write" value="1"/>
+ <eLiterals xmi:id="_SYifgj97EdydlOlmTTAQlA" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SYifgz97EdydlOlmTTAQlA" name="NoGenCode">
+ <eAnnotations xmi:id="_SYifhD97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SYifhT97EdydlOlmTTAQlA" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SYifhz97EdydlOlmTTAQlA" name="C_NamedElement">
+ <eAnnotations xmi:id="_SYifiD97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifiT97EdydlOlmTTAQlA" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifiz97EdydlOlmTTAQlA" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifjT97EdydlOlmTTAQlA" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SYifjz97EdydlOlmTTAQlA" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SYifkT97EdydlOlmTTAQlA" name="Importer">
+ <eAnnotations xmi:id="_SYifkj97EdydlOlmTTAQlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SYifkz97EdydlOlmTTAQlA" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SYiflT97EdydlOlmTTAQlA" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_114o8DweEdyHm6HnfLC8wA" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_112zwDweEdyHm6HnfLC8wA/22" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_114o8TweEdyHm6HnfLC8wA" name="C_Type">
+ <eAnnotations xmi:id="_114o8jweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114o8zweEdyHm6HnfLC8wA" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114o9TweEdyHm6HnfLC8wA" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114o9zweEdyHm6HnfLC8wA" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114o-TweEdyHm6HnfLC8wA" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_114o-zweEdyHm6HnfLC8wA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_114o_TweEdyHm6HnfLC8wA" name="C_Feature">
+ <eAnnotations xmi:id="_114o_jweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_114o_zweEdyHm6HnfLC8wA" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_114pADweEdyHm6HnfLC8wA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_114pATweEdyHm6HnfLC8wA" source="redefines" references="_114pCzweEdyHm6HnfLC8wA"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pAzweEdyHm6HnfLC8wA" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_114pGTweEdyHm6HnfLC8wA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pBTweEdyHm6HnfLC8wA" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pBzweEdyHm6HnfLC8wA" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pCTweEdyHm6HnfLC8wA" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_114pCzweEdyHm6HnfLC8wA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pDTweEdyHm6HnfLC8wA" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pDzweEdyHm6HnfLC8wA" name="acess" ordered="false" unique="false" lowerBound="1" eType="_114pIDweEdyHm6HnfLC8wA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_114pETweEdyHm6HnfLC8wA" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_114pEzweEdyHm6HnfLC8wA" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pFTweEdyHm6HnfLC8wA" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pFzweEdyHm6HnfLC8wA" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_114pGTweEdyHm6HnfLC8wA" name="StorageClass">
+ <eAnnotations xmi:id="_114pGjweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_114pGzweEdyHm6HnfLC8wA" name="auto"/>
+ <eLiterals xmi:id="_114pHDweEdyHm6HnfLC8wA" name="register" value="1"/>
+ <eLiterals xmi:id="_114pHTweEdyHm6HnfLC8wA" name="extern" value="2"/>
+ <eLiterals xmi:id="_114pHjweEdyHm6HnfLC8wA" name="static" value="3"/>
+ <eLiterals xmi:id="_114pHzweEdyHm6HnfLC8wA" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_114pIDweEdyHm6HnfLC8wA" name="AccessKind">
+ <eAnnotations xmi:id="_114pITweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_114pIjweEdyHm6HnfLC8wA" name="read"/>
+ <eLiterals xmi:id="_114pIzweEdyHm6HnfLC8wA" name="write" value="1"/>
+ <eLiterals xmi:id="_114pJDweEdyHm6HnfLC8wA" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_114pJTweEdyHm6HnfLC8wA" name="NoGenCode">
+ <eAnnotations xmi:id="_114pJjweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_114pJzweEdyHm6HnfLC8wA" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_114pKTweEdyHm6HnfLC8wA" name="C_NamedElement">
+ <eAnnotations xmi:id="_114pKjweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pKzweEdyHm6HnfLC8wA" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pLTweEdyHm6HnfLC8wA" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pLzweEdyHm6HnfLC8wA" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_114pMTweEdyHm6HnfLC8wA" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_114pMzweEdyHm6HnfLC8wA" name="Importer">
+ <eAnnotations xmi:id="_114pNDweEdyHm6HnfLC8wA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_114pNTweEdyHm6HnfLC8wA" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_114pNzweEdyHm6HnfLC8wA" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_mJtLUDwbEdy50P3mY4f53Q" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_mJrWIDwbEdy50P3mY4f53Q/21" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_mJtLUTwbEdy50P3mY4f53Q" name="C_Type">
+ <eAnnotations xmi:id="_mJtLUjwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLUzwbEdy50P3mY4f53Q" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLVTwbEdy50P3mY4f53Q" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLVzwbEdy50P3mY4f53Q" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLWTwbEdy50P3mY4f53Q" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_mJtLWzwbEdy50P3mY4f53Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_mJtLXTwbEdy50P3mY4f53Q" name="C_Feature">
+ <eAnnotations xmi:id="_mJtLXjwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_mJtLXzwbEdy50P3mY4f53Q" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_mJtLYDwbEdy50P3mY4f53Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_mJtLYTwbEdy50P3mY4f53Q" source="redefines" references="_mJtLazwbEdy50P3mY4f53Q"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLYzwbEdy50P3mY4f53Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_mJtLezwbEdy50P3mY4f53Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLZTwbEdy50P3mY4f53Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLZzwbEdy50P3mY4f53Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLaTwbEdy50P3mY4f53Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_mJtLazwbEdy50P3mY4f53Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLbTwbEdy50P3mY4f53Q" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLbzwbEdy50P3mY4f53Q" name="acess" ordered="false" unique="false" lowerBound="1" eType="_mJtLgjwbEdy50P3mY4f53Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_mJtLcTwbEdy50P3mY4f53Q" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_mJtLczwbEdy50P3mY4f53Q" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLdTwbEdy50P3mY4f53Q" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLdzwbEdy50P3mY4f53Q" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLeTwbEdy50P3mY4f53Q" name="Property_0" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_mJtLezwbEdy50P3mY4f53Q" name="StorageClass">
+ <eAnnotations xmi:id="_mJtLfDwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_mJtLfTwbEdy50P3mY4f53Q" name="auto"/>
+ <eLiterals xmi:id="_mJtLfjwbEdy50P3mY4f53Q" name="register" value="1"/>
+ <eLiterals xmi:id="_mJtLfzwbEdy50P3mY4f53Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_mJtLgDwbEdy50P3mY4f53Q" name="static" value="3"/>
+ <eLiterals xmi:id="_mJtLgTwbEdy50P3mY4f53Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_mJtLgjwbEdy50P3mY4f53Q" name="AccessKind">
+ <eAnnotations xmi:id="_mJtLgzwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_mJtLhDwbEdy50P3mY4f53Q" name="read"/>
+ <eLiterals xmi:id="_mJtLhTwbEdy50P3mY4f53Q" name="write" value="1"/>
+ <eLiterals xmi:id="_mJtLhjwbEdy50P3mY4f53Q" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_mJtLhzwbEdy50P3mY4f53Q" name="NoGenCode">
+ <eAnnotations xmi:id="_mJtLiDwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_mJtLiTwbEdy50P3mY4f53Q" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_mJtLizwbEdy50P3mY4f53Q" name="C_NamedElement">
+ <eAnnotations xmi:id="_mJtLjDwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLjTwbEdy50P3mY4f53Q" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLjzwbEdy50P3mY4f53Q" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLkTwbEdy50P3mY4f53Q" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_mJtLkzwbEdy50P3mY4f53Q" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_mJtLlTwbEdy50P3mY4f53Q" name="Importer">
+ <eAnnotations xmi:id="_mJtLljwbEdy50P3mY4f53Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_mJtLlzwbEdy50P3mY4f53Q" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_mJtLmTwbEdy50P3mY4f53Q" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_-Iab0DnZEdyK9KOUzoZMXQ" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_-IYmoDnZEdyK9KOUzoZMXQ/20" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-Iab0TnZEdyK9KOUzoZMXQ" name="C_Type">
+ <eAnnotations xmi:id="_-Iab0jnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab0znZEdyK9KOUzoZMXQ" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab1TnZEdyK9KOUzoZMXQ" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab1znZEdyK9KOUzoZMXQ" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab2TnZEdyK9KOUzoZMXQ" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-Iab2znZEdyK9KOUzoZMXQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-Iab3TnZEdyK9KOUzoZMXQ" name="C_Feature">
+ <eAnnotations xmi:id="_-Iab3jnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_-Iab3znZEdyK9KOUzoZMXQ" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_-Iab4DnZEdyK9KOUzoZMXQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_-Iab4TnZEdyK9KOUzoZMXQ" source="redefines" references="_-Iab6znZEdyK9KOUzoZMXQ"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab4znZEdyK9KOUzoZMXQ" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_-Iab-TnZEdyK9KOUzoZMXQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab5TnZEdyK9KOUzoZMXQ" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab5znZEdyK9KOUzoZMXQ" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab6TnZEdyK9KOUzoZMXQ" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-Iab6znZEdyK9KOUzoZMXQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab7TnZEdyK9KOUzoZMXQ" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab7znZEdyK9KOUzoZMXQ" name="acess" ordered="false" unique="false" lowerBound="1" eType="_-IacADnZEdyK9KOUzoZMXQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-Iab8TnZEdyK9KOUzoZMXQ" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-Iab8znZEdyK9KOUzoZMXQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab9TnZEdyK9KOUzoZMXQ" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Iab9znZEdyK9KOUzoZMXQ" name="bitLength" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_-Iab-TnZEdyK9KOUzoZMXQ" name="StorageClass">
+ <eAnnotations xmi:id="_-Iab-jnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_-Iab-znZEdyK9KOUzoZMXQ" name="auto"/>
+ <eLiterals xmi:id="_-Iab_DnZEdyK9KOUzoZMXQ" name="register" value="1"/>
+ <eLiterals xmi:id="_-Iab_TnZEdyK9KOUzoZMXQ" name="extern" value="2"/>
+ <eLiterals xmi:id="_-Iab_jnZEdyK9KOUzoZMXQ" name="static" value="3"/>
+ <eLiterals xmi:id="_-Iab_znZEdyK9KOUzoZMXQ" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_-IacADnZEdyK9KOUzoZMXQ" name="AccessKind">
+ <eAnnotations xmi:id="_-IacATnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_-IacAjnZEdyK9KOUzoZMXQ" name="read"/>
+ <eLiterals xmi:id="_-IacAznZEdyK9KOUzoZMXQ" name="write" value="1"/>
+ <eLiterals xmi:id="_-IacBDnZEdyK9KOUzoZMXQ" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-IacBTnZEdyK9KOUzoZMXQ" name="NoGenCode">
+ <eAnnotations xmi:id="_-IacBjnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-IacBznZEdyK9KOUzoZMXQ" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-IacCTnZEdyK9KOUzoZMXQ" name="C_NamedElement">
+ <eAnnotations xmi:id="_-IacCjnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-IacCznZEdyK9KOUzoZMXQ" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-IacDTnZEdyK9KOUzoZMXQ" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-IacDznZEdyK9KOUzoZMXQ" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-IacETnZEdyK9KOUzoZMXQ" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-IacEznZEdyK9KOUzoZMXQ" name="Importer">
+ <eAnnotations xmi:id="_-IacFDnZEdyK9KOUzoZMXQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-IacFTnZEdyK9KOUzoZMXQ" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-IacFznZEdyK9KOUzoZMXQ" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_51qVkDnLEdyhj8_f1ShKKA" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_51ogYDnLEdyhj8_f1ShKKA/19" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_51qVkTnLEdyhj8_f1ShKKA" name="C_Type">
+ <eAnnotations xmi:id="_51qVkjnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVkznLEdyhj8_f1ShKKA" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVlTnLEdyhj8_f1ShKKA" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVlznLEdyhj8_f1ShKKA" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVmTnLEdyhj8_f1ShKKA" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_51qVmznLEdyhj8_f1ShKKA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_51qVnTnLEdyhj8_f1ShKKA" name="C_Feature">
+ <eAnnotations xmi:id="_51qVnjnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_51qVnznLEdyhj8_f1ShKKA" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_51qVoDnLEdyhj8_f1ShKKA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_51qVoTnLEdyhj8_f1ShKKA" source="redefines" references="_51qVqznLEdyhj8_f1ShKKA"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVoznLEdyhj8_f1ShKKA" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_51qVtznLEdyhj8_f1ShKKA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVpTnLEdyhj8_f1ShKKA" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVpznLEdyhj8_f1ShKKA" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVqTnLEdyhj8_f1ShKKA" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_51qVqznLEdyhj8_f1ShKKA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVrTnLEdyhj8_f1ShKKA" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVrznLEdyhj8_f1ShKKA" name="acess" ordered="false" unique="false" lowerBound="1" eType="_51q8pDnLEdyhj8_f1ShKKA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_51qVsTnLEdyhj8_f1ShKKA" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_51qVsznLEdyhj8_f1ShKKA" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51qVtTnLEdyhj8_f1ShKKA" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_51qVtznLEdyhj8_f1ShKKA" name="StorageClass">
+ <eAnnotations xmi:id="_51qVuDnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_51qVuTnLEdyhj8_f1ShKKA" name="auto"/>
+ <eLiterals xmi:id="_51q8oDnLEdyhj8_f1ShKKA" name="register" value="1"/>
+ <eLiterals xmi:id="_51q8oTnLEdyhj8_f1ShKKA" name="extern" value="2"/>
+ <eLiterals xmi:id="_51q8ojnLEdyhj8_f1ShKKA" name="static" value="3"/>
+ <eLiterals xmi:id="_51q8oznLEdyhj8_f1ShKKA" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_51q8pDnLEdyhj8_f1ShKKA" name="AccessKind">
+ <eAnnotations xmi:id="_51q8pTnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_51q8pjnLEdyhj8_f1ShKKA" name="read"/>
+ <eLiterals xmi:id="_51q8pznLEdyhj8_f1ShKKA" name="write" value="1"/>
+ <eLiterals xmi:id="_51q8qDnLEdyhj8_f1ShKKA" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_51q8qTnLEdyhj8_f1ShKKA" name="NoGenCode">
+ <eAnnotations xmi:id="_51q8qjnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_51q8qznLEdyhj8_f1ShKKA" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_51q8rTnLEdyhj8_f1ShKKA" name="C_NamedElement">
+ <eAnnotations xmi:id="_51q8rjnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51q8rznLEdyhj8_f1ShKKA" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51q8sTnLEdyhj8_f1ShKKA" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51q8sznLEdyhj8_f1ShKKA" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_51q8tTnLEdyhj8_f1ShKKA" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_51q8tznLEdyhj8_f1ShKKA" name="Importer">
+ <eAnnotations xmi:id="_51q8uDnLEdyhj8_f1ShKKA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_51q8uTnLEdyhj8_f1ShKKA" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_51q8uznLEdyhj8_f1ShKKA" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_VCJOIBtFEdyd3OUuj4yv-Q" name="CGenerator" nsURI="http://PapyrusC/schemas/CGenerator/_VCHY8BtFEdyd3OUuj4yv-Q/18" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VCJOIRtFEdyd3OUuj4yv-Q" name="C_Type">
+ <eAnnotations xmi:id="_VCJOIhtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOIxtFEdyd3OUuj4yv-Q" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOJBtFEdyd3OUuj4yv-Q" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOJRtFEdyd3OUuj4yv-Q" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOJhtFEdyd3OUuj4yv-Q" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VCJOJxtFEdyd3OUuj4yv-Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VCJOKBtFEdyd3OUuj4yv-Q" name="C_Feature">
+ <eAnnotations xmi:id="_VCJOKRtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_VCJOKhtFEdyd3OUuj4yv-Q" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_VCJOKxtFEdyd3OUuj4yv-Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_VCJOLBtFEdyd3OUuj4yv-Q" source="redefines" references="_VCJOMRtFEdyd3OUuj4yv-Q"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOLRtFEdyd3OUuj4yv-Q" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_VCJONxtFEdyd3OUuj4yv-Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOLhtFEdyd3OUuj4yv-Q" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOLxtFEdyd3OUuj4yv-Q" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOMBtFEdyd3OUuj4yv-Q" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VCJOMRtFEdyd3OUuj4yv-Q" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOMhtFEdyd3OUuj4yv-Q" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJOMxtFEdyd3OUuj4yv-Q" name="acess" ordered="false" unique="false" lowerBound="1" eType="_VCJOPhtFEdyd3OUuj4yv-Q"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VCJONBtFEdyd3OUuj4yv-Q" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VCJONRtFEdyd3OUuj4yv-Q" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJONhtFEdyd3OUuj4yv-Q" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_VCJONxtFEdyd3OUuj4yv-Q" name="StorageClass">
+ <eAnnotations xmi:id="_VCJOOBtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_VCJOORtFEdyd3OUuj4yv-Q" name="auto"/>
+ <eLiterals xmi:id="_VCJOOhtFEdyd3OUuj4yv-Q" name="register" value="1"/>
+ <eLiterals xmi:id="_VCJOOxtFEdyd3OUuj4yv-Q" name="extern" value="2"/>
+ <eLiterals xmi:id="_VCJOPBtFEdyd3OUuj4yv-Q" name="static" value="3"/>
+ <eLiterals xmi:id="_VCJOPRtFEdyd3OUuj4yv-Q" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_VCJOPhtFEdyd3OUuj4yv-Q" name="AccessKind">
+ <eAnnotations xmi:id="_VCJOPxtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_VCJ1MBtFEdyd3OUuj4yv-Q" name="read"/>
+ <eLiterals xmi:id="_VCJ1MRtFEdyd3OUuj4yv-Q" name="write" value="1"/>
+ <eLiterals xmi:id="_VCJ1MhtFEdyd3OUuj4yv-Q" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VCJ1MxtFEdyd3OUuj4yv-Q" name="NoGenCode">
+ <eAnnotations xmi:id="_VCJ1NBtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VCJ1NRtFEdyd3OUuj4yv-Q" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VCJ1NhtFEdyd3OUuj4yv-Q" name="C_NamedElement">
+ <eAnnotations xmi:id="_VCJ1NxtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJ1OBtFEdyd3OUuj4yv-Q" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJ1ORtFEdyd3OUuj4yv-Q" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJ1OhtFEdyd3OUuj4yv-Q" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VCJ1OxtFEdyd3OUuj4yv-Q" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VCJ1PBtFEdyd3OUuj4yv-Q" name="Importer">
+ <eAnnotations xmi:id="_VCJ1PRtFEdyd3OUuj4yv-Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VCJ1PhtFEdyd3OUuj4yv-Q" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VCJ1PxtFEdyd3OUuj4yv-Q" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_l_8L8BmYEdyYiu3uPO8AqQ" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_l_7k4BmYEdyYiu3uPO8AqQ/17" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_l_8L8RmYEdyYiu3uPO8AqQ" name="C_Type">
+ <eAnnotations xmi:id="_l_8L8hmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8L8xmYEdyYiu3uPO8AqQ" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8L9BmYEdyYiu3uPO8AqQ" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8L9RmYEdyYiu3uPO8AqQ" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8L9hmYEdyYiu3uPO8AqQ" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_l_8L9xmYEdyYiu3uPO8AqQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_l_8L-BmYEdyYiu3uPO8AqQ" name="C_Feature">
+ <eAnnotations xmi:id="_l_8L-RmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_l_8L-hmYEdyYiu3uPO8AqQ" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_l_8L-xmYEdyYiu3uPO8AqQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_l_8L_BmYEdyYiu3uPO8AqQ" source="redefines" references="_l_8MARmYEdyYiu3uPO8AqQ"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8L_RmYEdyYiu3uPO8AqQ" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_l_8MBxmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8L_hmYEdyYiu3uPO8AqQ" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8L_xmYEdyYiu3uPO8AqQ" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8MABmYEdyYiu3uPO8AqQ" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_l_8MARmYEdyYiu3uPO8AqQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8MAhmYEdyYiu3uPO8AqQ" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8MAxmYEdyYiu3uPO8AqQ" name="acess" ordered="false" unique="false" lowerBound="1" eType="_l_8MDhmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_l_8MBBmYEdyYiu3uPO8AqQ" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_l_8MBRmYEdyYiu3uPO8AqQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8MBhmYEdyYiu3uPO8AqQ" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_l_8MBxmYEdyYiu3uPO8AqQ" name="StorageClass">
+ <eAnnotations xmi:id="_l_8MCBmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_l_8MCRmYEdyYiu3uPO8AqQ" name="auto"/>
+ <eLiterals xmi:id="_l_8MChmYEdyYiu3uPO8AqQ" name="register" value="1"/>
+ <eLiterals xmi:id="_l_8MCxmYEdyYiu3uPO8AqQ" name="extern" value="2"/>
+ <eLiterals xmi:id="_l_8MDBmYEdyYiu3uPO8AqQ" name="static" value="3"/>
+ <eLiterals xmi:id="_l_8MDRmYEdyYiu3uPO8AqQ" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_l_8MDhmYEdyYiu3uPO8AqQ" name="AccessKind">
+ <eAnnotations xmi:id="_l_8MDxmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_l_8MEBmYEdyYiu3uPO8AqQ" name="read"/>
+ <eLiterals xmi:id="_l_8MERmYEdyYiu3uPO8AqQ" name="write" value="1"/>
+ <eLiterals xmi:id="_l_8MEhmYEdyYiu3uPO8AqQ" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_l_8MExmYEdyYiu3uPO8AqQ" name="NoGenCode">
+ <eAnnotations xmi:id="_l_8MFBmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_l_8MFRmYEdyYiu3uPO8AqQ" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_l_8MFhmYEdyYiu3uPO8AqQ" name="C_NamedElement">
+ <eAnnotations xmi:id="_l_8MFxmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8MGBmYEdyYiu3uPO8AqQ" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8MGRmYEdyYiu3uPO8AqQ" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8MGhmYEdyYiu3uPO8AqQ" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_l_8MGxmYEdyYiu3uPO8AqQ" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_l_8MHBmYEdyYiu3uPO8AqQ" name="Importer">
+ <eAnnotations xmi:id="_l_8MHRmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_l_8MHhmYEdyYiu3uPO8AqQ" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_l_8MHxmYEdyYiu3uPO8AqQ" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_k7lL8BmYEdyYiu3uPO8AqQ" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_k7jWwBmYEdyYiu3uPO8AqQ/16" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_k7lL8RmYEdyYiu3uPO8AqQ" name="C_Type">
+ <eAnnotations xmi:id="_k7lL8hmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lL8xmYEdyYiu3uPO8AqQ" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lL9BmYEdyYiu3uPO8AqQ" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lL9RmYEdyYiu3uPO8AqQ" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lL9hmYEdyYiu3uPO8AqQ" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_k7lL9xmYEdyYiu3uPO8AqQ" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_k7lL-BmYEdyYiu3uPO8AqQ" name="C_Feature">
+ <eAnnotations xmi:id="_k7lL-RmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_k7lL-hmYEdyYiu3uPO8AqQ" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_k7lL-xmYEdyYiu3uPO8AqQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_k7lL_BmYEdyYiu3uPO8AqQ" source="redefines" references="_k7lMARmYEdyYiu3uPO8AqQ"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lL_RmYEdyYiu3uPO8AqQ" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_k7lMBxmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lL_hmYEdyYiu3uPO8AqQ" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lL_xmYEdyYiu3uPO8AqQ" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lMABmYEdyYiu3uPO8AqQ" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_k7lMARmYEdyYiu3uPO8AqQ" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lMAhmYEdyYiu3uPO8AqQ" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lMAxmYEdyYiu3uPO8AqQ" name="acess" ordered="false" unique="false" lowerBound="1" eType="_k7lMDhmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_k7lMBBmYEdyYiu3uPO8AqQ" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_k7lMBRmYEdyYiu3uPO8AqQ" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lMBhmYEdyYiu3uPO8AqQ" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_k7lMBxmYEdyYiu3uPO8AqQ" name="StorageClass">
+ <eAnnotations xmi:id="_k7lMCBmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_k7lMCRmYEdyYiu3uPO8AqQ" name="auto"/>
+ <eLiterals xmi:id="_k7lMChmYEdyYiu3uPO8AqQ" name="register" value="1"/>
+ <eLiterals xmi:id="_k7lMCxmYEdyYiu3uPO8AqQ" name="extern" value="2"/>
+ <eLiterals xmi:id="_k7lMDBmYEdyYiu3uPO8AqQ" name="static" value="3"/>
+ <eLiterals xmi:id="_k7lMDRmYEdyYiu3uPO8AqQ" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_k7lMDhmYEdyYiu3uPO8AqQ" name="AccessKind">
+ <eAnnotations xmi:id="_k7lMDxmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_k7lMEBmYEdyYiu3uPO8AqQ" name="read"/>
+ <eLiterals xmi:id="_k7lMERmYEdyYiu3uPO8AqQ" name="write" value="1"/>
+ <eLiterals xmi:id="_k7lMEhmYEdyYiu3uPO8AqQ" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_k7lMExmYEdyYiu3uPO8AqQ" name="NoGenCode">
+ <eAnnotations xmi:id="_k7lMFBmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_k7lMFRmYEdyYiu3uPO8AqQ" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_k7lMFhmYEdyYiu3uPO8AqQ" name="C_NamedElement">
+ <eAnnotations xmi:id="_k7lMFxmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lMGBmYEdyYiu3uPO8AqQ" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lMGRmYEdyYiu3uPO8AqQ" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lMGhmYEdyYiu3uPO8AqQ" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_k7lMGxmYEdyYiu3uPO8AqQ" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_k7lMHBmYEdyYiu3uPO8AqQ" name="Imports">
+ <eAnnotations xmi:id="_k7lMHRmYEdyYiu3uPO8AqQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_Zd610BmYEdyYiu3uPO8AqQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_k7lMHhmYEdyYiu3uPO8AqQ" name="importFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_k7lMHxmYEdyYiu3uPO8AqQ" name="base_Namespace" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Namespace"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_NDiIERjwEdyGHM4pSbTixw" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_NDiIEBjwEdyGHM4pSbTixw/15" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NDiIEhjwEdyGHM4pSbTixw" name="C_Type">
+ <eAnnotations xmi:id="_NDiIExjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDiIFBjwEdyGHM4pSbTixw" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDiIFRjwEdyGHM4pSbTixw" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDiIFhjwEdyGHM4pSbTixw" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDiIFxjwEdyGHM4pSbTixw" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NDiIGBjwEdyGHM4pSbTixw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NDiIGRjwEdyGHM4pSbTixw" name="C_Feature">
+ <eAnnotations xmi:id="_NDiIGhjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_NDiIGxjwEdyGHM4pSbTixw" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_NDiIHBjwEdyGHM4pSbTixw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_NDiIHRjwEdyGHM4pSbTixw" source="redefines" references="_NDivIBjwEdyGHM4pSbTixw"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDiIHhjwEdyGHM4pSbTixw" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_NDivJhjwEdyGHM4pSbTixw"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDiIHxjwEdyGHM4pSbTixw" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDiIIBjwEdyGHM4pSbTixw" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDiIIRjwEdyGHM4pSbTixw" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NDivIBjwEdyGHM4pSbTixw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDivIRjwEdyGHM4pSbTixw" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDivIhjwEdyGHM4pSbTixw" name="acess" ordered="false" unique="false" lowerBound="1" eType="_NDivLRjwEdyGHM4pSbTixw"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NDivIxjwEdyGHM4pSbTixw" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NDivJBjwEdyGHM4pSbTixw" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDivJRjwEdyGHM4pSbTixw" name="isRestrict" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_NDivJhjwEdyGHM4pSbTixw" name="StorageClass">
+ <eAnnotations xmi:id="_NDivJxjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_NDivKBjwEdyGHM4pSbTixw" name="auto"/>
+ <eLiterals xmi:id="_NDivKRjwEdyGHM4pSbTixw" name="register" value="1"/>
+ <eLiterals xmi:id="_NDivKhjwEdyGHM4pSbTixw" name="extern" value="2"/>
+ <eLiterals xmi:id="_NDivKxjwEdyGHM4pSbTixw" name="static" value="3"/>
+ <eLiterals xmi:id="_NDivLBjwEdyGHM4pSbTixw" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_NDivLRjwEdyGHM4pSbTixw" name="AccessKind">
+ <eAnnotations xmi:id="_NDivLhjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_NDivLxjwEdyGHM4pSbTixw" name="read"/>
+ <eLiterals xmi:id="_NDivMBjwEdyGHM4pSbTixw" name="write" value="1"/>
+ <eLiterals xmi:id="_NDivMRjwEdyGHM4pSbTixw" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NDivMhjwEdyGHM4pSbTixw" name="NoGenCode">
+ <eAnnotations xmi:id="_NDivMxjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NDivNBjwEdyGHM4pSbTixw" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_NDivNRjwEdyGHM4pSbTixw" name="C_NamedElement">
+ <eAnnotations xmi:id="_NDivNhjwEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDivNxjwEdyGHM4pSbTixw" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDivOBjwEdyGHM4pSbTixw" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_NDivORjwEdyGHM4pSbTixw" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_NDivOhjwEdyGHM4pSbTixw" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Vtv7oBjvEdyGHM4pSbTixw" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_VtvUkBjvEdyGHM4pSbTixw/14" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Vtv7oRjvEdyGHM4pSbTixw" name="C_Type">
+ <eAnnotations xmi:id="_Vtv7ohjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7oxjvEdyGHM4pSbTixw" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7pBjvEdyGHM4pSbTixw" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7pRjvEdyGHM4pSbTixw" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7phjvEdyGHM4pSbTixw" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Vtv7pxjvEdyGHM4pSbTixw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Vtv7qBjvEdyGHM4pSbTixw" name="C_Feature">
+ <eAnnotations xmi:id="_Vtv7qRjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eAnnotations xmi:id="_Vtv7qhjvEdyGHM4pSbTixw" source="duplicates">
+ <contents xmi:type="ecore:EReference" xmi:id="_Vtv7qxjvEdyGHM4pSbTixw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eAnnotations xmi:id="_Vtv7rBjvEdyGHM4pSbTixw" source="redefines" references="_Vtv7sRjvEdyGHM4pSbTixw"/>
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </contents>
+ </eAnnotations>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7rRjvEdyGHM4pSbTixw" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_Vtv7thjvEdyGHM4pSbTixw"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7rhjvEdyGHM4pSbTixw" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7rxjvEdyGHM4pSbTixw" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7sBjvEdyGHM4pSbTixw" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Vtv7sRjvEdyGHM4pSbTixw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7shjvEdyGHM4pSbTixw" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Vtv7sxjvEdyGHM4pSbTixw" name="acess" ordered="false" unique="false" lowerBound="1" eType="_Vtv7vRjvEdyGHM4pSbTixw"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Vtv7tBjvEdyGHM4pSbTixw" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Vtv7tRjvEdyGHM4pSbTixw" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Vtv7thjvEdyGHM4pSbTixw" name="StorageClass">
+ <eAnnotations xmi:id="_Vtv7txjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_Vtv7uBjvEdyGHM4pSbTixw" name="auto"/>
+ <eLiterals xmi:id="_Vtv7uRjvEdyGHM4pSbTixw" name="register" value="1"/>
+ <eLiterals xmi:id="_Vtv7uhjvEdyGHM4pSbTixw" name="extern" value="2"/>
+ <eLiterals xmi:id="_Vtv7uxjvEdyGHM4pSbTixw" name="static" value="3"/>
+ <eLiterals xmi:id="_Vtv7vBjvEdyGHM4pSbTixw" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Vtv7vRjvEdyGHM4pSbTixw" name="AccessKind">
+ <eAnnotations xmi:id="_Vtv7vhjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_Vtv7vxjvEdyGHM4pSbTixw" name="read"/>
+ <eLiterals xmi:id="_Vtv7wBjvEdyGHM4pSbTixw" name="write" value="1"/>
+ <eLiterals xmi:id="_Vtv7wRjvEdyGHM4pSbTixw" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Vtv7whjvEdyGHM4pSbTixw" name="NoGenCode">
+ <eAnnotations xmi:id="_Vtv7wxjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Vtv7xBjvEdyGHM4pSbTixw" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Vtv7xRjvEdyGHM4pSbTixw" name="C_NamedElement">
+ <eAnnotations xmi:id="_VtwisBjvEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VtwisRjvEdyGHM4pSbTixw" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VtwishjvEdyGHM4pSbTixw" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VtwisxjvEdyGHM4pSbTixw" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VtwitBjvEdyGHM4pSbTixw" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_VqN78BjuEdyGHM4pSbTixw" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_VqMGwBjuEdyGHM4pSbTixw/13" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VqN78RjuEdyGHM4pSbTixw" name="C_Type">
+ <eAnnotations xmi:id="_VqN78hjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN78xjuEdyGHM4pSbTixw" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN79BjuEdyGHM4pSbTixw" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN79RjuEdyGHM4pSbTixw" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN79hjuEdyGHM4pSbTixw" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VqN79xjuEdyGHM4pSbTixw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VqN7-BjuEdyGHM4pSbTixw" name="C_Feature">
+ <eAnnotations xmi:id="_VqN7-RjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN7-hjuEdyGHM4pSbTixw" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_VqN8AxjuEdyGHM4pSbTixw"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN7-xjuEdyGHM4pSbTixw" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN7_BjuEdyGHM4pSbTixw" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN7_RjuEdyGHM4pSbTixw" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VqN7_hjuEdyGHM4pSbTixw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN7_xjuEdyGHM4pSbTixw" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN8ABjuEdyGHM4pSbTixw" name="acess" ordered="false" unique="false" lowerBound="1" eType="_VqN8ChjuEdyGHM4pSbTixw"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VqN8ARjuEdyGHM4pSbTixw" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VqN8AhjuEdyGHM4pSbTixw" name="base_Feature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Feature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_VqN8AxjuEdyGHM4pSbTixw" name="StorageClass">
+ <eAnnotations xmi:id="_VqN8BBjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_VqN8BRjuEdyGHM4pSbTixw" name="auto"/>
+ <eLiterals xmi:id="_VqN8BhjuEdyGHM4pSbTixw" name="register" value="1"/>
+ <eLiterals xmi:id="_VqN8BxjuEdyGHM4pSbTixw" name="extern" value="2"/>
+ <eLiterals xmi:id="_VqN8CBjuEdyGHM4pSbTixw" name="static" value="3"/>
+ <eLiterals xmi:id="_VqN8CRjuEdyGHM4pSbTixw" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_VqN8ChjuEdyGHM4pSbTixw" name="AccessKind">
+ <eAnnotations xmi:id="_VqN8CxjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_VqN8DBjuEdyGHM4pSbTixw" name="read"/>
+ <eLiterals xmi:id="_VqN8DRjuEdyGHM4pSbTixw" name="write" value="1"/>
+ <eLiterals xmi:id="_VqN8DhjuEdyGHM4pSbTixw" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VqN8DxjuEdyGHM4pSbTixw" name="NoGenCode">
+ <eAnnotations xmi:id="_VqN8EBjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VqN8ERjuEdyGHM4pSbTixw" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VqN8EhjuEdyGHM4pSbTixw" name="C_NamedElement">
+ <eAnnotations xmi:id="_VqN8ExjuEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN8FBjuEdyGHM4pSbTixw" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN8FRjuEdyGHM4pSbTixw" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VqN8FhjuEdyGHM4pSbTixw" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VqN8FxjuEdyGHM4pSbTixw" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_XL1xoBjsEdyGHM4pSbTixw" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_XL0jgBjsEdyGHM4pSbTixw/12" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_XL1xoRjsEdyGHM4pSbTixw" name="C_Type">
+ <eAnnotations xmi:id="_XL1xohjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xoxjsEdyGHM4pSbTixw" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xpBjsEdyGHM4pSbTixw" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xpRjsEdyGHM4pSbTixw" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xphjsEdyGHM4pSbTixw" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_XL1xpxjsEdyGHM4pSbTixw" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_XL1xqBjsEdyGHM4pSbTixw" name="C_TypedElement">
+ <eAnnotations xmi:id="_XL1xqRjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xqhjsEdyGHM4pSbTixw" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_XL1xshjsEdyGHM4pSbTixw"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xqxjsEdyGHM4pSbTixw" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xrBjsEdyGHM4pSbTixw" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xrRjsEdyGHM4pSbTixw" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_XL1xrhjsEdyGHM4pSbTixw" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xrxjsEdyGHM4pSbTixw" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL1xsBjsEdyGHM4pSbTixw" name="acess" ordered="false" unique="false" lowerBound="1" eType="_XL2YsRjsEdyGHM4pSbTixw"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_XL1xsRjsEdyGHM4pSbTixw" name="base_BehavioralFeature" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//BehavioralFeature"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_XL1xshjsEdyGHM4pSbTixw" name="StorageClass">
+ <eAnnotations xmi:id="_XL1xsxjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_XL1xtBjsEdyGHM4pSbTixw" name="auto"/>
+ <eLiterals xmi:id="_XL1xtRjsEdyGHM4pSbTixw" name="register" value="1"/>
+ <eLiterals xmi:id="_XL1xthjsEdyGHM4pSbTixw" name="extern" value="2"/>
+ <eLiterals xmi:id="_XL1xtxjsEdyGHM4pSbTixw" name="static" value="3"/>
+ <eLiterals xmi:id="_XL2YsBjsEdyGHM4pSbTixw" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_XL2YsRjsEdyGHM4pSbTixw" name="AccessKind">
+ <eAnnotations xmi:id="_XL2YshjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_XL2YsxjsEdyGHM4pSbTixw" name="read"/>
+ <eLiterals xmi:id="_XL2YtBjsEdyGHM4pSbTixw" name="write" value="1"/>
+ <eLiterals xmi:id="_XL2YtRjsEdyGHM4pSbTixw" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_XL2YthjsEdyGHM4pSbTixw" name="NoGenCode">
+ <eAnnotations xmi:id="_XL2YtxjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_XL2YuBjsEdyGHM4pSbTixw" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_XL2YuRjsEdyGHM4pSbTixw" name="C_NamedElement">
+ <eAnnotations xmi:id="_XL2YuhjsEdyGHM4pSbTixw" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL2YuxjsEdyGHM4pSbTixw" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL2YvBjsEdyGHM4pSbTixw" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_XL2YvRjsEdyGHM4pSbTixw" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_XL2YvhjsEdyGHM4pSbTixw" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_koJzURjMEdyo-J6sTQ4XlA" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_koJzUBjMEdyo-J6sTQ4XlA/11" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_koJzUhjMEdyo-J6sTQ4XlA" name="C_Type">
+ <eAnnotations xmi:id="_koJzUxjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzVBjMEdyo-J6sTQ4XlA" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzVRjMEdyo-J6sTQ4XlA" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzVhjMEdyo-J6sTQ4XlA" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzVxjMEdyo-J6sTQ4XlA" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_koJzWBjMEdyo-J6sTQ4XlA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_koJzWRjMEdyo-J6sTQ4XlA" name="C_TypedElement">
+ <eAnnotations xmi:id="_koJzWhjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzWxjMEdyo-J6sTQ4XlA" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_koJzYhjMEdyo-J6sTQ4XlA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzXBjMEdyo-J6sTQ4XlA" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzXRjMEdyo-J6sTQ4XlA" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzXhjMEdyo-J6sTQ4XlA" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_koJzXxjMEdyo-J6sTQ4XlA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzYBjMEdyo-J6sTQ4XlA" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koJzYRjMEdyo-J6sTQ4XlA" name="acess" ordered="false" unique="false" lowerBound="1" eType="_koKaZhjMEdyo-J6sTQ4XlA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_koJzYhjMEdyo-J6sTQ4XlA" name="StorageClass">
+ <eAnnotations xmi:id="_koKaYBjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_koKaYRjMEdyo-J6sTQ4XlA" name="auto"/>
+ <eLiterals xmi:id="_koKaYhjMEdyo-J6sTQ4XlA" name="register" value="1"/>
+ <eLiterals xmi:id="_koKaYxjMEdyo-J6sTQ4XlA" name="extern" value="2"/>
+ <eLiterals xmi:id="_koKaZBjMEdyo-J6sTQ4XlA" name="static" value="3"/>
+ <eLiterals xmi:id="_koKaZRjMEdyo-J6sTQ4XlA" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_koKaZhjMEdyo-J6sTQ4XlA" name="AccessKind">
+ <eAnnotations xmi:id="_koKaZxjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_koKaaBjMEdyo-J6sTQ4XlA" name="read"/>
+ <eLiterals xmi:id="_koKaaRjMEdyo-J6sTQ4XlA" name="write" value="1"/>
+ <eLiterals xmi:id="_koKaahjMEdyo-J6sTQ4XlA" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_koKaaxjMEdyo-J6sTQ4XlA" name="NoGenCode">
+ <eAnnotations xmi:id="_koKabBjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_koKabRjMEdyo-J6sTQ4XlA" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_koKabhjMEdyo-J6sTQ4XlA" name="C_NamedElement">
+ <eAnnotations xmi:id="_koKabxjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koKacBjMEdyo-J6sTQ4XlA" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koKacRjMEdyo-J6sTQ4XlA" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_koKachjMEdyo-J6sTQ4XlA" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_koKacxjMEdyo-J6sTQ4XlA" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_WhOU4BjMEdyo-J6sTQ4XlA" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_WhNGwBjMEdyo-J6sTQ4XlA/10" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_WhOU4RjMEdyo-J6sTQ4XlA" name="C_Type">
+ <eAnnotations xmi:id="_WhOU4hjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU4xjMEdyo-J6sTQ4XlA" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU5BjMEdyo-J6sTQ4XlA" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU5RjMEdyo-J6sTQ4XlA" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU5hjMEdyo-J6sTQ4XlA" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_WhOU5xjMEdyo-J6sTQ4XlA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_WhOU6BjMEdyo-J6sTQ4XlA" name="C_TypedElement">
+ <eAnnotations xmi:id="_WhOU6RjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU6hjMEdyo-J6sTQ4XlA" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_WhOU8RjMEdyo-J6sTQ4XlA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU6xjMEdyo-J6sTQ4XlA" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU7BjMEdyo-J6sTQ4XlA" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU7RjMEdyo-J6sTQ4XlA" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_WhOU7hjMEdyo-J6sTQ4XlA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU7xjMEdyo-J6sTQ4XlA" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhOU8BjMEdyo-J6sTQ4XlA" name="acess" ordered="false" unique="false" lowerBound="1" eType="_WhOU-BjMEdyo-J6sTQ4XlA"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_WhOU8RjMEdyo-J6sTQ4XlA" name="StorageClass">
+ <eAnnotations xmi:id="_WhOU8hjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_WhOU8xjMEdyo-J6sTQ4XlA" name="auto"/>
+ <eLiterals xmi:id="_WhOU9BjMEdyo-J6sTQ4XlA" name="register" value="1"/>
+ <eLiterals xmi:id="_WhOU9RjMEdyo-J6sTQ4XlA" name="extern" value="2"/>
+ <eLiterals xmi:id="_WhOU9hjMEdyo-J6sTQ4XlA" name="static" value="3"/>
+ <eLiterals xmi:id="_WhOU9xjMEdyo-J6sTQ4XlA" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_WhOU-BjMEdyo-J6sTQ4XlA" name="AccessKind">
+ <eAnnotations xmi:id="_WhOU-RjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_WhOU-hjMEdyo-J6sTQ4XlA" name="read"/>
+ <eLiterals xmi:id="_WhOU-xjMEdyo-J6sTQ4XlA" name="write" value="1"/>
+ <eLiterals xmi:id="_WhOU_BjMEdyo-J6sTQ4XlA" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_WhOU_RjMEdyo-J6sTQ4XlA" name="NoGenCode">
+ <eAnnotations xmi:id="_WhOU_hjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_WhOU_xjMEdyo-J6sTQ4XlA" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_WhO78BjMEdyo-J6sTQ4XlA" name="C_NamedElement">
+ <eAnnotations xmi:id="_WhO78RjMEdyo-J6sTQ4XlA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhO78hjMEdyo-J6sTQ4XlA" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhO78xjMEdyo-J6sTQ4XlA" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_WhO79BjMEdyo-J6sTQ4XlA" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_WhO79RjMEdyo-J6sTQ4XlA" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Tn0N4RjDEdyfI_WOjDrRyg" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_Tn0N4BjDEdyfI_WOjDrRyg/9" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Tn0N4hjDEdyfI_WOjDrRyg" name="C_Type" eSuperTypes="_Tn0N6RjDEdyfI_WOjDrRyg">
+ <eAnnotations xmi:id="_Tn0N4xjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N5BjDEdyfI_WOjDrRyg" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N5RjDEdyfI_WOjDrRyg" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N5hjDEdyfI_WOjDrRyg" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N5xjDEdyfI_WOjDrRyg" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Tn0N6BjDEdyfI_WOjDrRyg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Tn0N6RjDEdyfI_WOjDrRyg" name="C_NamedElement">
+ <eAnnotations xmi:id="_Tn0N6hjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_93GTkBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N6xjDEdyfI_WOjDrRyg" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N7BjDEdyfI_WOjDrRyg" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N7RjDEdyfI_WOjDrRyg" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Tn0N7hjDEdyfI_WOjDrRyg" name="base_NamedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//NamedElement"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Tn0N7xjDEdyfI_WOjDrRyg" name="C_TypedElement" eSuperTypes="_Tn0N6RjDEdyfI_WOjDrRyg">
+ <eAnnotations xmi:id="_Tn0N8BjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N8RjDEdyfI_WOjDrRyg" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_Tn0N-BjDEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N8hjDEdyfI_WOjDrRyg" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N8xjDEdyfI_WOjDrRyg" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N9BjDEdyfI_WOjDrRyg" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Tn0N9RjDEdyfI_WOjDrRyg" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N9hjDEdyfI_WOjDrRyg" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Tn0N9xjDEdyfI_WOjDrRyg" name="acess" ordered="false" unique="false" lowerBound="1" eType="_Tn009BjDEdyfI_WOjDrRyg"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Tn0N-BjDEdyfI_WOjDrRyg" name="StorageClass">
+ <eAnnotations xmi:id="_Tn0N-RjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_Tn0N-hjDEdyfI_WOjDrRyg" name="auto"/>
+ <eLiterals xmi:id="_Tn008BjDEdyfI_WOjDrRyg" name="register" value="1"/>
+ <eLiterals xmi:id="_Tn008RjDEdyfI_WOjDrRyg" name="extern" value="2"/>
+ <eLiterals xmi:id="_Tn008hjDEdyfI_WOjDrRyg" name="static" value="3"/>
+ <eLiterals xmi:id="_Tn008xjDEdyfI_WOjDrRyg" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Tn009BjDEdyfI_WOjDrRyg" name="AccessKind">
+ <eAnnotations xmi:id="_Tn009RjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_Tn009hjDEdyfI_WOjDrRyg" name="read"/>
+ <eLiterals xmi:id="_Tn009xjDEdyfI_WOjDrRyg" name="write" value="1"/>
+ <eLiterals xmi:id="_Tn00-BjDEdyfI_WOjDrRyg" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Tn00-RjDEdyfI_WOjDrRyg" name="NoGenCode">
+ <eAnnotations xmi:id="_Tn00-hjDEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Tn00-xjDEdyfI_WOjDrRyg" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_FwUvEBjCEdyfI_WOjDrRyg" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_FwTg8BjCEdyfI_WOjDrRyg/8" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FwUvERjCEdyfI_WOjDrRyg" name="C_GeneratedType">
+ <eAnnotations xmi:id="_FwUvEhjCEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwUvExjCEdyfI_WOjDrRyg" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWIBjCEdyfI_WOjDrRyg" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWIRjCEdyfI_WOjDrRyg" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWIhjCEdyfI_WOjDrRyg" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWIxjCEdyfI_WOjDrRyg" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWJBjCEdyfI_WOjDrRyg" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWJRjCEdyfI_WOjDrRyg" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FwVWJhjCEdyfI_WOjDrRyg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FwVWJxjCEdyfI_WOjDrRyg" name="C_GeneratedTypedElement">
+ <eAnnotations xmi:id="_FwVWKBjCEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWKRjCEdyfI_WOjDrRyg" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_FwVWMRjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWKhjCEdyfI_WOjDrRyg" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWKxjCEdyfI_WOjDrRyg" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWLBjCEdyfI_WOjDrRyg" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FwVWLRjCEdyfI_WOjDrRyg" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWLhjCEdyfI_WOjDrRyg" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWLxjCEdyfI_WOjDrRyg" name="acess" ordered="false" unique="false" lowerBound="1" eType="_FwVWOBjCEdyfI_WOjDrRyg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_FwVWMBjCEdyfI_WOjDrRyg" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_FwVWMRjCEdyfI_WOjDrRyg" name="StorageClass">
+ <eAnnotations xmi:id="_FwVWMhjCEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_FwVWMxjCEdyfI_WOjDrRyg" name="auto"/>
+ <eLiterals xmi:id="_FwVWNBjCEdyfI_WOjDrRyg" name="register" value="1"/>
+ <eLiterals xmi:id="_FwVWNRjCEdyfI_WOjDrRyg" name="extern" value="2"/>
+ <eLiterals xmi:id="_FwVWNhjCEdyfI_WOjDrRyg" name="static" value="3"/>
+ <eLiterals xmi:id="_FwVWNxjCEdyfI_WOjDrRyg" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_FwVWOBjCEdyfI_WOjDrRyg" name="AccessKind">
+ <eAnnotations xmi:id="_FwVWORjCEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_FwVWOhjCEdyfI_WOjDrRyg" name="read"/>
+ <eLiterals xmi:id="_FwVWOxjCEdyfI_WOjDrRyg" name="write" value="1"/>
+ <eLiterals xmi:id="_FwVWPBjCEdyfI_WOjDrRyg" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_FwVWPRjCEdyfI_WOjDrRyg" name="NoGenCode">
+ <eAnnotations xmi:id="_FwVWPhjCEdyfI_WOjDrRyg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_FwVWPxjCEdyfI_WOjDrRyg" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_VztnEBiqEdyL78Gqc5OeNA" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_VzsY8BiqEdyL78Gqc5OeNA/7" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VztnERiqEdyL78Gqc5OeNA" name="C_GeneratedType">
+ <eAnnotations xmi:id="_VztnEhiqEdyL78Gqc5OeNA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnExiqEdyL78Gqc5OeNA" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnFBiqEdyL78Gqc5OeNA" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnFRiqEdyL78Gqc5OeNA" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnFhiqEdyL78Gqc5OeNA" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnFxiqEdyL78Gqc5OeNA" name="prefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnGBiqEdyL78Gqc5OeNA" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnGRiqEdyL78Gqc5OeNA" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VztnGhiqEdyL78Gqc5OeNA" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VztnGxiqEdyL78Gqc5OeNA" name="C_GeneratedTypedElement">
+ <eAnnotations xmi:id="_VztnHBiqEdyL78Gqc5OeNA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnHRiqEdyL78Gqc5OeNA" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_VztnJRiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnHhiqEdyL78Gqc5OeNA" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnHxiqEdyL78Gqc5OeNA" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnIBiqEdyL78Gqc5OeNA" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VztnIRiqEdyL78Gqc5OeNA" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnIhiqEdyL78Gqc5OeNA" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnIxiqEdyL78Gqc5OeNA" name="acess" ordered="false" unique="false" lowerBound="1" eType="_VztnLBiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_VztnJBiqEdyL78Gqc5OeNA" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_VztnJRiqEdyL78Gqc5OeNA" name="StorageClass">
+ <eAnnotations xmi:id="_VztnJhiqEdyL78Gqc5OeNA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_VztnJxiqEdyL78Gqc5OeNA" name="auto"/>
+ <eLiterals xmi:id="_VztnKBiqEdyL78Gqc5OeNA" name="register" value="1"/>
+ <eLiterals xmi:id="_VztnKRiqEdyL78Gqc5OeNA" name="extern" value="2"/>
+ <eLiterals xmi:id="_VztnKhiqEdyL78Gqc5OeNA" name="static" value="3"/>
+ <eLiterals xmi:id="_VztnKxiqEdyL78Gqc5OeNA" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_VztnLBiqEdyL78Gqc5OeNA" name="AccessKind">
+ <eAnnotations xmi:id="_VztnLRiqEdyL78Gqc5OeNA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_VztnLhiqEdyL78Gqc5OeNA" name="read"/>
+ <eLiterals xmi:id="_VztnLxiqEdyL78Gqc5OeNA" name="write" value="1"/>
+ <eLiterals xmi:id="_VztnMBiqEdyL78Gqc5OeNA" name="readWrite" value="2"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_VztnMRiqEdyL78Gqc5OeNA" name="NoGenCode">
+ <eAnnotations xmi:id="_VztnMhiqEdyL78Gqc5OeNA" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_CyQIURiqEdyL78Gqc5OeNA"/>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_VztnMxiqEdyL78Gqc5OeNA" name="base_Element" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Element"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_24Wi8RYIEdylxOSGZvSthg" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_24Wi8BYIEdylxOSGZvSthg/6" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_24Wi8hYIEdylxOSGZvSthg" name="C_GeneratedType">
+ <eAnnotations xmi:id="_24Wi8xYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24Wi9BYIEdylxOSGZvSthg" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24Wi9RYIEdylxOSGZvSthg" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24Wi9hYIEdylxOSGZvSthg" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24Wi9xYIEdylxOSGZvSthg" name="isNoCodeGenerated" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24XKABYIEdylxOSGZvSthg" name="isNoCodeGeneratedForAll" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24XKARYIEdylxOSGZvSthg" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24XKAhYIEdylxOSGZvSthg" name="prefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24XKAxYIEdylxOSGZvSthg" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24XKBBYIEdylxOSGZvSthg" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_24XKBRYIEdylxOSGZvSthg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_24cpkBYIEdylxOSGZvSthg" name="C_GeneratedTypedElement">
+ <eAnnotations xmi:id="_24cpkRYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24cpkhYIEdylxOSGZvSthg" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_24cpmhYIEdylxOSGZvSthg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24cpkxYIEdylxOSGZvSthg" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24cplBYIEdylxOSGZvSthg" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24cplRYIEdylxOSGZvSthg" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_24cplhYIEdylxOSGZvSthg" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24cplxYIEdylxOSGZvSthg" name="isAccessorsGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24cpmBYIEdylxOSGZvSthg" name="acess" ordered="false" unique="false" lowerBound="1" eType="_24cpoRYIEdylxOSGZvSthg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_24cpmRYIEdylxOSGZvSthg" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_24cpmhYIEdylxOSGZvSthg" name="StorageClass">
+ <eAnnotations xmi:id="_24cpmxYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_24cpnBYIEdylxOSGZvSthg" name="auto"/>
+ <eLiterals xmi:id="_24cpnRYIEdylxOSGZvSthg" name="register" value="1"/>
+ <eLiterals xmi:id="_24cpnhYIEdylxOSGZvSthg" name="extern" value="2"/>
+ <eLiterals xmi:id="_24cpnxYIEdylxOSGZvSthg" name="static" value="3"/>
+ <eLiterals xmi:id="_24cpoBYIEdylxOSGZvSthg" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_24cpoRYIEdylxOSGZvSthg" name="AccessKind">
+ <eAnnotations xmi:id="_24cpohYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_24cpoxYIEdylxOSGZvSthg" name="read"/>
+ <eLiterals xmi:id="_24cppBYIEdylxOSGZvSthg" name="write" value="1"/>
+ <eLiterals xmi:id="_24cppRYIEdylxOSGZvSthg" name="readWrite" value="2"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_hMLKYBYIEdylxOSGZvSthg" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_hMKjUBYIEdylxOSGZvSthg/5" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_hMLKYRYIEdylxOSGZvSthg" name="C_GeneratedType">
+ <eAnnotations xmi:id="_hMLKYhYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKYxYIEdylxOSGZvSthg" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKZBYIEdylxOSGZvSthg" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKZRYIEdylxOSGZvSthg" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKZhYIEdylxOSGZvSthg" name="isNoCodeGenerated" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKZxYIEdylxOSGZvSthg" name="isNoCodeGeneratedForAll" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKaBYIEdylxOSGZvSthg" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKaRYIEdylxOSGZvSthg" name="prefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKahYIEdylxOSGZvSthg" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKaxYIEdylxOSGZvSthg" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_hMLKbBYIEdylxOSGZvSthg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_hMLKbRYIEdylxOSGZvSthg" name="C_GeneratedTypedElement">
+ <eAnnotations xmi:id="_hMLKbhYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKbxYIEdylxOSGZvSthg" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_hMLKdxYIEdylxOSGZvSthg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKcBYIEdylxOSGZvSthg" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKcRYIEdylxOSGZvSthg" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKchYIEdylxOSGZvSthg" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_hMLKcxYIEdylxOSGZvSthg" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKdBYIEdylxOSGZvSthg" name="isAccessorGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKdRYIEdylxOSGZvSthg" name="acess" ordered="false" unique="false" lowerBound="1" eType="_hMLKfhYIEdylxOSGZvSthg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_hMLKdhYIEdylxOSGZvSthg" name="isVisibilityPrefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_hMLKdxYIEdylxOSGZvSthg" name="StorageClass">
+ <eAnnotations xmi:id="_hMLKeBYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_hMLKeRYIEdylxOSGZvSthg" name="auto"/>
+ <eLiterals xmi:id="_hMLKehYIEdylxOSGZvSthg" name="register" value="1"/>
+ <eLiterals xmi:id="_hMLKexYIEdylxOSGZvSthg" name="extern" value="2"/>
+ <eLiterals xmi:id="_hMLKfBYIEdylxOSGZvSthg" name="static" value="3"/>
+ <eLiterals xmi:id="_hMLKfRYIEdylxOSGZvSthg" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_hMLKfhYIEdylxOSGZvSthg" name="AccessKind">
+ <eAnnotations xmi:id="_hMLKfxYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_hMLKgBYIEdylxOSGZvSthg" name="read"/>
+ <eLiterals xmi:id="_hMLKgRYIEdylxOSGZvSthg" name="write" value="1"/>
+ <eLiterals xmi:id="_hMLKghYIEdylxOSGZvSthg" name="readWrite" value="2"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_Duar4BYIEdylxOSGZvSthg" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_DuaE0BYIEdylxOSGZvSthg/4" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Duar4RYIEdylxOSGZvSthg" name="C_GeneratedType">
+ <eAnnotations xmi:id="_Duar4hYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar4xYIEdylxOSGZvSthg" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar5BYIEdylxOSGZvSthg" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar5RYIEdylxOSGZvSthg" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar5hYIEdylxOSGZvSthg" name="isNoCodeGenerated" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar5xYIEdylxOSGZvSthg" name="isNoCodeGeneratedForAll" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar6BYIEdylxOSGZvSthg" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar6RYIEdylxOSGZvSthg" name="prefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar6hYIEdylxOSGZvSthg" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar6xYIEdylxOSGZvSthg" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Duar7BYIEdylxOSGZvSthg" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_Duar7RYIEdylxOSGZvSthg" name="C_GeneratedTypedElement">
+ <eAnnotations xmi:id="_Duar7hYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_6KIgINuZEdu40vrGR5q4gQ"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar7xYIEdylxOSGZvSthg" name="storageClass" ordered="false" unique="false" lowerBound="1" eType="_Duar9hYIEdylxOSGZvSthg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar8BYIEdylxOSGZvSthg" name="isPointer" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar8RYIEdylxOSGZvSthg" name="isConst" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar8hYIEdylxOSGZvSthg" name="isVolatile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Duar8xYIEdylxOSGZvSthg" name="base_TypedElement" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//TypedElement"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar9BYIEdylxOSGZvSthg" name="isAccessorGenerated" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Duar9RYIEdylxOSGZvSthg" name="acess" ordered="false" unique="false" lowerBound="1" eType="_Duar_RYIEdylxOSGZvSthg"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Duar9hYIEdylxOSGZvSthg" name="StorageClass">
+ <eAnnotations xmi:id="_Duar9xYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_qO2yMNt4EduxXYGi8mOVFA"/>
+ <eLiterals xmi:id="_Duar-BYIEdylxOSGZvSthg" name="auto"/>
+ <eLiterals xmi:id="_Duar-RYIEdylxOSGZvSthg" name="register" value="1"/>
+ <eLiterals xmi:id="_Duar-hYIEdylxOSGZvSthg" name="extern" value="2"/>
+ <eLiterals xmi:id="_Duar-xYIEdylxOSGZvSthg" name="static" value="3"/>
+ <eLiterals xmi:id="_Duar_BYIEdylxOSGZvSthg" name="inline" value="4"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Duar_RYIEdylxOSGZvSthg" name="AccessKind">
+ <eAnnotations xmi:id="_Duar_hYIEdylxOSGZvSthg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_8b3rUBYHEdylxOSGZvSthg"/>
+ <eLiterals xmi:id="_Duar_xYIEdylxOSGZvSthg" name="read"/>
+ <eLiterals xmi:id="_DuasABYIEdylxOSGZvSthg" name="write" value="1"/>
+ <eLiterals xmi:id="_DuasARYIEdylxOSGZvSthg" name="readWrite" value="2"/>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_gkRrsBU-EdyGtuGaCXC25Q" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_gkRErhU-EdyGtuGaCXC25Q/3" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_gkRrsRU-EdyGtuGaCXC25Q" name="C_GeneratedType">
+ <eAnnotations xmi:id="_gkRrshU-EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRrsxU-EdyGtuGaCXC25Q" name="isQualifiedNameUsed" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRrtBU-EdyGtuGaCXC25Q" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRrtRU-EdyGtuGaCXC25Q" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRrthU-EdyGtuGaCXC25Q" name="isNoCodeGenerated" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRrtxU-EdyGtuGaCXC25Q" name="isNoCodeGeneratedForAll" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRruBU-EdyGtuGaCXC25Q" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRruRU-EdyGtuGaCXC25Q" name="prefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRruhU-EdyGtuGaCXC25Q" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_gkRruxU-EdyGtuGaCXC25Q" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_gkRrvBU-EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_-Ep10RU9EdyGtuGaCXC25Q" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_-Ep10BU9EdyGtuGaCXC25Q/2" nsPrefix="CGenerator">
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_-Ep10hU9EdyGtuGaCXC25Q" name="C_GeneratedType">
+ <eAnnotations xmi:id="_-Ep10xU9EdyGtuGaCXC25Q" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_P2CwoBU6EdyGtuGaCXC25Q"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep11BU9EdyGtuGaCXC25Q" name="isQualifiedNameUse" ordered="false" unique="false" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep11RU9EdyGtuGaCXC25Q" name="CName" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep11hU9EdyGtuGaCXC25Q" name="extern" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep11xU9EdyGtuGaCXC25Q" name="isNoCodeGenerated" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep12BU9EdyGtuGaCXC25Q" name="isNoCodeGeneratedForAll" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep12RU9EdyGtuGaCXC25Q" name="isDynamicInstanciation" ordered="false" unique="false" lowerBound="1" defaultValueLiteral="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep12hU9EdyGtuGaCXC25Q" name="prefix" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep12xU9EdyGtuGaCXC25Q" name="isFunctionGeneratedToSepcificFile" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_-Ep13BU9EdyGtuGaCXC25Q" name="isAttributeNameUsed" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_-Ep13RU9EdyGtuGaCXC25Q" name="base_Type" ordered="false" unique="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Type"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ <contents xmi:type="ecore:EPackage" xmi:id="_NYwO0RU6EdyGtuGaCXC25Q" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_NYwO0BU6EdyGtuGaCXC25Q/1" nsPrefix="CGenerator"/>
+ <contents xmi:type="ecore:EPackage" xmi:id="_IEYLIBU6EdyGtuGaCXC25Q" name="CGenerator" nsURI="http://src/com/cea/gen/c/profile/C_AINSI/schemas/CGenerator/_IEXkMhU6EdyGtuGaCXC25Q/0" nsPrefix="CGenerator"/>
+ </eAnnotations>
+ <elementImport xmi:id="_zgFD0BU9EdyGtuGaCXC25Q" alias="Type">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Type"/>
+ </elementImport>
+ <elementImport xmi:id="_FIQWYBiqEdyL78Gqc5OeNA" alias="Element">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </elementImport>
+ <elementImport xmi:id="_KpH0kBjDEdyfI_WOjDrRyg" alias="NamedElement">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </elementImport>
+ <elementImport xmi:id="_Hv59MBjuEdyGHM4pSbTixw" alias="Feature">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
+ </elementImport>
+ <elementImport xmi:id="_ONCjQBjvEdyGHM4pSbTixw" alias="TypedElement">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
+ </elementImport>
+ <elementImport xmi:id="_fMxPABmYEdyYiu3uPO8AqQ" alias="Namespace">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Namespace"/>
+ </elementImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_P2CwoBU6EdyGtuGaCXC25Q" name="C_Type">
+ <ownedAttribute xmi:id="_tWFcMBU8EdyGtuGaCXC25Q" name="extern" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_1G9-kBU8EdyGtuGaCXC25Q" name="isDynamicInstanciation" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PQGDkBU9EdyGtuGaCXC25Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PQGqoBU9EdyGtuGaCXC25Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_PQHRsBU9EdyGtuGaCXC25Q" value="false"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_dTRqcBU9EdyGtuGaCXC25Q" name="isFunctionGeneratedToSepcificFile" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ty6FoBU9EdyGtuGaCXC25Q" name="isAttributeNameUsed" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_1fnSoBU9EdyGtuGaCXC25Q" name="base_Type" isUnique="false" association="_1fkPUBU9EdyGtuGaCXC25Q">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Type"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_1fkPUBU9EdyGtuGaCXC25Q" name="Extension_C_GeneratedType" memberEnd="_1fldcBU9EdyGtuGaCXC25Q _1fnSoBU9EdyGtuGaCXC25Q">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_1fldcBU9EdyGtuGaCXC25Q" name="extension_C_GeneratedType" type="_P2CwoBU6EdyGtuGaCXC25Q" aggregation="composite" association="_1fkPUBU9EdyGtuGaCXC25Q"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_6KIgINuZEdu40vrGR5q4gQ" name="C_Feature">
+ <ownedAttribute xmi:id="_0uTCMNucEdu40vrGR5q4gQ" name="storageClass" type="_qO2yMNt4EduxXYGi8mOVFA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0_czgD98EdyWndo1HgT9Ig"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0_f20D98EdyWndo1HgT9Ig" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_OrDCoNueEdu40vrGR5q4gQ" name="isPointer" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_kKIFENt3EduxXYGi8mOVFA" name="isConst" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oVQBsNt3EduxXYGi8mOVFA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oVSd8Nt3EduxXYGi8mOVFA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oVTsENt3EduxXYGi8mOVFA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_kROLkNt3EduxXYGi8mOVFA" name="isVolatile" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pQzD8Nt3EduxXYGi8mOVFA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pQzD8dt3EduxXYGi8mOVFA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pQzrANt3EduxXYGi8mOVFA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_2SkKwBYHEdylxOSGZvSthg" name="isAccessorsGenerated" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2kvDYBYIEdylxOSGZvSthg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2kw4kBYIEdylxOSGZvSthg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2kytwBYIEdylxOSGZvSthg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_5ARHIBYHEdylxOSGZvSthg" name="acess" type="_8b3rUBYHEdylxOSGZvSthg" isUnique="false"/>
+ <ownedAttribute xmi:id="_JnhUMBjwEdyGHM4pSbTixw" name="isRestrict" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3ydVcDnQEdyK9KOUzoZMXQ" name="bitLength" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8DZQEDnZEdyK9KOUzoZMXQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8DqV0DnZEdyK9KOUzoZMXQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_8Drj8DnZEdyK9KOUzoZMXQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_yrf4wcdtEd29as0ocaFXLw" name="base_TypedElement" isUnique="false" association="_yqmg4MdtEd29as0ocaFXLw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TypedElement"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zur0EcdtEd29as0ocaFXLw" name="base_Feature" isUnique="false" association="_zt8NMMdtEd29as0ocaFXLw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_qO2yMNt4EduxXYGi8mOVFA" name="StorageClass">
+ <ownedLiteral xmi:id="_rv0OoNt4EduxXYGi8mOVFA" name="auto"/>
+ <ownedLiteral xmi:id="_r1uCUNt4EduxXYGi8mOVFA" name="register"/>
+ <ownedLiteral xmi:id="_r6qMsNt4EduxXYGi8mOVFA" name="extern"/>
+ <ownedLiteral xmi:id="_r_IdANt4EduxXYGi8mOVFA" name="static"/>
+ <ownedLiteral xmi:id="_ytqxkNt4EduxXYGi8mOVFA" name="inline"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_8b3rUBYHEdylxOSGZvSthg" name="AccessKind">
+ <ownedLiteral xmi:id="_9tPMkBYHEdylxOSGZvSthg" name="read"/>
+ <ownedLiteral xmi:id="_9y0QIBYHEdylxOSGZvSthg" name="write"/>
+ <ownedLiteral xmi:id="_-AI6cBYHEdylxOSGZvSthg" name="readWrite"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_CyQIURiqEdyL78Gqc5OeNA" name="NoGenCode">
+ <ownedAttribute xmi:id="_GS92ABiqEdyL78Gqc5OeNA" name="base_Element" isUnique="false" association="_GS6ysBiqEdyL78Gqc5OeNA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_GS6ysBiqEdyL78Gqc5OeNA" name="Extension_NoGenCode" memberEnd="_GS8A0BiqEdyL78Gqc5OeNA _GS92ABiqEdyL78Gqc5OeNA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_GS8A0BiqEdyL78Gqc5OeNA" name="extension_NoGenCode" type="_CyQIURiqEdyL78Gqc5OeNA" aggregation="composite" association="_GS6ysBiqEdyL78Gqc5OeNA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_93GTkBjCEdyfI_WOjDrRyg" name="C_NamedElement">
+ <ownedAttribute xmi:id="_pAD3IBU8EdyGtuGaCXC25Q" name="CName" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_aViuABU9EdyGtuGaCXC25Q" name="isVisibilityPrefix" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DHrR0RjCEdyfI_WOjDrRyg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DHtHABjCEdyfI_WOjDrRyg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_DHuVIBjCEdyfI_WOjDrRyg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_lJpmQBU8EdyGtuGaCXC25Q" name="isQualifiedNameUsed" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCxwUBU9EdyGtuGaCXC25Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCzlgBU9EdyGtuGaCXC25Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_0wG9wBU8EdyGtuGaCXC25Q"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_MhhgoBjDEdyfI_WOjDrRyg" name="base_NamedElement" isUnique="false" association="_MhedUBjDEdyfI_WOjDrRyg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#NamedElement"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_MhedUBjDEdyfI_WOjDrRyg" name="Extension_GeneratedNamedElement" memberEnd="_MhfEYBjDEdyfI_WOjDrRyg _MhhgoBjDEdyfI_WOjDrRyg">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_MhfEYBjDEdyfI_WOjDrRyg" name="extension_GeneratedNamedElement" type="_93GTkBjCEdyfI_WOjDrRyg" aggregation="composite" association="_MhedUBjDEdyfI_WOjDrRyg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Zd610BmYEdyYiu3uPO8AqQ" name="Importer">
+ <ownedAttribute xmi:id="_aQdtEBmYEdyYiu3uPO8AqQ" name="importFile" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_gTDhoBmYEdyYiu3uPO8AqQ" name="base_Namespace" isUnique="false" association="_gS_3QBmYEdyYiu3uPO8AqQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Namespace"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_gS_3QBmYEdyYiu3uPO8AqQ" name="Extension_Imports" memberEnd="_gTAeUBmYEdyYiu3uPO8AqQ _gTDhoBmYEdyYiu3uPO8AqQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_gTAeUBmYEdyYiu3uPO8AqQ" name="extension_Imports" type="_Zd610BmYEdyYiu3uPO8AqQ" aggregation="composite" association="_gS_3QBmYEdyYiu3uPO8AqQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_yqmg4MdtEd29as0ocaFXLw" name="Extension_C_Feature" memberEnd="_yrf4wMdtEd29as0ocaFXLw _yrf4wcdtEd29as0ocaFXLw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_yrf4wMdtEd29as0ocaFXLw" name="extension_C_Feature" type="_6KIgINuZEdu40vrGR5q4gQ" aggregation="composite" association="_yqmg4MdtEd29as0ocaFXLw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_zt8NMMdtEd29as0ocaFXLw" name="Extension_C_Feature" memberEnd="_zur0EMdtEd29as0ocaFXLw _zur0EcdtEd29as0ocaFXLw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_zur0EMdtEd29as0ocaFXLw" name="extension_C_Feature" type="_6KIgINuZEdu40vrGR5q4gQ" aggregation="composite" association="_zt8NMMdtEd29as0ocaFXLw"/>
+ </packagedElement>
+ </packagedElement>
+</uml:Profile>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.di b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.di
new file mode 100644
index 00000000000..4c1f96a4e7e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.di
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="PapyrusCpp.profile.notation#_cj6rMMoREeGKstsYRuxdvw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="PapyrusCpp.profile.notation#_UNXagMoSEeGKstsYRuxdvw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="PapyrusCpp.profile.notation#_VN2nIMoSEeGKstsYRuxdvw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="PapyrusCpp.profile.notation#_tDFW4MoSEeGKstsYRuxdvw"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="PapyrusCpp.profile.notation#_cj6rMMoREeGKstsYRuxdvw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="PapyrusCpp.profile.notation#_UNXagMoSEeGKstsYRuxdvw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="PapyrusCpp.profile.notation#_VN2nIMoSEeGKstsYRuxdvw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="PapyrusCpp.profile.notation#_tDFW4MoSEeGKstsYRuxdvw"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.notation b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.notation
new file mode 100644
index 00000000000..558d3998073
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.notation
@@ -0,0 +1,922 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_cj6rMMoREeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Modifiers" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_f4EjkMoREeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f4EjksoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f4Ejk8oREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f4FKoMoREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f4FKocoREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f4FKosoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f4FKo8oREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_f4FKpMoREeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_f4FKpcoREeGKstsYRuxdvw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_5yzLwNY8EeGH9LIP6-_nLw" type="3002" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H04mcNY9EeGH9LIP6-_nLw" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H05NgNY9EeGH9LIP6-_nLw" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="PapyrusCpp.profile.uml#_5xNQUNY8EeGH9LIP6-_nLw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5yzLwdY8EeGH9LIP6-_nLw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_f4FKpsoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_f4FKp8oREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_f4FKqMoREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f4FKqcoREeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_f4FKqsoREeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_f4FKq8oREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_f4FKrMoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_f4FKrcoREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f4FKrsoREeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_19ZzgByHEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f4EjkcoREeGKstsYRuxdvw" x="81" y="162" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f4faUMoREeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f4faUsoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f4faU8oREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f4faVMoREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f4gBYMoREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f4gBYcoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f4gBYsoREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_f4gBY8oREeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f4faUcoREeGKstsYRuxdvw" x="81" y="27" width="487"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gcSD4MoREeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gcSq8MoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gcSq8coREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gcSq8soREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gcSq88oREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gcSq9MoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gcSq9coREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gcSq9soREeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gcSq98oREeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gcSq-MoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gcSq-coREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gcSq-soREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gcSq-8oREeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gcTSAMoREeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gcTSAcoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_gcTSAsoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_gcTSA8oREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gcTSBMoREeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_2VwCEByHEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gcSD4coREeGKstsYRuxdvw" x="225" y="162" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hA3-sMoREeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA4lwMoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA4lwcoREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA4lwsoREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA4lw8oREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hA4lxMoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hA4lxcoREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hA4lxsoREeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hA4lx8oREeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hA4lyMoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hA4lycoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hA4lysoREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA4ly8oREeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hA5M0MoREeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hA5M0coREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_hA5M0soREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_hA5M08oREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA5M1MoREeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_l2faUByHEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hA3-scoREeGKstsYRuxdvw" x="351" y="162" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hBS1cMoREeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hBS1csoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hBS1c8oREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hBTcgMoREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hBTcgcoREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hBTcgsoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hBTcg8oREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hBTchMoREeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hBS1ccoREeGKstsYRuxdvw" x="81" y="333" width="496"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1D62QMoREeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1D7dUMoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1D8EYMoREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1D8EYcoREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1D8EYsoREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1D8EY8oREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1D8EZMoREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1D8EZcoREeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1D8EZsoREeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1D8EZ8oREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1D8EaMoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1D8EacoREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1D8EasoREeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1D8rcMoREeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1D8rccoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_1D8rcsoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_1D8rc8oREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1D8rdMoREeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_e6bN0ByMEdu0tMSz-ceC5A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1D62QcoREeGKstsYRuxdvw" x="720" y="162" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1ujusMoREeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1ujussoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1ujus8oREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1ujutMoREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1ujutcoREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1ujutsoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1ukVwMoREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1ukVwcoREeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Dependency"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1ujuscoREeGKstsYRuxdvw" x="720" y="333"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2QldsMoREeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2QldssoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2Qlds8oREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2QldtMoREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2QldtcoREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2QldtsoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2QmEwMoREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2QmEwcoREeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2QldscoREeGKstsYRuxdvw" x="711" y="27" width="370"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4yVowMoREeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4yWP0MoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4yWP0coREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4yWP0soREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4yWP08oREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4yW24MoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4yW24coREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4yW24soREeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4yW248oREeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4yW25MoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4yW25coREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4yW25soREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4yW258oREeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4yW26MoREeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4yW26coREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_4yW26soREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_4yW268oREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4yW27MoREeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_lfbL4ByMEdu0tMSz-ceC5A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4yVowcoREeGKstsYRuxdvw" x="855" y="162" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_51_eIMoREeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52AFMMoREeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52AFMcoREeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52AsQMoREeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52AsQcoREeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_52AsQsoREeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_52AsQ8oREeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_52AsRMoREeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_52AsRcoREeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_52AsRsoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_52AsR8oREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_52AsSMoREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52AsScoREeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_52BTUMoREeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_52BTUcoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_52BTUsoREeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_52BTU8oREeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_52BTVMoREeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_FA2LQByNEdu0tMSz-ceC5A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_51_eIcoREeGKstsYRuxdvw" x="981" y="162" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AFKQUMp5EeGa7fAyIn2eXA" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AFN6sMp5EeGa7fAyIn2eXA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AFN6scp5EeGa7fAyIn2eXA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AFN6ssp5EeGa7fAyIn2eXA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AFN6s8p5EeGa7fAyIn2eXA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AFOhwMp5EeGa7fAyIn2eXA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AFOhwcp5EeGa7fAyIn2eXA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AFOhwsp5EeGa7fAyIn2eXA" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AFOhw8p5EeGa7fAyIn2eXA" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AFOhxMp5EeGa7fAyIn2eXA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AFOhxcp5EeGa7fAyIn2eXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AFOhxsp5EeGa7fAyIn2eXA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AFOhx8p5EeGa7fAyIn2eXA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AFPI0Mp5EeGa7fAyIn2eXA" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AFPI0cp5EeGa7fAyIn2eXA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AFPI0sp5EeGa7fAyIn2eXA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AFPI08p5EeGa7fAyIn2eXA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AFPI1Mp5EeGa7fAyIn2eXA"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_WgwmcByHEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AFKQUcp5EeGa7fAyIn2eXA" x="486" y="162" width="91" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AGCaEMp5EeGa7fAyIn2eXA" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AGDBIMp5EeGa7fAyIn2eXA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AGDoMMp5EeGa7fAyIn2eXA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AGDoMcp5EeGa7fAyIn2eXA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AGDoMsp5EeGa7fAyIn2eXA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AGDoM8p5EeGa7fAyIn2eXA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AGDoNMp5EeGa7fAyIn2eXA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AGDoNcp5EeGa7fAyIn2eXA" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AGCaEcp5EeGa7fAyIn2eXA" x="594" y="333"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Kbn_MNY9EeGH9LIP6-_nLw" type="1002" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KbpNUNY9EeGH9LIP6-_nLw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KbpNUdY9EeGH9LIP6-_nLw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KbpNUtY9EeGH9LIP6-_nLw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KbpNU9Y9EeGH9LIP6-_nLw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Kbp0YNY9EeGH9LIP6-_nLw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Kbp0YdY9EeGH9LIP6-_nLw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Kbp0YtY9EeGH9LIP6-_nLw" type="3"/>
+ <element xmi:type="uml:Comment" href="PapyrusCpp.profile.uml#_KaTwkNY9EeGH9LIP6-_nLw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kbn_MdY9EeGH9LIP6-_nLw" x="99" y="405" width="154" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Oin68F5fEeKpvPHLdOdp2Q" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OitagF5fEeKpvPHLdOdp2Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OitagV5fEeKpvPHLdOdp2Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OiuBkF5fEeKpvPHLdOdp2Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OiuBkV5fEeKpvPHLdOdp2Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OiuooF5fEeKpvPHLdOdp2Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OiuooV5fEeKpvPHLdOdp2Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oiv2wF5fEeKpvPHLdOdp2Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Oiwd0F5fEeKpvPHLdOdp2Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Oiwd0V5fEeKpvPHLdOdp2Q" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Oiwd0l5fEeKpvPHLdOdp2Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Oiwd015fEeKpvPHLdOdp2Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Oiwd1F5fEeKpvPHLdOdp2Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Oiuool5fEeKpvPHLdOdp2Q" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataType"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OivPsF5fEeKpvPHLdOdp2Q" x="873" y="333"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QCi1kF5fEeKpvPHLdOdp2Q" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QCjcoF5fEeKpvPHLdOdp2Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QCjcoV5fEeKpvPHLdOdp2Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QCjcol5fEeKpvPHLdOdp2Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QCjco15fEeKpvPHLdOdp2Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QCjcpF5fEeKpvPHLdOdp2Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QCjcpV5fEeKpvPHLdOdp2Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QCjcpl5fEeKpvPHLdOdp2Q" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QCjcp15fEeKpvPHLdOdp2Q" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QCjcqF5fEeKpvPHLdOdp2Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QCjcqV5fEeKpvPHLdOdp2Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QCjcql5fEeKpvPHLdOdp2Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QCjcq15fEeKpvPHLdOdp2Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QCjcrF5fEeKpvPHLdOdp2Q" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QCjcrV5fEeKpvPHLdOdp2Q"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QCjcrl5fEeKpvPHLdOdp2Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QCjcr15fEeKpvPHLdOdp2Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QCjcsF5fEeKpvPHLdOdp2Q"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_QCUzIF5fEeKpvPHLdOdp2Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QCi1kV5fEeKpvPHLdOdp2Q" x="873" y="423" height="55"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_cj6rMcoREeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Profile" href="PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_f5Mk8MoREeGKstsYRuxdvw" type="1013" source="_f4EjkMoREeGKstsYRuxdvw" target="_f4faUMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_f5Mk8coREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_Vb-6QByIEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f5Mk8soREeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_saKyMMoREeGKstsYRuxdvw" id="(0.13212435233160622,0.7)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gcvW4MoREeGKstsYRuxdvw" type="1013" source="_gcSD4MoREeGKstsYRuxdvw" target="_f4faUMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_gcvW4coREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_V-ysYByIEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gcvW4soREeGKstsYRuxdvw" points="[0, 0, -133, -30]$[83, 18, -50, -12]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__VvW0Mp-EeGa7fAyIn2eXA" id="(0.39630390143737165,0.98)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_hBtsMMoREeGKstsYRuxdvw" type="1013" source="_hA3-sMoREeGKstsYRuxdvw" target="_hBS1cMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_hBtsMcoREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_kJ5gMByIEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hBtsMsoREeGKstsYRuxdvw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_t6c5MMoREeGKstsYRuxdvw" id="(0.6451612903225806,0.12)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_hh-goMoREeGKstsYRuxdvw" type="1013" source="_f4EjkMoREeGKstsYRuxdvw" target="_hBS1cMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_hh_HsMoREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_lzRRwByIEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_hh_HscoREeGKstsYRuxdvw" points="[50, -16, -351, 105]$[351, -106, -50, 15]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tS-pgMoREeGKstsYRuxdvw" id="(0.11088709677419355,0.02)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_k7v40MoREeGKstsYRuxdvw" type="1013" source="_gcSD4MoREeGKstsYRuxdvw" target="_hBS1cMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_k7v40coREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_mb27wByIEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_k7v40soREeGKstsYRuxdvw" points="[50, -45, -159, 140]$[180, -160, -29, 25]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CTKKMMp_EeGa7fAyIn2eXA" id="(0.39314516129032256,0.04)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_wqyS0MoREeGKstsYRuxdvw" type="1013" source="_hA3-sMoREeGKstsYRuxdvw" target="_f4faUMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_wqyS0coREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_q3wUwByHEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wqyS0soREeGKstsYRuxdvw" points="[-42, -50, 92, 110]$[-114, -135, 20, 25]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xdVxIMoREeGKstsYRuxdvw" id="(0.6447638603696099,0.94)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1u7iIMoREeGKstsYRuxdvw" type="1013" source="_1D62QMoREeGKstsYRuxdvw" target="_1ujusMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_1u7iIcoREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_gvyM8ByMEdu0tMSz-ceC5A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1u7iIsoREeGKstsYRuxdvw" points="[-50, -16, 675, 205]$[-725, -221, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_2Q9RIMoREeGKstsYRuxdvw" type="1013" source="_1D62QMoREeGKstsYRuxdvw" target="_2QldsMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_2Q9RIcoREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_hPPwIByMEdu0tMSz-ceC5A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2Q9RIsoREeGKstsYRuxdvw" points="[-50, -16, 675, 205]$[-725, -221, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HVmd4MoSEeGKstsYRuxdvw" id="(0.13513513513513514,0.94)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4ywfgMoREeGKstsYRuxdvw" type="1013" source="_4yVowMoREeGKstsYRuxdvw" target="_2QldsMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_4ywfgcoREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_n1PMsByMEdu0tMSz-ceC5A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4ywfgsoREeGKstsYRuxdvw" points="[0, 0, -707, -61]$[657, 56, -50, -5]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I59zoMoSEeGKstsYRuxdvw" id="(0.5162162162162162,0.84)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7BzxAMoREeGKstsYRuxdvw" type="1013" source="_51_eIMoREeGKstsYRuxdvw" target="_2QldsMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_7BzxAcoREeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_K5gnwByNEdu0tMSz-ceC5A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7BzxAsoREeGKstsYRuxdvw" points="[-50, -30, 217, 130]$[-226, -135, 41, 25]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_If9_QMoSEeGKstsYRuxdvw" id="(0.8871287128712871,0.46)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_fjeXIMoSEeGKstsYRuxdvw" type="1013" source="_hA3-sMoREeGKstsYRuxdvw" target="_2QldsMoREeGKstsYRuxdvw" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_fjeXIcoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_ThSyYByMEdu0tMSz-ceC5A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fjeXIsoSEeGKstsYRuxdvw" points="[-4, -5, -145, 95]$[-4, -41, -145, 59]$[140, -41, -1, 59]$[140, -90, -1, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EELT8MoTEeGKstsYRuxdvw" id="(0.85,0.05)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hkYe8MoSEeGKstsYRuxdvw" id="(0.038306451612903226,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_AHl5QMp5EeGa7fAyIn2eXA" type="1013" source="_AFKQUMp5EeGa7fAyIn2eXA" target="_AGCaEMp5EeGa7fAyIn2eXA" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_AHl5Qcp5EeGa7fAyIn2eXA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_gufsIByPEduuTv8efIb91A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AHl5Qsp5EeGa7fAyIn2eXA" points="[46, 22, -67, -133]$[117, 22, 4, -133]$[117, 130, 4, -25]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0NWGEMp-EeGa7fAyIn2eXA" type="1013" source="_AFKQUMp5EeGa7fAyIn2eXA" target="_hBS1cMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_0NWGEcp-EeGa7fAyIn2eXA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_jeImYByIEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0NWGEsp-EeGa7fAyIn2eXA" points="[-50, -1, 219, 0]$[-79, 0, 190, 1]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Bkd4MMp_EeGa7fAyIn2eXA" id="(0.907258064516129,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1jG_IMp-EeGa7fAyIn2eXA" type="1013" source="_AFKQUMp5EeGa7fAyIn2eXA" target="_f4faUMoREeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_1jG_Icp-EeGa7fAyIn2eXA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_Z4QGsByHEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1jG_Isp-EeGa7fAyIn2eXA" points="[-38, -50, 227, 302]$[-247, -327, 18, 25]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__wWPMMp-EeGa7fAyIn2eXA" id="(0.8993839835728953,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_M8Z54NY9EeGH9LIP6-_nLw" type="1022" source="_Kbn_MNY9EeGH9LIP6-_nLw" target="_f4EjkMoREeGKstsYRuxdvw" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_M8Z54dY9EeGH9LIP6-_nLw" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_M8Z54tY9EeGH9LIP6-_nLw" points="[-43, 21, -7, 216]$[-79, 21, -43, 216]$[-79, -245, -43, -50]$[-61, -245, -25, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M8gnkNY9EeGH9LIP6-_nLw" id="(0.2804878048780488,0.171875)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_M8gnkdY9EeGH9LIP6-_nLw" id="(0.2403846153846154,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_R-KNsF5fEeKpvPHLdOdp2Q" type="1013" source="_QCi1kF5fEeKpvPHLdOdp2Q" target="_Oin68F5fEeKpvPHLdOdp2Q" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_R-KNsV5fEeKpvPHLdOdp2Q" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_R-F8QV5fEeKpvPHLdOdp2Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_R-KNsl5fEeKpvPHLdOdp2Q" points="[8, -3, 0, 49]$[8, -43, 0, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R-PtQF5fEeKpvPHLdOdp2Q" id="(0.47,0.05)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_R-QUUF5fEeKpvPHLdOdp2Q" id="(0.51,0.96)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_UNXagMoSEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Hacks" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_XJFkwMoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XJGy4MoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XJGy4coSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XJGy4soSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XJGy48oSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XJGy5MoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XJGy5coSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XJGy5soSEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XJGy58oSEeGKstsYRuxdvw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_lyQz0P2HEeGbWP4cpLE0gg" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="PapyrusCpp.profile.uml#_XU2q8ByJEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lyQz0f2HEeGbWP4cpLE0gg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lyRa4P2HEeGbWP4cpLE0gg" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="PapyrusCpp.profile.uml#_YtvwgByJEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lyRa4f2HEeGbWP4cpLE0gg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_r9p_EP2HEeGbWP4cpLE0gg" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="PapyrusCpp.profile.uml#_r9C7EP2HEeGbWP4cpLE0gg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_r9p_Ef2HEeGbWP4cpLE0gg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XJGy6MoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XJGy6coSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XJGy6soSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XJHZ8MoSEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XJHZ8coSEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XJHZ8soSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_XJHZ88oSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_XJHZ9MoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XJHZ9coSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_RwTdQByJEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XJFkwcoSEeGKstsYRuxdvw" x="378" y="144" width="109" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XzsA8MoSEeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XzsoAMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XztPEMoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XztPEcoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XztPEsoSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XztPE8oSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XztPFMoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XztPFcoSEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XzsA8coSEeGKstsYRuxdvw" x="9" y="36" width="352"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YR4Y0MoSEeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YR4_4coSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YR5m8MoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YR5m8coSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YR5m8soSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YR5m88oSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YR5m9MoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YR5m9coSEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YR4_4MoSEeGKstsYRuxdvw" x="9" y="297" width="478"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Z1AYcMoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z1A_gMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z1A_gcoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z1A_gsoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z1BmkMoSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z1BmkcoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z1BmksoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z1Bmk8oSEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Z1BmlMoSEeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z1BmlcoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Z1BmlsoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Z1Bml8oSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z1BmmMoSEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Z1BmmcoSEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z1BmmsoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Z1Bmm8oSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Z1BmnMoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z1BmncoSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_u3zF8ByLEdu0tMSz-ceC5A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z1AYccoSEeGKstsYRuxdvw" x="9" y="144" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aYuJgMoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aYuwkMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aYuwkcoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aYuwksoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aYuwk8oSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aYuwlMoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aYvXoMoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aYvXocoSEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aYvXosoSEeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aYvXo8oSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aYvXpMoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aYvXpcoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aYvXpsoSEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aYvXp8oSEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aYvXqMoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_aYvXqcoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_aYvXqsoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aYvXq8oSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_IHjS8ByMEdu0tMSz-ceC5A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aYuJgcoSEeGKstsYRuxdvw" x="531" y="144" width="118" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a2qpwMoSEeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a2rQ0MoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a2rQ0coSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a2rQ0soSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a2r34MoSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a2r34coSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a2r34soSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a2r348oSEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a2qpwcoSEeGKstsYRuxdvw" x="531" y="36" width="118"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l9z9UMoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l90kYMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l90kYcoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l90kYsoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l90kY8oSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l90kZMoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l90kZcoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l90kZsoSEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l90kZ8oSEeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l90kaMoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l90kacoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l90kasoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l90ka8oSEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_l90kbMoSEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_l90kbcoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_l90kbsoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_l90kb8oSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l90kcMoSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_MyI6IByJEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l9z9UcoSEeGKstsYRuxdvw" x="126" y="144" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nxrusMoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nxrussoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nxrus8oSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nxsVwMoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nxsVwcoSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nxsVwsoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nxsVw8oSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nxsVxMoSEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nxsVxcoSEeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nxsVxsoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nxsVx8oSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nxsVyMoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nxsVycoSEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nxsVysoSEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nxsVy8oSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nxsVzMoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nxsVzcoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nxsVzsoSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_PmXVQByJEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nxruscoSEeGKstsYRuxdvw" x="243" y="144" width="109" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1pPUYMoSEeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pP7cMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pP7ccoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pP7csoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pP7c8oSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pP7dMoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pP7dcoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1pP7dsoSEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PackageImport"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pPUYcoSEeGKstsYRuxdvw" x="378" y="36" width="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EyACcP2IEeGbWP4cpLE0gg" type="1002" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EyApgP2IEeGbWP4cpLE0gg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EyBQkP2IEeGbWP4cpLE0gg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EyBQkf2IEeGbWP4cpLE0gg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EyBQkv2IEeGbWP4cpLE0gg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EyBQk_2IEeGbWP4cpLE0gg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EyBQlP2IEeGbWP4cpLE0gg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EyBQlf2IEeGbWP4cpLE0gg" type="3"/>
+ <element xmi:type="uml:Comment" href="PapyrusCpp.profile.uml#_Ew5PMP2IEeGbWP4cpLE0gg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EyACcf2IEeGbWP4cpLE0gg" x="524" y="242" width="179"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_A55C8CYNEeKe9vxHwEdBmA" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A57fMCYNEeKe9vxHwEdBmA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A57fMSYNEeKe9vxHwEdBmA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A58GQCYNEeKe9vxHwEdBmA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A58GQSYNEeKe9vxHwEdBmA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A58GQiYNEeKe9vxHwEdBmA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A58GQyYNEeKe9vxHwEdBmA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_A58GRCYNEeKe9vxHwEdBmA" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_A58GRSYNEeKe9vxHwEdBmA" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_vOtlMCYNEeKe9vxHwEdBmA" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="PapyrusCpp.profile.uml#_vOBBoCYNEeKe9vxHwEdBmA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vOtlMSYNEeKe9vxHwEdBmA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A58GRiYNEeKe9vxHwEdBmA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_A58GRyYNEeKe9vxHwEdBmA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_A58GSCYNEeKe9vxHwEdBmA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A58GSSYNEeKe9vxHwEdBmA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_A58tUCYNEeKe9vxHwEdBmA" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_A58tUSYNEeKe9vxHwEdBmA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_A58tUiYNEeKe9vxHwEdBmA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_A58tUyYNEeKe9vxHwEdBmA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A58tVCYNEeKe9vxHwEdBmA"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_A3_lgCYNEeKe9vxHwEdBmA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_A55C8SYNEeKe9vxHwEdBmA" x="189" y="378" width="211" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GUhfoCYNEeKe9vxHwEdBmA" type="1002" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GUiGsCYNEeKe9vxHwEdBmA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GUiGsSYNEeKe9vxHwEdBmA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GUiGsiYNEeKe9vxHwEdBmA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GUiGsyYNEeKe9vxHwEdBmA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GUiGtCYNEeKe9vxHwEdBmA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GUiGtSYNEeKe9vxHwEdBmA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GUiGtiYNEeKe9vxHwEdBmA" type="3"/>
+ <element xmi:type="uml:Comment" href="PapyrusCpp.profile.uml#_GS8LQCYNEeKe9vxHwEdBmA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GUhfoSYNEeKe9vxHwEdBmA" x="441" y="360" width="271" height="82"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_UNXagcoSEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Profile" href="PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_X0EbcMoSEeGKstsYRuxdvw" type="1013" source="_XJFkwMoSEeGKstsYRuxdvw" target="_XzsA8MoSEeGKstsYRuxdvw" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_X0EbccoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_0It34ByJEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_X0EbcsoSEeGKstsYRuxdvw" points="[-46, -50, 121, 132]$[-167, -182, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gI27UP2HEeGbWP4cpLE0gg" id="(0.3,0.03)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cr3QAP2HEeGbWP4cpLE0gg" id="(0.9204545454545454,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YSPlMMoSEeGKstsYRuxdvw" type="1013" source="_XJFkwMoSEeGKstsYRuxdvw" target="_YR4Y0MoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_YSPlMcoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_0jpgYByJEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YSPlMsoSEeGKstsYRuxdvw" points="[-46, -50, 121, 132]$[-167, -182, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y4j9gP2HEeGbWP4cpLE0gg" id="(0.8870292887029289,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_a3BPEMoSEeGKstsYRuxdvw" type="1013" source="_aYuJgMoSEeGKstsYRuxdvw" target="_a2qpwMoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_a3BPEcoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_KiZkwByMEdu0tMSz-ceC5A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a3BPEsoSEeGKstsYRuxdvw" points="[-50, -18, 468, 161]$[-518, -179, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_m1Im4MoSEeGKstsYRuxdvw" type="1013" source="_l9z9UMoSEeGKstsYRuxdvw" target="_YR4Y0MoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_m1Im4coSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_05nJUByJEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_m1Im4soSEeGKstsYRuxdvw" points="[-50, 15, 478, -152]$[-478, 151, 50, -16]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OXyGYP2HEeGbWP4cpLE0gg" id="(0.3493723849372385,0.04)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_nyC7EMoSEeGKstsYRuxdvw" type="1013" source="_nxrusMoSEeGKstsYRuxdvw" target="_XzsA8MoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_nyC7EcoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_zqqC4ByJEduN1bTiWJ0lyw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nyC7EsoSEeGKstsYRuxdvw" points="[0, 0, -167, -79]$[117, 55, -50, -24]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gmQpAP2HEeGbWP4cpLE0gg" id="(0.8181818181818182,0.84)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1pmgwMoSEeGKstsYRuxdvw" type="1013" source="_XJFkwMoSEeGKstsYRuxdvw" target="_1pPUYMoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_1pmgwcoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_kJ7RsDlPEd2mO4M0idYmag"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1pmgwsoSEeGKstsYRuxdvw" points="[-46, -50, 121, 132]$[-167, -182, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JO6vIP2HEeGbWP4cpLE0gg" type="1013" source="_Z1AYcMoSEeGKstsYRuxdvw" target="_XzsA8MoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_JO6vIf2HEeGbWP4cpLE0gg" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_xObmIByLEdu0tMSz-ceC5A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JO6vIv2HEeGbWP4cpLE0gg" points="[-50, -12, 463, 103]$[-463, -104, 50, 11]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hED_UP2HEeGbWP4cpLE0gg" id="(0.1534090909090909,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FudqsP2IEeGbWP4cpLE0gg" type="1022" source="_EyACcP2IEeGbWP4cpLE0gg" target="_XJFkwMoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Fudqsf2IEeGbWP4cpLE0gg" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Fudqsv2IEeGbWP4cpLE0gg" points="[-14, -8, 59, 34]$[-64, -38, 9, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FvCScP2IEeGbWP4cpLE0gg" id="(0.27,0.13333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FvCScf2IEeGbWP4cpLE0gg" id="(0.9174311926605505,0.7804878048780488)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_uCfpsCYNEeKe9vxHwEdBmA" type="1022" source="_GUhfoCYNEeKe9vxHwEdBmA" target="_A55C8CYNEeKe9vxHwEdBmA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_uCfpsSYNEeKe9vxHwEdBmA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uCfpsiYNEeKe9vxHwEdBmA" points="[-23, -2, 106, 8]$[-112, -11, 17, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uDRs0CYNEeKe9vxHwEdBmA" id="(0.007380073800738007,0.3229166666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uDST4CYNEeKe9vxHwEdBmA" id="(0.95260663507109,0.2054794520547945)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KF5DACYOEeKe9vxHwEdBmA" type="1013" source="_A55C8CYNEeKe9vxHwEdBmA" target="_YR4Y0MoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_KF5DASYOEeKe9vxHwEdBmA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_KEps4CYOEeKe9vxHwEdBmA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KF5DAiYOEeKe9vxHwEdBmA" points="[-3, -2, 0, 43]$[45, -33, 48, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KMLRMCYOEeKe9vxHwEdBmA" id="(0.5118483412322274,0.022222222222222223)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KMLRMSYOEeKe9vxHwEdBmA" id="(0.5983263598326359,0.94)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_VN2nIMoSEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Templates" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_w3sQ8MoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w3s4AMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w3s4AcoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w3s4AsoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w3s4A8oSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w3tfEMoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w3tfEcoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w3tfEsoSEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_w3tfE8oSEeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_w3tfFMoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_w3tfFcoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_w3tfFsoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w3tfF8oSEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_w3tfGMoSEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_w3tfGcoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_w3tfGsoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_w3tfG8oSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w3tfHMoSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_5W6MUByPEduuTv8efIb91A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w3sQ8coSEeGKstsYRuxdvw" x="134" y="126" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_w4F5kMoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w4GgoMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w4GgocoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w4GgosoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w4Ggo8oSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w4GgpMoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w4GgpcoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w4GgpsoSEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_w4Ggp8oSEeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_w4GgqMoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_w4GgqcoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_w4GgqsoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4Ggq8oSEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_w4GgrMoSEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_w4GgrcoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_w4GgrsoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_w4Ggr8oSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4GgsMoSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_9oCDQByPEduuTv8efIb91A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4F5kcoSEeGKstsYRuxdvw" x="504" y="126" width="127" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_w4fiMMoSEeGKstsYRuxdvw" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w4fiMsoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w4gJQMoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w4gJQcoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w4gJQsoSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w4gJQ8oSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w4gJRMoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_w4gJRcoSEeGKstsYRuxdvw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_w4gJRsoSEeGKstsYRuxdvw" type="1071">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_w4gJR8oSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_w4gJSMoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_w4gJScoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4gJSsoSEeGKstsYRuxdvw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_w4gJS8oSEeGKstsYRuxdvw" visible="false" type="1019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_w4gJTMoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_w4gJTcoSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_w4gJTsoSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4gJT8oSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="PapyrusCpp.profile.uml#_CYoEcByQEduuTv8efIb91A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4fiMcoSEeGKstsYRuxdvw" x="306" y="126" width="145" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yflb0MoSEeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yfmC4MoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yfmC4coSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yfmC4soSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yfmC48oSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yfmC5MoSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yfmp8MoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yfmp8coSEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateParameter"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yflb0coSEeGKstsYRuxdvw" x="306" y="36" width="145"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_y9Cz4MoSEeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y9Da8coSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y9Da8soSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y9Da88oSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y9Da9MoSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y9Da9coSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y9Da9soSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y9ECAMoSEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y9Da8MoSEeGKstsYRuxdvw" x="135" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zlEdMMoSEeGKstsYRuxdvw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zlFEQMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zlFrUMoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zlFrUcoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zlFrUsoSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zlFrU8oSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zlFrVMoSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zlFrVcoSEeGKstsYRuxdvw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateBinding"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zlEdMcoSEeGKstsYRuxdvw" x="504" y="36" width="127"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_VN3OMMoSEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Profile" href="PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_yf9PQMoSEeGKstsYRuxdvw" type="1013" source="_w4fiMMoSEeGKstsYRuxdvw" target="_yflb0MoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_yf9PQcoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_OYBOoByQEduuTv8efIb91A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yf9PQsoSEeGKstsYRuxdvw" points="[-66, -26, 360, 141]$[-426, -167, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EQ314P2JEeGbWP4cpLE0gg" id="(0.5448275862068965,0.024390243902439025)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_y9b1cMoSEeGKstsYRuxdvw" type="1013" source="_w3sQ8MoSEeGKstsYRuxdvw" target="_y9Cz4MoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_y9b1ccoSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_OqF2EByQEduuTv8efIb91A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y9b1csoSEeGKstsYRuxdvw" points="[-50, -47, 134, 125]$[-184, -172, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zleF0MoSEeGKstsYRuxdvw" type="1013" source="_w4F5kMoSEeGKstsYRuxdvw" target="_zlEdMMoSEeGKstsYRuxdvw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_zleF0coSEeGKstsYRuxdvw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="PapyrusCpp.profile.uml#_O9D1YByQEduuTv8efIb91A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zleF0soSEeGKstsYRuxdvw" points="[-58, -15, 594, 143]$[-652, -158, 0, 0]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_tDFW4MoSEeGKstsYRuxdvw" type="PapyrusUMLProfileDiagram" name="Enums" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_tf5OsMoSEeGKstsYRuxdvw" type="2006" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tf51wMoSEeGKstsYRuxdvw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tf51wcoSEeGKstsYRuxdvw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tf51wsoSEeGKstsYRuxdvw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tf6c0MoSEeGKstsYRuxdvw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tf6c0coSEeGKstsYRuxdvw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tf6c0soSEeGKstsYRuxdvw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tf6c08oSEeGKstsYRuxdvw" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tf6c1MoSEeGKstsYRuxdvw" type="1063">
+ <children xmi:type="notation:Shape" xmi:id="_uchPAMoSEeGKstsYRuxdvw" type="1037" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusCpp.profile.uml#_v6MwYByGEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uchPAcoSEeGKstsYRuxdvw" x="18" y="38"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uc6QkMoSEeGKstsYRuxdvw" type="1037" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusCpp.profile.uml#_wz28QByGEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uc6QkcoSEeGKstsYRuxdvw" x="18" y="38"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_udZYwMoSEeGKstsYRuxdvw" type="1037" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="PapyrusCpp.profile.uml#_xKmBQByGEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_udZYwcoSEeGKstsYRuxdvw" x="18" y="38"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tf6c1coSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_tf6c1soSEeGKstsYRuxdvw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_tf6c18oSEeGKstsYRuxdvw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tf6c2MoSEeGKstsYRuxdvw"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="PapyrusCpp.profile.uml#_rIXZEByGEduN1bTiWJ0lyw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tf5OscoSEeGKstsYRuxdvw" x="47" y="66"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_tDFW4coSEeGKstsYRuxdvw"/>
+ <element xmi:type="uml:Profile" href="PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.uml b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.uml
new file mode 100644
index 00000000000..6c17682c7ab
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/profiles/PapyrusCpp.profile.uml
@@ -0,0 +1,376 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Profile xmi:id="_j9REUByGEduN1bTiWJ0lyw" name="Cpp" metaclassReference="_TRvswByHEduN1bTiWJ0lyw _gphJsByIEduN1bTiWJ0lyw _Gt0nQByJEduN1bTiWJ0lyw _GuFF8ByJEduN1bTiWJ0lyw _G0LmkByMEdu0tMSz-ceC5A _G0XMwByMEdu0tMSz-ceC5A _G0a3IByMEdu0tMSz-ceC5A _jBetUByNEdu0tMSz-ceC5A _jB15sByNEdu0tMSz-ceC5A _jB_qsByNEdu0tMSz-ceC5A _jCCuAByNEdu0tMSz-ceC5A _jCGYYByNEdu0tMSz-ceC5A _jCJbsByNEdu0tMSz-ceC5A _X7dJsDlPEd2mO4M0idYmag _OiGWgF5fEeKpvPHLdOdp2Q">
+ <ownedComment xmi:id="_KaTwkNY9EeGH9LIP6-_nLw" annotatedElement="_19ZzgByHEduN1bTiWJ0lyw">
+ <body>&quot;declaration&quot; attribute should only be used, if more than one indirections of pointers (often &quot;**&quot;)</body>
+ </ownedComment>
+ <ownedComment xmi:id="_Ew5PMP2IEeGbWP4cpLE0gg" annotatedElement="_RwTdQByJEduN1bTiWJ0lyw">
+ <body>&quot;preBody&quot; is added to a C++ body file before automatic include statements, &quot;body&quot; after</body>
+ </ownedComment>
+ <ownedComment xmi:id="_GS8LQCYNEeKe9vxHwEdBmA" annotatedElement="_A3_lgCYNEeKe9vxHwEdBmA">
+ <body>Some toolkits require a quite particular way of use. For instance, LTTng requires the use of C (not C++) for the declaration of a trace provider and the header file is read several time with redefined macros. Therefore, the code generator supports a &quot;manual&quot; generation mode, in which primarily the contents of the CppInclude directive is written.</body>
+ </ownedComment>
+ <elementImport xmi:id="_TRvswByHEduN1bTiWJ0lyw">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </elementImport>
+ <elementImport xmi:id="_gphJsByIEduN1bTiWJ0lyw">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </elementImport>
+ <elementImport xmi:id="_Gt0nQByJEduN1bTiWJ0lyw">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </elementImport>
+ <elementImport xmi:id="_GuFF8ByJEduN1bTiWJ0lyw">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </elementImport>
+ <elementImport xmi:id="_G0LmkByMEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </elementImport>
+ <elementImport xmi:id="_G0XMwByMEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </elementImport>
+ <elementImport xmi:id="_G0a3IByMEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Dependency"/>
+ </elementImport>
+ <elementImport xmi:id="_jBetUByNEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Generalization"/>
+ </elementImport>
+ <elementImport xmi:id="_jB15sByNEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </elementImport>
+ <elementImport xmi:id="_jB_qsByNEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateBinding"/>
+ </elementImport>
+ <elementImport xmi:id="_jCCuAByNEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateParameter"/>
+ </elementImport>
+ <elementImport xmi:id="_jCGYYByNEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#EnumerationLiteral"/>
+ </elementImport>
+ <elementImport xmi:id="_jCJbsByNEdu0tMSz-ceC5A">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ </elementImport>
+ <elementImport xmi:id="_X7dJsDlPEd2mO4M0idYmag" alias="PackageImport">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PackageImport"/>
+ </elementImport>
+ <elementImport xmi:id="_OiGWgF5fEeKpvPHLdOdp2Q" alias="DataType">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataType"/>
+ </elementImport>
+ <packageImport xmi:id="_6G_4UP2HEeGbWP4cpLE0gg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_rIXZEByGEduN1bTiWJ0lyw" name="CppVisibilityKind">
+ <ownedLiteral xmi:id="_v6MwYByGEduN1bTiWJ0lyw" name="private"/>
+ <ownedLiteral xmi:id="_wz28QByGEduN1bTiWJ0lyw" name="protected"/>
+ <ownedLiteral xmi:id="_xKmBQByGEduN1bTiWJ0lyw" name="public"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_WgwmcByHEduN1bTiWJ0lyw" name="CppArray">
+ <ownedAttribute xmi:id="_Z3w-gByHEduN1bTiWJ0lyw" name="base_parameter" isUnique="false" association="_Z4QGsByHEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_a8S9oByHEduN1bTiWJ0lyw" name="definition" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_jd4uwByIEduN1bTiWJ0lyw" name="base_property" isUnique="false" association="_jeImYByIEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_guP0gByPEduuTv8efIb91A" name="base_association" isUnique="false" association="_gufsIByPEduuTv8efIb91A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Z4QGsByHEduN1bTiWJ0lyw" name="Extension_CppArray" memberEnd="_Z3w-gByHEduN1bTiWJ0lyw _Z4QGsRyHEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Z4QGsRyHEduN1bTiWJ0lyw" name="Extension_CppArray" type="_WgwmcByHEduN1bTiWJ0lyw" association="_Z4QGsByHEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_l2faUByHEduN1bTiWJ0lyw" name="CppConst">
+ <ownedAttribute xmi:id="_q3qOIByHEduN1bTiWJ0lyw" name="base_parameter" isUnique="false" association="_q3wUwByHEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_kJX7wByIEduN1bTiWJ0lyw" name="base_property" isUnique="false" association="_kJ5gMByIEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ThDh0ByMEdu0tMSz-ceC5A" name="base_operation" isUnique="false" association="_ThSyYByMEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_q3wUwByHEduN1bTiWJ0lyw" name="Extension_CppConst" memberEnd="_q3qOIByHEduN1bTiWJ0lyw _q3wUwRyHEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_q3wUwRyHEduN1bTiWJ0lyw" name="Extension_CppConst" type="_l2faUByHEduN1bTiWJ0lyw" association="_q3wUwByHEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_ra3o4ByHEduN1bTiWJ0lyw" name="CppDefault">
+ <ownedAttribute xmi:id="_t6fF8ByHEduN1bTiWJ0lyw" name="value" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xl4ZoByHEduN1bTiWJ0lyw" name="base_parameter" isUnique="false" association="_xmL7oByHEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_k_BKUByIEduN1bTiWJ0lyw" name="base_property" isUnique="false" association="_k_LiYByIEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_xmL7oByHEduN1bTiWJ0lyw" name="Extension_CppDefault" memberEnd="_xl4ZoByHEduN1bTiWJ0lyw _xmL7oRyHEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_xmL7oRyHEduN1bTiWJ0lyw" name="Extension_CppDefault" type="_ra3o4ByHEduN1bTiWJ0lyw" association="_xmL7oByHEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_19ZzgByHEduN1bTiWJ0lyw" name="CppPtr">
+ <ownedAttribute xmi:id="_VbvCoByIEduN1bTiWJ0lyw" name="base_parameter" isUnique="false" association="_Vb-6QByIEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_lylVQByIEduN1bTiWJ0lyw" name="base_property" isUnique="false" association="_lzRRwByIEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_5xNQUNY8EeGH9LIP6-_nLw" name="declaration" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9QCHoNY8EeGH9LIP6-_nLw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9QFK8NY8EeGH9LIP6-_nLw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_2VwCEByHEduN1bTiWJ0lyw" name="CppRef">
+ <ownedAttribute xmi:id="_V-XOkByIEduN1bTiWJ0lyw" name="base_parameter" isUnique="false" association="_V-ysYByIEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_mbfIUByIEduN1bTiWJ0lyw" name="base_property" isUnique="false" association="_mb27wByIEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Vb-6QByIEduN1bTiWJ0lyw" name="Extension_CppPtr" memberEnd="_VbvCoByIEduN1bTiWJ0lyw _Vb-6QRyIEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Vb-6QRyIEduN1bTiWJ0lyw" name="Extension_CppPtr" type="_19ZzgByHEduN1bTiWJ0lyw" association="_Vb-6QByIEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_V-ysYByIEduN1bTiWJ0lyw" name="Extension_CppRef" memberEnd="_V-XOkByIEduN1bTiWJ0lyw _V-ysYRyIEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_V-ysYRyIEduN1bTiWJ0lyw" name="Extension_CppRef" type="_2VwCEByHEduN1bTiWJ0lyw" association="_V-ysYByIEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_jeImYByIEduN1bTiWJ0lyw" name="Extension_CppArray" memberEnd="_jd4uwByIEduN1bTiWJ0lyw _jeImYRyIEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_jeImYRyIEduN1bTiWJ0lyw" name="Extension_CppArray" type="_WgwmcByHEduN1bTiWJ0lyw" association="_jeImYByIEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_kJ5gMByIEduN1bTiWJ0lyw" name="Extension_CppConst" memberEnd="_kJX7wByIEduN1bTiWJ0lyw _kJ5gMRyIEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_kJ5gMRyIEduN1bTiWJ0lyw" name="Extension_CppConst" type="_l2faUByHEduN1bTiWJ0lyw" association="_kJ5gMByIEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_k_LiYByIEduN1bTiWJ0lyw" name="Extension_CppDefault" memberEnd="_k_BKUByIEduN1bTiWJ0lyw _k_LiYRyIEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_k_LiYRyIEduN1bTiWJ0lyw" name="Extension_CppDefault" type="_ra3o4ByHEduN1bTiWJ0lyw" association="_k_LiYByIEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_lzRRwByIEduN1bTiWJ0lyw" name="Extension_CppPtr" memberEnd="_lylVQByIEduN1bTiWJ0lyw _lzRRwRyIEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_lzRRwRyIEduN1bTiWJ0lyw" name="Extension_CppPtr" type="_19ZzgByHEduN1bTiWJ0lyw" association="_lzRRwByIEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_mb27wByIEduN1bTiWJ0lyw" name="Extension_CppRef" memberEnd="_mbfIUByIEduN1bTiWJ0lyw _mb27wRyIEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_mb27wRyIEduN1bTiWJ0lyw" name="Extension_CppRef" type="_2VwCEByHEduN1bTiWJ0lyw" association="_mb27wByIEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_MyI6IByJEduN1bTiWJ0lyw" name="CppExternClass">
+ <ownedAttribute xmi:id="_UiU48ByJEduN1bTiWJ0lyw" name="name" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_05Yf0ByJEduN1bTiWJ0lyw" name="base_class" isUnique="false" association="_05nJUByJEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_PmXVQByJEduN1bTiWJ0lyw" name="CppExternLibrary">
+ <ownedAttribute xmi:id="_WFVj0ByJEduN1bTiWJ0lyw" name="name" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zqayUByJEduN1bTiWJ0lyw" name="base_package" isUnique="false" association="_zqqC4ByJEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_RwTdQByJEduN1bTiWJ0lyw" name="CppInclude">
+ <ownedAttribute xmi:id="_XU2q8ByJEduN1bTiWJ0lyw" name="body" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XhvLMBybEdudA-H9lQdiWg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XiD7UBybEdudA-H9lQdiWg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_RyRCMBBXEdyoOLr5UzE5gA" value=""/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_YtvwgByJEduN1bTiWJ0lyw" name="header" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dbl6gBybEdudA-H9lQdiWg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dbnIoBybEdudA-H9lQdiWg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_RT5rMBBXEdyoOLr5UzE5gA" value=""/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_0IP90ByJEduN1bTiWJ0lyw" name="base_package" isUnique="false" association="_0It34ByJEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_0ja24ByJEduN1bTiWJ0lyw" name="base_class" isUnique="false" association="_0jpgYByJEduN1bTiWJ0lyw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_kKB_YTlPEd2mO4M0idYmag" name="base_PackageImport" association="_kJ7RsDlPEd2mO4M0idYmag">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PackageImport"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_r9C7EP2HEeGbWP4cpLE0gg" name="preBody" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_siaR8P2HEeGbWP4cpLE0gg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sia5AP2HEeGbWP4cpLE0gg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sicuMP2HEeGbWP4cpLE0gg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_zqqC4ByJEduN1bTiWJ0lyw" name="Extension_CppExternLibrary" memberEnd="_zqayUByJEduN1bTiWJ0lyw _zqqC4RyJEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_zqqC4RyJEduN1bTiWJ0lyw" name="Extension_CppExternLibrary" type="_PmXVQByJEduN1bTiWJ0lyw" association="_zqqC4ByJEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_0It34ByJEduN1bTiWJ0lyw" name="Extension_CppInclude" memberEnd="_0IP90ByJEduN1bTiWJ0lyw _0It34RyJEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_0It34RyJEduN1bTiWJ0lyw" name="Extension_CppInclude" type="_RwTdQByJEduN1bTiWJ0lyw" association="_0It34ByJEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_0jpgYByJEduN1bTiWJ0lyw" name="Extension_CppInclude" memberEnd="_0ja24ByJEduN1bTiWJ0lyw _0jpgYRyJEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_0jpgYRyJEduN1bTiWJ0lyw" name="Extension_CppInclude" type="_RwTdQByJEduN1bTiWJ0lyw" association="_0jpgYByJEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_05nJUByJEduN1bTiWJ0lyw" name="Extension_CppExternClass" memberEnd="_05Yf0ByJEduN1bTiWJ0lyw _05nwYByJEduN1bTiWJ0lyw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_05nwYByJEduN1bTiWJ0lyw" name="Extension_CppExternClass" type="_MyI6IByJEduN1bTiWJ0lyw" association="_05nJUByJEduN1bTiWJ0lyw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_u3zF8ByLEdu0tMSz-ceC5A" name="CppRoot">
+ <ownedAttribute xmi:id="_xOLHcByLEdu0tMSz-ceC5A" name="base_package" isUnique="false" association="_xObmIByLEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_xObmIByLEdu0tMSz-ceC5A" name="Extension_CppRoot" memberEnd="_xOLHcByLEdu0tMSz-ceC5A _xOcNMByLEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_xOcNMByLEdu0tMSz-ceC5A" name="Extension_CppRoot" type="_u3zF8ByLEdu0tMSz-ceC5A" association="_xObmIByLEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_IHjS8ByMEdu0tMSz-ceC5A" name="CppNoCodeGen">
+ <ownedAttribute xmi:id="_KiFbsByMEdu0tMSz-ceC5A" name="base_element" isUnique="false" association="_KiZkwByMEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_KiZkwByMEdu0tMSz-ceC5A" name="Extension_CppNoCodeGen" memberEnd="_KiFbsByMEdu0tMSz-ceC5A _KiZkwRyMEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_KiZkwRyMEdu0tMSz-ceC5A" name="Extension_CppNoCodeGen" type="_IHjS8ByMEdu0tMSz-ceC5A" association="_KiZkwByMEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_ThSyYByMEdu0tMSz-ceC5A" name="Extension_CppConst" memberEnd="_ThDh0ByMEdu0tMSz-ceC5A _ThSyYRyMEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ThSyYRyMEdu0tMSz-ceC5A" name="Extension_CppConst" type="_l2faUByHEduN1bTiWJ0lyw" association="_ThSyYByMEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Vk8FIByMEdu0tMSz-ceC5A" name="CppConstInit">
+ <ownedAttribute xmi:id="_XYIhEByMEdu0tMSz-ceC5A" name="initialisation" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_dtKJcByMEdu0tMSz-ceC5A" name="base_operation" isUnique="false" association="_dtaoIByMEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_dtaoIByMEdu0tMSz-ceC5A" name="Extension_CppConstInit" memberEnd="_dtKJcByMEdu0tMSz-ceC5A _dtaoIRyMEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_dtaoIRyMEdu0tMSz-ceC5A" name="Extension_CppConstInit" type="_Vk8FIByMEdu0tMSz-ceC5A" association="_dtaoIByMEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_e6bN0ByMEdu0tMSz-ceC5A" name="CppFriend">
+ <ownedAttribute xmi:id="_gvjjcByMEdu0tMSz-ceC5A" name="base_dependency" isUnique="false" association="_gvyM8ByMEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Dependency"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_hPAfkByMEdu0tMSz-ceC5A" name="base_operation" isUnique="false" association="_hPPwIByMEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_gvyM8ByMEdu0tMSz-ceC5A" name="Extension_CppFriend" memberEnd="_gvjjcByMEdu0tMSz-ceC5A _gvyM8RyMEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_gvyM8RyMEdu0tMSz-ceC5A" name="Extension_CppFriend" type="_e6bN0ByMEdu0tMSz-ceC5A" association="_gvyM8ByMEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_hPPwIByMEdu0tMSz-ceC5A" name="Extension_CppFriend" memberEnd="_hPAfkByMEdu0tMSz-ceC5A _hPPwIRyMEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_hPPwIRyMEdu0tMSz-ceC5A" name="Extension_CppFriend" type="_e6bN0ByMEdu0tMSz-ceC5A" association="_hPPwIByMEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_lfbL4ByMEdu0tMSz-ceC5A" name="CppInline">
+ <ownedAttribute xmi:id="_n0_8IByMEdu0tMSz-ceC5A" name="base_operation" isUnique="false" association="_n1PMsByMEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_n1PMsByMEdu0tMSz-ceC5A" name="Extension_CppInline" memberEnd="_n0_8IByMEdu0tMSz-ceC5A _n1PMsRyMEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_n1PMsRyMEdu0tMSz-ceC5A" name="Extension_CppInline" type="_lfbL4ByMEdu0tMSz-ceC5A" association="_n1PMsByMEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_FA2LQByNEdu0tMSz-ceC5A" name="CppVirtual">
+ <ownedAttribute xmi:id="_K5A4gByNEdu0tMSz-ceC5A" name="base_operation" isUnique="false" association="_K5gnwByNEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_K5gnwByNEdu0tMSz-ceC5A" name="Extension_CppVirtual" memberEnd="_K5A4gByNEdu0tMSz-ceC5A _K5gnwRyNEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_K5gnwRyNEdu0tMSz-ceC5A" name="Extension_CppVirtual" type="_FA2LQByNEdu0tMSz-ceC5A" association="_K5gnwByNEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_5yQWcByNEdu0tMSz-ceC5A" name="CppType">
+ <ownedAttribute xmi:id="_7C5e8ByNEdu0tMSz-ceC5A" name="definition" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_DgXagByOEdu0tMSz-ceC5A" name="base_primitivetype" isUnique="false" association="_DqJooByOEdu0tMSz-ceC5A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_DqJooByOEdu0tMSz-ceC5A" name="Extension_CppType" memberEnd="_DgXagByOEdu0tMSz-ceC5A _DqJooRyOEdu0tMSz-ceC5A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_DqJooRyOEdu0tMSz-ceC5A" name="Extension_CppType" type="_5yQWcByNEdu0tMSz-ceC5A" association="_DqJooByOEdu0tMSz-ceC5A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_ALgiEByPEduuTv8efIb91A" name="CppVisibility">
+ <ownedAttribute xmi:id="_HbLNwByPEduuTv8efIb91A" name="value" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_NQc_EByPEduuTv8efIb91A" name="base_generalization" isUnique="false" association="_NQs2sByPEduuTv8efIb91A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Generalization"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_NQs2sByPEduuTv8efIb91A" name="Extension_CppVisibility" memberEnd="_NQc_EByPEduuTv8efIb91A _NQs2sRyPEduuTv8efIb91A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_NQs2sRyPEduuTv8efIb91A" name="Extension_CppVisibility" type="_ALgiEByPEduuTv8efIb91A" association="_NQs2sByPEduuTv8efIb91A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_S_sZ0ByPEduuTv8efIb91A" name="CppInit">
+ <ownedAttribute xmi:id="_VcWCcByPEduuTv8efIb91A" name="value" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_aoPfkByPEduuTv8efIb91A" name="base_enumerationliteral" isUnique="false" association="_aoVmMByPEduuTv8efIb91A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#EnumerationLiteral"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_aoVmMByPEduuTv8efIb91A" name="Extension_CppInit" memberEnd="_aoPfkByPEduuTv8efIb91A _aoVmMRyPEduuTv8efIb91A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_aoVmMRyPEduuTv8efIb91A" name="Extension_CppInit" type="_S_sZ0ByPEduuTv8efIb91A" association="_aoVmMByPEduuTv8efIb91A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_gufsIByPEduuTv8efIb91A" name="Extension_CppArray" memberEnd="_guP0gByPEduuTv8efIb91A _gufsIRyPEduuTv8efIb91A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_gufsIRyPEduuTv8efIb91A" name="Extension_CppArray" type="_WgwmcByHEduN1bTiWJ0lyw" association="_gufsIByPEduuTv8efIb91A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_5W6MUByPEduuTv8efIb91A" name="CppTemplate">
+ <ownedAttribute xmi:id="_7e8P0ByPEduuTv8efIb91A" name="declaration" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Op3MkByQEduuTv8efIb91A" name="base_class" isUnique="false" association="_OqF2EByQEduuTv8efIb91A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_9oCDQByPEduuTv8efIb91A" name="CppTemplateBinding">
+ <ownedAttribute xmi:id="_AOo5IByQEduuTv8efIb91A" name="binding" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_O8vFQByQEduuTv8efIb91A" name="base_templatebinding" isUnique="false" association="_O9D1YByQEduuTv8efIb91A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateBinding"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_CYoEcByQEduuTv8efIb91A" name="CppTemplateParameter">
+ <ownedAttribute xmi:id="_EV0J4ByQEduuTv8efIb91A" name="name" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_OXfqMByQEduuTv8efIb91A" name="base_templateparameter" isUnique="false" association="_OYBOoByQEduuTv8efIb91A">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateParameter"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_OYBOoByQEduuTv8efIb91A" name="Extension_CppTemplateParameter" memberEnd="_OXfqMByQEduuTv8efIb91A _OYBOoRyQEduuTv8efIb91A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_OYBOoRyQEduuTv8efIb91A" name="Extension_CppTemplateParameter" type="_CYoEcByQEduuTv8efIb91A" association="_OYBOoByQEduuTv8efIb91A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_OqF2EByQEduuTv8efIb91A" name="Extension_CppTemplate" memberEnd="_Op3MkByQEduuTv8efIb91A _OqF2ERyQEduuTv8efIb91A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_OqF2ERyQEduuTv8efIb91A" name="Extension_CppTemplate" type="_5W6MUByPEduuTv8efIb91A" association="_OqF2EByQEduuTv8efIb91A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_O9D1YByQEduuTv8efIb91A" name="Extension_CppTemplateBinding" memberEnd="_O8vFQByQEduuTv8efIb91A _O9D1YRyQEduuTv8efIb91A">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_O9D1YRyQEduuTv8efIb91A" name="Extension_CppTemplateBinding" type="_9oCDQByPEduuTv8efIb91A" association="_O9D1YByQEduuTv8efIb91A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_kJ7RsDlPEd2mO4M0idYmag" name="PackageImport_CppInclude" memberEnd="_kKB_YDlPEd2mO4M0idYmag _kKB_YTlPEd2mO4M0idYmag">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_kKB_YDlPEd2mO4M0idYmag" name="extension_CppInclude" type="_RwTdQByJEduN1bTiWJ0lyw" aggregation="composite" association="_kJ7RsDlPEd2mO4M0idYmag"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_A3_lgCYNEeKe9vxHwEdBmA" name="ManualGeneration">
+ <ownedAttribute xmi:id="_vOBBoCYNEeKe9vxHwEdBmA" name="extensionBody" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5zd9YCYNEeKe9vxHwEdBmA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5zgZoCYNEeKe9vxHwEdBmA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_5zkrECYNEeKe9vxHwEdBmA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_KEpF0CYOEeKe9vxHwEdBmA" name="base_Class" association="_KEps4CYOEeKe9vxHwEdBmA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_KEps4CYOEeKe9vxHwEdBmA" name="E_ManualGeneration_Class1" memberEnd="_KEps4SYOEeKe9vxHwEdBmA _KEpF0CYOEeKe9vxHwEdBmA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_KEps4SYOEeKe9vxHwEdBmA" name="extension_ManualGeneration" type="_A3_lgCYNEeKe9vxHwEdBmA" aggregation="composite" association="_KEps4CYOEeKe9vxHwEdBmA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_QCUzIF5fEeKpvPHLdOdp2Q" name="Union">
+ <ownedAttribute xmi:id="_R-F8QF5fEeKpvPHLdOdp2Q" name="base_DataType" association="_R-F8QV5fEeKpvPHLdOdp2Q">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataType"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_R-F8QV5fEeKpvPHLdOdp2Q" name="E_Union_DataType1" memberEnd="_R-F8Ql5fEeKpvPHLdOdp2Q _R-F8QF5fEeKpvPHLdOdp2Q">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_R-F8Ql5fEeKpvPHLdOdp2Q" name="extension_Union" type="_QCUzIF5fEeKpvPHLdOdp2Q" aggregation="composite" association="_R-F8QV5fEeKpvPHLdOdp2Q"/>
+ </packagedElement>
+ <profileApplication xmi:id="_QS19UMogEeGKstsYRuxdvw">
+ <eAnnotations xmi:id="_QUmQ0MogEeGKstsYRuxdvw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Profile>
+ <Ecore:EPackage xmi:id="_RRUXwMogEeGKstsYRuxdvw" base_Package="_j9REUByGEduN1bTiWJ0lyw" packageName="Cpp" nsPrefix="Cpp" nsURI="http://papyrus/CppProfile/1" prefix="Cpp"/>
+</xmi:XMI>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppArray.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppArray.java
new file mode 100644
index 00000000000..b36bfb92d22
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppArray.java
@@ -0,0 +1,135 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Array</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppArray#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.CppArray#getDefinition <em>Definition</em>}</li>
+ * <li>{@link Cpp.CppArray#getBase_property <em>Base property</em>}</li>
+ * <li>{@link Cpp.CppArray#getBase_association <em>Base association</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppArray()
+ * @model
+ * @generated
+ */
+public interface CppArray extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base parameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base parameter</em>' reference.
+ * @see #setBase_parameter(Parameter)
+ * @see Cpp.CppPackage#getCppArray_Base_parameter()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Parameter getBase_parameter();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppArray#getBase_parameter <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base parameter</em>' reference.
+ * @see #getBase_parameter()
+ * @generated
+ */
+ void setBase_parameter(Parameter value);
+
+ /**
+ * Returns the value of the '<em><b>Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Definition</em>' attribute.
+ * @see #setDefinition(String)
+ * @see Cpp.CppPackage#getCppArray_Definition()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDefinition();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppArray#getDefinition <em>Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Definition</em>' attribute.
+ * @see #getDefinition()
+ * @generated
+ */
+ void setDefinition(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base property</em>' reference.
+ * @see #setBase_property(Property)
+ * @see Cpp.CppPackage#getCppArray_Base_property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_property();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppArray#getBase_property <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base property</em>' reference.
+ * @see #getBase_property()
+ * @generated
+ */
+ void setBase_property(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Base association</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base association</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base association</em>' reference.
+ * @see #setBase_association(Association)
+ * @see Cpp.CppPackage#getCppArray_Base_association()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Association getBase_association();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppArray#getBase_association <em>Base association</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base association</em>' reference.
+ * @see #getBase_association()
+ * @generated
+ */
+ void setBase_association(Association value);
+
+} // CppArray
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppConst.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppConst.java
new file mode 100644
index 00000000000..db059e52f12
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppConst.java
@@ -0,0 +1,108 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Const</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppConst#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.CppConst#getBase_property <em>Base property</em>}</li>
+ * <li>{@link Cpp.CppConst#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppConst()
+ * @model
+ * @generated
+ */
+public interface CppConst extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base parameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base parameter</em>' reference.
+ * @see #setBase_parameter(Parameter)
+ * @see Cpp.CppPackage#getCppConst_Base_parameter()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Parameter getBase_parameter();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppConst#getBase_parameter <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base parameter</em>' reference.
+ * @see #getBase_parameter()
+ * @generated
+ */
+ void setBase_parameter(Parameter value);
+
+ /**
+ * Returns the value of the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base property</em>' reference.
+ * @see #setBase_property(Property)
+ * @see Cpp.CppPackage#getCppConst_Base_property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_property();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppConst#getBase_property <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base property</em>' reference.
+ * @see #getBase_property()
+ * @generated
+ */
+ void setBase_property(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base operation</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base operation</em>' reference.
+ * @see #setBase_operation(Operation)
+ * @see Cpp.CppPackage#getCppConst_Base_operation()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Operation getBase_operation();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppConst#getBase_operation <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base operation</em>' reference.
+ * @see #getBase_operation()
+ * @generated
+ */
+ void setBase_operation(Operation value);
+
+} // CppConst
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppConstInit.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppConstInit.java
new file mode 100644
index 00000000000..d21f12165d9
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppConstInit.java
@@ -0,0 +1,79 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Const Init</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppConstInit#getInitialisation <em>Initialisation</em>}</li>
+ * <li>{@link Cpp.CppConstInit#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppConstInit()
+ * @model
+ * @generated
+ */
+public interface CppConstInit extends EObject {
+ /**
+ * Returns the value of the '<em><b>Initialisation</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Initialisation</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Initialisation</em>' attribute.
+ * @see #setInitialisation(String)
+ * @see Cpp.CppPackage#getCppConstInit_Initialisation()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getInitialisation();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppConstInit#getInitialisation <em>Initialisation</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Initialisation</em>' attribute.
+ * @see #getInitialisation()
+ * @generated
+ */
+ void setInitialisation(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base operation</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base operation</em>' reference.
+ * @see #setBase_operation(Operation)
+ * @see Cpp.CppPackage#getCppConstInit_Base_operation()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Operation getBase_operation();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppConstInit#getBase_operation <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base operation</em>' reference.
+ * @see #getBase_operation()
+ * @generated
+ */
+ void setBase_operation(Operation value);
+
+} // CppConstInit
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppDefault.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppDefault.java
new file mode 100644
index 00000000000..10114bf212e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppDefault.java
@@ -0,0 +1,107 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Default</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppDefault#getValue <em>Value</em>}</li>
+ * <li>{@link Cpp.CppDefault#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.CppDefault#getBase_property <em>Base property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppDefault()
+ * @model
+ * @generated
+ */
+public interface CppDefault extends EObject {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see Cpp.CppPackage#getCppDefault_Value()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppDefault#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base parameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base parameter</em>' reference.
+ * @see #setBase_parameter(Parameter)
+ * @see Cpp.CppPackage#getCppDefault_Base_parameter()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Parameter getBase_parameter();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppDefault#getBase_parameter <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base parameter</em>' reference.
+ * @see #getBase_parameter()
+ * @generated
+ */
+ void setBase_parameter(Parameter value);
+
+ /**
+ * Returns the value of the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base property</em>' reference.
+ * @see #setBase_property(Property)
+ * @see Cpp.CppPackage#getCppDefault_Base_property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_property();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppDefault#getBase_property <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base property</em>' reference.
+ * @see #getBase_property()
+ * @generated
+ */
+ void setBase_property(Property value);
+
+} // CppDefault
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppExternClass.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppExternClass.java
new file mode 100644
index 00000000000..148c06ca5c9
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppExternClass.java
@@ -0,0 +1,77 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Extern Class</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppExternClass#getName <em>Name</em>}</li>
+ * <li>{@link Cpp.CppExternClass#getBase_class <em>Base class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppExternClass()
+ * @model
+ * @generated
+ */
+public interface CppExternClass extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see Cpp.CppPackage#getCppExternClass_Name()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppExternClass#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base class</em>' reference.
+ * @see #setBase_class(org.eclipse.uml2.uml.Class)
+ * @see Cpp.CppPackage#getCppExternClass_Base_class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_class();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppExternClass#getBase_class <em>Base class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base class</em>' reference.
+ * @see #getBase_class()
+ * @generated
+ */
+ void setBase_class(org.eclipse.uml2.uml.Class value);
+
+} // CppExternClass
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppExternLibrary.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppExternLibrary.java
new file mode 100644
index 00000000000..b998d1e9464
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppExternLibrary.java
@@ -0,0 +1,77 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Extern Library</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppExternLibrary#getName <em>Name</em>}</li>
+ * <li>{@link Cpp.CppExternLibrary#getBase_package <em>Base package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppExternLibrary()
+ * @model
+ * @generated
+ */
+public interface CppExternLibrary extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see Cpp.CppPackage#getCppExternLibrary_Name()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppExternLibrary#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base package</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base package</em>' reference.
+ * @see #setBase_package(org.eclipse.uml2.uml.Package)
+ * @see Cpp.CppPackage#getCppExternLibrary_Base_package()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Package getBase_package();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppExternLibrary#getBase_package <em>Base package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base package</em>' reference.
+ * @see #getBase_package()
+ * @generated
+ */
+ void setBase_package(org.eclipse.uml2.uml.Package value);
+
+} // CppExternLibrary
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppFactory.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppFactory.java
new file mode 100644
index 00000000000..daac95d75ae
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppFactory.java
@@ -0,0 +1,232 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see Cpp.CppPackage
+ * @generated
+ */
+public interface CppFactory extends EFactory {
+
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ CppFactory eINSTANCE = Cpp.impl.CppFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Array</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Array</em>'.
+ * @generated
+ */
+ CppArray createCppArray();
+
+ /**
+ * Returns a new object of class '<em>Const</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Const</em>'.
+ * @generated
+ */
+ CppConst createCppConst();
+
+ /**
+ * Returns a new object of class '<em>Default</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Default</em>'.
+ * @generated
+ */
+ CppDefault createCppDefault();
+
+ /**
+ * Returns a new object of class '<em>Ptr</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Ptr</em>'.
+ * @generated
+ */
+ CppPtr createCppPtr();
+
+ /**
+ * Returns a new object of class '<em>Ref</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Ref</em>'.
+ * @generated
+ */
+ CppRef createCppRef();
+
+ /**
+ * Returns a new object of class '<em>Extern Class</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Extern Class</em>'.
+ * @generated
+ */
+ CppExternClass createCppExternClass();
+
+ /**
+ * Returns a new object of class '<em>Extern Library</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Extern Library</em>'.
+ * @generated
+ */
+ CppExternLibrary createCppExternLibrary();
+
+ /**
+ * Returns a new object of class '<em>Include</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Include</em>'.
+ * @generated
+ */
+ CppInclude createCppInclude();
+
+ /**
+ * Returns a new object of class '<em>Manual Generation</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Manual Generation</em>'.
+ * @generated
+ */
+ ManualGeneration createManualGeneration();
+
+ /**
+ * Returns a new object of class '<em>Root</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Root</em>'.
+ * @generated
+ */
+ CppRoot createCppRoot();
+
+ /**
+ * Returns a new object of class '<em>No Code Gen</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>No Code Gen</em>'.
+ * @generated
+ */
+ CppNoCodeGen createCppNoCodeGen();
+
+ /**
+ * Returns a new object of class '<em>Const Init</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Const Init</em>'.
+ * @generated
+ */
+ CppConstInit createCppConstInit();
+
+ /**
+ * Returns a new object of class '<em>Friend</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Friend</em>'.
+ * @generated
+ */
+ CppFriend createCppFriend();
+
+ /**
+ * Returns a new object of class '<em>Inline</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Inline</em>'.
+ * @generated
+ */
+ CppInline createCppInline();
+
+ /**
+ * Returns a new object of class '<em>Virtual</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Virtual</em>'.
+ * @generated
+ */
+ CppVirtual createCppVirtual();
+
+ /**
+ * Returns a new object of class '<em>Type</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Type</em>'.
+ * @generated
+ */
+ CppType createCppType();
+
+ /**
+ * Returns a new object of class '<em>Visibility</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Visibility</em>'.
+ * @generated
+ */
+ CppVisibility createCppVisibility();
+
+ /**
+ * Returns a new object of class '<em>Init</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Init</em>'.
+ * @generated
+ */
+ CppInit createCppInit();
+
+ /**
+ * Returns a new object of class '<em>Template</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Template</em>'.
+ * @generated
+ */
+ CppTemplate createCppTemplate();
+
+ /**
+ * Returns a new object of class '<em>Template Binding</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Template Binding</em>'.
+ * @generated
+ */
+ CppTemplateBinding createCppTemplateBinding();
+
+ /**
+ * Returns a new object of class '<em>Template Parameter</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Template Parameter</em>'.
+ * @generated
+ */
+ CppTemplateParameter createCppTemplateParameter();
+
+ /**
+ * Returns a new object of class '<em>Union</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Union</em>'.
+ * @generated
+ */
+ Union createUnion();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ CppPackage getCppPackage();
+
+} //CppFactory
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppFriend.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppFriend.java
new file mode 100644
index 00000000000..149c1093f6f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppFriend.java
@@ -0,0 +1,80 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Friend</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppFriend#getBase_dependency <em>Base dependency</em>}</li>
+ * <li>{@link Cpp.CppFriend#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppFriend()
+ * @model
+ * @generated
+ */
+public interface CppFriend extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base dependency</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base dependency</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base dependency</em>' reference.
+ * @see #setBase_dependency(Dependency)
+ * @see Cpp.CppPackage#getCppFriend_Base_dependency()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Dependency getBase_dependency();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppFriend#getBase_dependency <em>Base dependency</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base dependency</em>' reference.
+ * @see #getBase_dependency()
+ * @generated
+ */
+ void setBase_dependency(Dependency value);
+
+ /**
+ * Returns the value of the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base operation</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base operation</em>' reference.
+ * @see #setBase_operation(Operation)
+ * @see Cpp.CppPackage#getCppFriend_Base_operation()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Operation getBase_operation();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppFriend#getBase_operation <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base operation</em>' reference.
+ * @see #getBase_operation()
+ * @generated
+ */
+ void setBase_operation(Operation value);
+
+} // CppFriend
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInclude.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInclude.java
new file mode 100644
index 00000000000..69e31eef16f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInclude.java
@@ -0,0 +1,193 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.PackageImport;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Include</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * "preBody" is added to a C++ body file before automatic include statements, "body" after
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppInclude#getBody <em>Body</em>}</li>
+ * <li>{@link Cpp.CppInclude#getHeader <em>Header</em>}</li>
+ * <li>{@link Cpp.CppInclude#getBase_package <em>Base package</em>}</li>
+ * <li>{@link Cpp.CppInclude#getBase_class <em>Base class</em>}</li>
+ * <li>{@link Cpp.CppInclude#getBase_PackageImport <em>Base Package Import</em>}</li>
+ * <li>{@link Cpp.CppInclude#getPreBody <em>Pre Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppInclude()
+ * @model
+ * @generated
+ */
+public interface CppInclude extends EObject {
+ /**
+ * Returns the value of the '<em><b>Body</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Body</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Body</em>' attribute.
+ * @see #setBody(String)
+ * @see Cpp.CppPackage#getCppInclude_Body()
+ * @model default="" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getBody();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInclude#getBody <em>Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Body</em>' attribute.
+ * @see #getBody()
+ * @generated
+ */
+ void setBody(String value);
+
+ /**
+ * Returns the value of the '<em><b>Header</b></em>' attribute.
+ * The default value is <code>""</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Header</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Header</em>' attribute.
+ * @see #setHeader(String)
+ * @see Cpp.CppPackage#getCppInclude_Header()
+ * @model default="" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getHeader();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInclude#getHeader <em>Header</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Header</em>' attribute.
+ * @see #getHeader()
+ * @generated
+ */
+ void setHeader(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base package</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base package</em>' reference.
+ * @see #setBase_package(org.eclipse.uml2.uml.Package)
+ * @see Cpp.CppPackage#getCppInclude_Base_package()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Package getBase_package();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInclude#getBase_package <em>Base package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base package</em>' reference.
+ * @see #getBase_package()
+ * @generated
+ */
+ void setBase_package(org.eclipse.uml2.uml.Package value);
+
+ /**
+ * Returns the value of the '<em><b>Base class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base class</em>' reference.
+ * @see #setBase_class(org.eclipse.uml2.uml.Class)
+ * @see Cpp.CppPackage#getCppInclude_Base_class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_class();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInclude#getBase_class <em>Base class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base class</em>' reference.
+ * @see #getBase_class()
+ * @generated
+ */
+ void setBase_class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * Returns the value of the '<em><b>Base Package Import</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Package Import</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Package Import</em>' reference.
+ * @see #setBase_PackageImport(PackageImport)
+ * @see Cpp.CppPackage#getCppInclude_Base_PackageImport()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ PackageImport getBase_PackageImport();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInclude#getBase_PackageImport <em>Base Package Import</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Package Import</em>' reference.
+ * @see #getBase_PackageImport()
+ * @generated
+ */
+ void setBase_PackageImport(PackageImport value);
+
+ /**
+ * Returns the value of the '<em><b>Pre Body</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Pre Body</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Pre Body</em>' attribute.
+ * @see #setPreBody(String)
+ * @see Cpp.CppPackage#getCppInclude_PreBody()
+ * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getPreBody();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInclude#getPreBody <em>Pre Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Pre Body</em>' attribute.
+ * @see #getPreBody()
+ * @generated
+ */
+ void setPreBody(String value);
+
+} // CppInclude
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInit.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInit.java
new file mode 100644
index 00000000000..104dff7e108
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInit.java
@@ -0,0 +1,79 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.EnumerationLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Init</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppInit#getValue <em>Value</em>}</li>
+ * <li>{@link Cpp.CppInit#getBase_enumerationliteral <em>Base enumerationliteral</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppInit()
+ * @model
+ * @generated
+ */
+public interface CppInit extends EObject {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(int)
+ * @see Cpp.CppPackage#getCppInit_Value()
+ * @model unique="false" dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+ * @generated
+ */
+ int getValue();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInit#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(int value);
+
+ /**
+ * Returns the value of the '<em><b>Base enumerationliteral</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base enumerationliteral</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base enumerationliteral</em>' reference.
+ * @see #setBase_enumerationliteral(EnumerationLiteral)
+ * @see Cpp.CppPackage#getCppInit_Base_enumerationliteral()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ EnumerationLiteral getBase_enumerationliteral();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInit#getBase_enumerationliteral <em>Base enumerationliteral</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base enumerationliteral</em>' reference.
+ * @see #getBase_enumerationliteral()
+ * @generated
+ */
+ void setBase_enumerationliteral(EnumerationLiteral value);
+
+} // CppInit
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInline.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInline.java
new file mode 100644
index 00000000000..b8c83dbca79
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppInline.java
@@ -0,0 +1,52 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Inline</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppInline#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppInline()
+ * @model
+ * @generated
+ */
+public interface CppInline extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base operation</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base operation</em>' reference.
+ * @see #setBase_operation(Operation)
+ * @see Cpp.CppPackage#getCppInline_Base_operation()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Operation getBase_operation();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppInline#getBase_operation <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base operation</em>' reference.
+ * @see #getBase_operation()
+ * @generated
+ */
+ void setBase_operation(Operation value);
+
+} // CppInline
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppNoCodeGen.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppNoCodeGen.java
new file mode 100644
index 00000000000..71f072a5bc6
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppNoCodeGen.java
@@ -0,0 +1,52 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>No Code Gen</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppNoCodeGen#getBase_element <em>Base element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppNoCodeGen()
+ * @model
+ * @generated
+ */
+public interface CppNoCodeGen extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base element</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base element</em>' reference.
+ * @see #setBase_element(Element)
+ * @see Cpp.CppPackage#getCppNoCodeGen_Base_element()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Element getBase_element();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppNoCodeGen#getBase_element <em>Base element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base element</em>' reference.
+ * @see #getBase_element()
+ * @generated
+ */
+ void setBase_element(Element value);
+
+} // CppNoCodeGen
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppPackage.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppPackage.java
new file mode 100644
index 00000000000..42795841c39
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppPackage.java
@@ -0,0 +1,2316 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see Cpp.CppFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface CppPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "Cpp";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://papyrus/CppProfile/1";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "Cpp";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ CppPackage eINSTANCE = Cpp.impl.CppPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppArrayImpl <em>Array</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppArrayImpl
+ * @see Cpp.impl.CppPackageImpl#getCppArray()
+ * @generated
+ */
+ int CPP_ARRAY = 3;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppConstImpl <em>Const</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppConstImpl
+ * @see Cpp.impl.CppPackageImpl#getCppConst()
+ * @generated
+ */
+ int CPP_CONST = 4;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppDefaultImpl <em>Default</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppDefaultImpl
+ * @see Cpp.impl.CppPackageImpl#getCppDefault()
+ * @generated
+ */
+ int CPP_DEFAULT = 5;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppPtrImpl <em>Ptr</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppPtrImpl
+ * @see Cpp.impl.CppPackageImpl#getCppPtr()
+ * @generated
+ */
+ int CPP_PTR = 0;
+
+ /**
+ * The feature id for the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_PTR__BASE_PARAMETER = 0;
+
+ /**
+ * The feature id for the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_PTR__BASE_PROPERTY = 1;
+
+ /**
+ * The feature id for the '<em><b>Declaration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_PTR__DECLARATION = 2;
+
+ /**
+ * The number of structural features of the '<em>Ptr</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_PTR_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppRefImpl <em>Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppRefImpl
+ * @see Cpp.impl.CppPackageImpl#getCppRef()
+ * @generated
+ */
+ int CPP_REF = 6;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppExternClassImpl <em>Extern Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppExternClassImpl
+ * @see Cpp.impl.CppPackageImpl#getCppExternClass()
+ * @generated
+ */
+ int CPP_EXTERN_CLASS = 7;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppExternLibraryImpl <em>Extern Library</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppExternLibraryImpl
+ * @see Cpp.impl.CppPackageImpl#getCppExternLibrary()
+ * @generated
+ */
+ int CPP_EXTERN_LIBRARY = 8;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppIncludeImpl <em>Include</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppIncludeImpl
+ * @see Cpp.impl.CppPackageImpl#getCppInclude()
+ * @generated
+ */
+ int CPP_INCLUDE = 1;
+
+ /**
+ * The feature id for the '<em><b>Body</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INCLUDE__BODY = 0;
+
+ /**
+ * The feature id for the '<em><b>Header</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INCLUDE__HEADER = 1;
+
+ /**
+ * The feature id for the '<em><b>Base package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INCLUDE__BASE_PACKAGE = 2;
+
+ /**
+ * The feature id for the '<em><b>Base class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INCLUDE__BASE_CLASS = 3;
+
+ /**
+ * The feature id for the '<em><b>Base Package Import</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INCLUDE__BASE_PACKAGE_IMPORT = 4;
+
+ /**
+ * The feature id for the '<em><b>Pre Body</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INCLUDE__PRE_BODY = 5;
+
+ /**
+ * The number of structural features of the '<em>Include</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INCLUDE_FEATURE_COUNT = 6;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.ManualGenerationImpl <em>Manual Generation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.ManualGenerationImpl
+ * @see Cpp.impl.CppPackageImpl#getManualGeneration()
+ * @generated
+ */
+ int MANUAL_GENERATION = 2;
+
+ /**
+ * The feature id for the '<em><b>Extension Body</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MANUAL_GENERATION__EXTENSION_BODY = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MANUAL_GENERATION__BASE_CLASS = 1;
+
+ /**
+ * The number of structural features of the '<em>Manual Generation</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int MANUAL_GENERATION_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_ARRAY__BASE_PARAMETER = 0;
+
+ /**
+ * The feature id for the '<em><b>Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_ARRAY__DEFINITION = 1;
+
+ /**
+ * The feature id for the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_ARRAY__BASE_PROPERTY = 2;
+
+ /**
+ * The feature id for the '<em><b>Base association</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_ARRAY__BASE_ASSOCIATION = 3;
+
+ /**
+ * The number of structural features of the '<em>Array</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_ARRAY_FEATURE_COUNT = 4;
+
+ /**
+ * The feature id for the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_CONST__BASE_PARAMETER = 0;
+
+ /**
+ * The feature id for the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_CONST__BASE_PROPERTY = 1;
+
+ /**
+ * The feature id for the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_CONST__BASE_OPERATION = 2;
+
+ /**
+ * The number of structural features of the '<em>Const</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_CONST_FEATURE_COUNT = 3;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_DEFAULT__VALUE = 0;
+
+ /**
+ * The feature id for the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_DEFAULT__BASE_PARAMETER = 1;
+
+ /**
+ * The feature id for the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_DEFAULT__BASE_PROPERTY = 2;
+
+ /**
+ * The number of structural features of the '<em>Default</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_DEFAULT_FEATURE_COUNT = 3;
+
+ /**
+ * The feature id for the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_REF__BASE_PARAMETER = 0;
+
+ /**
+ * The feature id for the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_REF__BASE_PROPERTY = 1;
+
+ /**
+ * The number of structural features of the '<em>Ref</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_REF_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_EXTERN_CLASS__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Base class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_EXTERN_CLASS__BASE_CLASS = 1;
+
+ /**
+ * The number of structural features of the '<em>Extern Class</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_EXTERN_CLASS_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_EXTERN_LIBRARY__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Base package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_EXTERN_LIBRARY__BASE_PACKAGE = 1;
+
+ /**
+ * The number of structural features of the '<em>Extern Library</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_EXTERN_LIBRARY_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppRootImpl <em>Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppRootImpl
+ * @see Cpp.impl.CppPackageImpl#getCppRoot()
+ * @generated
+ */
+ int CPP_ROOT = 9;
+
+ /**
+ * The feature id for the '<em><b>Base package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_ROOT__BASE_PACKAGE = 0;
+
+ /**
+ * The number of structural features of the '<em>Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_ROOT_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppNoCodeGenImpl <em>No Code Gen</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppNoCodeGenImpl
+ * @see Cpp.impl.CppPackageImpl#getCppNoCodeGen()
+ * @generated
+ */
+ int CPP_NO_CODE_GEN = 10;
+
+ /**
+ * The feature id for the '<em><b>Base element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_NO_CODE_GEN__BASE_ELEMENT = 0;
+
+ /**
+ * The number of structural features of the '<em>No Code Gen</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_NO_CODE_GEN_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppConstInitImpl <em>Const Init</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppConstInitImpl
+ * @see Cpp.impl.CppPackageImpl#getCppConstInit()
+ * @generated
+ */
+ int CPP_CONST_INIT = 11;
+
+ /**
+ * The feature id for the '<em><b>Initialisation</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_CONST_INIT__INITIALISATION = 0;
+
+ /**
+ * The feature id for the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_CONST_INIT__BASE_OPERATION = 1;
+
+ /**
+ * The number of structural features of the '<em>Const Init</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_CONST_INIT_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppFriendImpl <em>Friend</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppFriendImpl
+ * @see Cpp.impl.CppPackageImpl#getCppFriend()
+ * @generated
+ */
+ int CPP_FRIEND = 12;
+
+ /**
+ * The feature id for the '<em><b>Base dependency</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_FRIEND__BASE_DEPENDENCY = 0;
+
+ /**
+ * The feature id for the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_FRIEND__BASE_OPERATION = 1;
+
+ /**
+ * The number of structural features of the '<em>Friend</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_FRIEND_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppInlineImpl <em>Inline</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppInlineImpl
+ * @see Cpp.impl.CppPackageImpl#getCppInline()
+ * @generated
+ */
+ int CPP_INLINE = 13;
+
+ /**
+ * The feature id for the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INLINE__BASE_OPERATION = 0;
+
+ /**
+ * The number of structural features of the '<em>Inline</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INLINE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppVirtualImpl <em>Virtual</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppVirtualImpl
+ * @see Cpp.impl.CppPackageImpl#getCppVirtual()
+ * @generated
+ */
+ int CPP_VIRTUAL = 14;
+
+ /**
+ * The feature id for the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_VIRTUAL__BASE_OPERATION = 0;
+
+ /**
+ * The number of structural features of the '<em>Virtual</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_VIRTUAL_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppTypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppTypeImpl
+ * @see Cpp.impl.CppPackageImpl#getCppType()
+ * @generated
+ */
+ int CPP_TYPE = 15;
+
+ /**
+ * The feature id for the '<em><b>Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TYPE__DEFINITION = 0;
+
+ /**
+ * The feature id for the '<em><b>Base primitivetype</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TYPE__BASE_PRIMITIVETYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TYPE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppVisibilityImpl <em>Visibility</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppVisibilityImpl
+ * @see Cpp.impl.CppPackageImpl#getCppVisibility()
+ * @generated
+ */
+ int CPP_VISIBILITY = 16;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_VISIBILITY__VALUE = 0;
+
+ /**
+ * The feature id for the '<em><b>Base generalization</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_VISIBILITY__BASE_GENERALIZATION = 1;
+
+ /**
+ * The number of structural features of the '<em>Visibility</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_VISIBILITY_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppInitImpl <em>Init</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppInitImpl
+ * @see Cpp.impl.CppPackageImpl#getCppInit()
+ * @generated
+ */
+ int CPP_INIT = 17;
+
+ /**
+ * The feature id for the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INIT__VALUE = 0;
+
+ /**
+ * The feature id for the '<em><b>Base enumerationliteral</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INIT__BASE_ENUMERATIONLITERAL = 1;
+
+ /**
+ * The number of structural features of the '<em>Init</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_INIT_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppTemplateImpl <em>Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppTemplateImpl
+ * @see Cpp.impl.CppPackageImpl#getCppTemplate()
+ * @generated
+ */
+ int CPP_TEMPLATE = 18;
+
+ /**
+ * The feature id for the '<em><b>Declaration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE__DECLARATION = 0;
+
+ /**
+ * The feature id for the '<em><b>Base class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE__BASE_CLASS = 1;
+
+ /**
+ * The number of structural features of the '<em>Template</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppTemplateBindingImpl <em>Template Binding</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppTemplateBindingImpl
+ * @see Cpp.impl.CppPackageImpl#getCppTemplateBinding()
+ * @generated
+ */
+ int CPP_TEMPLATE_BINDING = 19;
+
+ /**
+ * The feature id for the '<em><b>Binding</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE_BINDING__BINDING = 0;
+
+ /**
+ * The feature id for the '<em><b>Base templatebinding</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING = 1;
+
+ /**
+ * The number of structural features of the '<em>Template Binding</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE_BINDING_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.CppTemplateParameterImpl <em>Template Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppTemplateParameterImpl
+ * @see Cpp.impl.CppPackageImpl#getCppTemplateParameter()
+ * @generated
+ */
+ int CPP_TEMPLATE_PARAMETER = 20;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE_PARAMETER__NAME = 0;
+
+ /**
+ * The feature id for the '<em><b>Base templateparameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER = 1;
+
+ /**
+ * The number of structural features of the '<em>Template Parameter</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_TEMPLATE_PARAMETER_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link Cpp.impl.UnionImpl <em>Union</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.UnionImpl
+ * @see Cpp.impl.CppPackageImpl#getUnion()
+ * @generated
+ */
+ int UNION = 21;
+
+ /**
+ * The feature id for the '<em><b>Base Data Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNION__BASE_DATA_TYPE = 0;
+
+ /**
+ * The number of structural features of the '<em>Union</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int UNION_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link Cpp.CppVisibilityKind <em>Visibility Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.CppVisibilityKind
+ * @see Cpp.impl.CppPackageImpl#getCppVisibilityKind()
+ * @generated
+ */
+ int CPP_VISIBILITY_KIND = 22;
+
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppArray <em>Array</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Array</em>'.
+ * @see Cpp.CppArray
+ * @generated
+ */
+ EClass getCppArray();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppArray#getBase_parameter <em>Base parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base parameter</em>'.
+ * @see Cpp.CppArray#getBase_parameter()
+ * @see #getCppArray()
+ * @generated
+ */
+ EReference getCppArray_Base_parameter();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppArray#getDefinition <em>Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Definition</em>'.
+ * @see Cpp.CppArray#getDefinition()
+ * @see #getCppArray()
+ * @generated
+ */
+ EAttribute getCppArray_Definition();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppArray#getBase_property <em>Base property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base property</em>'.
+ * @see Cpp.CppArray#getBase_property()
+ * @see #getCppArray()
+ * @generated
+ */
+ EReference getCppArray_Base_property();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppArray#getBase_association <em>Base association</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base association</em>'.
+ * @see Cpp.CppArray#getBase_association()
+ * @see #getCppArray()
+ * @generated
+ */
+ EReference getCppArray_Base_association();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppConst <em>Const</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Const</em>'.
+ * @see Cpp.CppConst
+ * @generated
+ */
+ EClass getCppConst();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppConst#getBase_parameter <em>Base parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base parameter</em>'.
+ * @see Cpp.CppConst#getBase_parameter()
+ * @see #getCppConst()
+ * @generated
+ */
+ EReference getCppConst_Base_parameter();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppConst#getBase_property <em>Base property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base property</em>'.
+ * @see Cpp.CppConst#getBase_property()
+ * @see #getCppConst()
+ * @generated
+ */
+ EReference getCppConst_Base_property();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppConst#getBase_operation <em>Base operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base operation</em>'.
+ * @see Cpp.CppConst#getBase_operation()
+ * @see #getCppConst()
+ * @generated
+ */
+ EReference getCppConst_Base_operation();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppDefault <em>Default</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Default</em>'.
+ * @see Cpp.CppDefault
+ * @generated
+ */
+ EClass getCppDefault();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppDefault#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see Cpp.CppDefault#getValue()
+ * @see #getCppDefault()
+ * @generated
+ */
+ EAttribute getCppDefault_Value();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppDefault#getBase_parameter <em>Base parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base parameter</em>'.
+ * @see Cpp.CppDefault#getBase_parameter()
+ * @see #getCppDefault()
+ * @generated
+ */
+ EReference getCppDefault_Base_parameter();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppDefault#getBase_property <em>Base property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base property</em>'.
+ * @see Cpp.CppDefault#getBase_property()
+ * @see #getCppDefault()
+ * @generated
+ */
+ EReference getCppDefault_Base_property();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppPtr <em>Ptr</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Ptr</em>'.
+ * @see Cpp.CppPtr
+ * @generated
+ */
+ EClass getCppPtr();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppPtr#getBase_parameter <em>Base parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base parameter</em>'.
+ * @see Cpp.CppPtr#getBase_parameter()
+ * @see #getCppPtr()
+ * @generated
+ */
+ EReference getCppPtr_Base_parameter();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppPtr#getBase_property <em>Base property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base property</em>'.
+ * @see Cpp.CppPtr#getBase_property()
+ * @see #getCppPtr()
+ * @generated
+ */
+ EReference getCppPtr_Base_property();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppPtr#getDeclaration <em>Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Declaration</em>'.
+ * @see Cpp.CppPtr#getDeclaration()
+ * @see #getCppPtr()
+ * @generated
+ */
+ EAttribute getCppPtr_Declaration();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Ref</em>'.
+ * @see Cpp.CppRef
+ * @generated
+ */
+ EClass getCppRef();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppRef#getBase_parameter <em>Base parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base parameter</em>'.
+ * @see Cpp.CppRef#getBase_parameter()
+ * @see #getCppRef()
+ * @generated
+ */
+ EReference getCppRef_Base_parameter();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppRef#getBase_property <em>Base property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base property</em>'.
+ * @see Cpp.CppRef#getBase_property()
+ * @see #getCppRef()
+ * @generated
+ */
+ EReference getCppRef_Base_property();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppExternClass <em>Extern Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Extern Class</em>'.
+ * @see Cpp.CppExternClass
+ * @generated
+ */
+ EClass getCppExternClass();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppExternClass#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see Cpp.CppExternClass#getName()
+ * @see #getCppExternClass()
+ * @generated
+ */
+ EAttribute getCppExternClass_Name();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppExternClass#getBase_class <em>Base class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base class</em>'.
+ * @see Cpp.CppExternClass#getBase_class()
+ * @see #getCppExternClass()
+ * @generated
+ */
+ EReference getCppExternClass_Base_class();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppExternLibrary <em>Extern Library</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Extern Library</em>'.
+ * @see Cpp.CppExternLibrary
+ * @generated
+ */
+ EClass getCppExternLibrary();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppExternLibrary#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see Cpp.CppExternLibrary#getName()
+ * @see #getCppExternLibrary()
+ * @generated
+ */
+ EAttribute getCppExternLibrary_Name();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppExternLibrary#getBase_package <em>Base package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base package</em>'.
+ * @see Cpp.CppExternLibrary#getBase_package()
+ * @see #getCppExternLibrary()
+ * @generated
+ */
+ EReference getCppExternLibrary_Base_package();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppInclude <em>Include</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Include</em>'.
+ * @see Cpp.CppInclude
+ * @generated
+ */
+ EClass getCppInclude();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppInclude#getBody <em>Body</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Body</em>'.
+ * @see Cpp.CppInclude#getBody()
+ * @see #getCppInclude()
+ * @generated
+ */
+ EAttribute getCppInclude_Body();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppInclude#getHeader <em>Header</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Header</em>'.
+ * @see Cpp.CppInclude#getHeader()
+ * @see #getCppInclude()
+ * @generated
+ */
+ EAttribute getCppInclude_Header();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppInclude#getBase_package <em>Base package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base package</em>'.
+ * @see Cpp.CppInclude#getBase_package()
+ * @see #getCppInclude()
+ * @generated
+ */
+ EReference getCppInclude_Base_package();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppInclude#getBase_class <em>Base class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base class</em>'.
+ * @see Cpp.CppInclude#getBase_class()
+ * @see #getCppInclude()
+ * @generated
+ */
+ EReference getCppInclude_Base_class();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppInclude#getBase_PackageImport <em>Base Package Import</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Package Import</em>'.
+ * @see Cpp.CppInclude#getBase_PackageImport()
+ * @see #getCppInclude()
+ * @generated
+ */
+ EReference getCppInclude_Base_PackageImport();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppInclude#getPreBody <em>Pre Body</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Pre Body</em>'.
+ * @see Cpp.CppInclude#getPreBody()
+ * @see #getCppInclude()
+ * @generated
+ */
+ EAttribute getCppInclude_PreBody();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.ManualGeneration <em>Manual Generation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Manual Generation</em>'.
+ * @see Cpp.ManualGeneration
+ * @generated
+ */
+ EClass getManualGeneration();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.ManualGeneration#getExtensionBody <em>Extension Body</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Extension Body</em>'.
+ * @see Cpp.ManualGeneration#getExtensionBody()
+ * @see #getManualGeneration()
+ * @generated
+ */
+ EAttribute getManualGeneration_ExtensionBody();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.ManualGeneration#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see Cpp.ManualGeneration#getBase_Class()
+ * @see #getManualGeneration()
+ * @generated
+ */
+ EReference getManualGeneration_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppRoot <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Root</em>'.
+ * @see Cpp.CppRoot
+ * @generated
+ */
+ EClass getCppRoot();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppRoot#getBase_package <em>Base package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base package</em>'.
+ * @see Cpp.CppRoot#getBase_package()
+ * @see #getCppRoot()
+ * @generated
+ */
+ EReference getCppRoot_Base_package();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppNoCodeGen <em>No Code Gen</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>No Code Gen</em>'.
+ * @see Cpp.CppNoCodeGen
+ * @generated
+ */
+ EClass getCppNoCodeGen();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppNoCodeGen#getBase_element <em>Base element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base element</em>'.
+ * @see Cpp.CppNoCodeGen#getBase_element()
+ * @see #getCppNoCodeGen()
+ * @generated
+ */
+ EReference getCppNoCodeGen_Base_element();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppConstInit <em>Const Init</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Const Init</em>'.
+ * @see Cpp.CppConstInit
+ * @generated
+ */
+ EClass getCppConstInit();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppConstInit#getInitialisation <em>Initialisation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Initialisation</em>'.
+ * @see Cpp.CppConstInit#getInitialisation()
+ * @see #getCppConstInit()
+ * @generated
+ */
+ EAttribute getCppConstInit_Initialisation();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppConstInit#getBase_operation <em>Base operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base operation</em>'.
+ * @see Cpp.CppConstInit#getBase_operation()
+ * @see #getCppConstInit()
+ * @generated
+ */
+ EReference getCppConstInit_Base_operation();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppFriend <em>Friend</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Friend</em>'.
+ * @see Cpp.CppFriend
+ * @generated
+ */
+ EClass getCppFriend();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppFriend#getBase_dependency <em>Base dependency</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base dependency</em>'.
+ * @see Cpp.CppFriend#getBase_dependency()
+ * @see #getCppFriend()
+ * @generated
+ */
+ EReference getCppFriend_Base_dependency();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppFriend#getBase_operation <em>Base operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base operation</em>'.
+ * @see Cpp.CppFriend#getBase_operation()
+ * @see #getCppFriend()
+ * @generated
+ */
+ EReference getCppFriend_Base_operation();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppInline <em>Inline</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Inline</em>'.
+ * @see Cpp.CppInline
+ * @generated
+ */
+ EClass getCppInline();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppInline#getBase_operation <em>Base operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base operation</em>'.
+ * @see Cpp.CppInline#getBase_operation()
+ * @see #getCppInline()
+ * @generated
+ */
+ EReference getCppInline_Base_operation();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppVirtual <em>Virtual</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Virtual</em>'.
+ * @see Cpp.CppVirtual
+ * @generated
+ */
+ EClass getCppVirtual();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppVirtual#getBase_operation <em>Base operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base operation</em>'.
+ * @see Cpp.CppVirtual#getBase_operation()
+ * @see #getCppVirtual()
+ * @generated
+ */
+ EReference getCppVirtual_Base_operation();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Type</em>'.
+ * @see Cpp.CppType
+ * @generated
+ */
+ EClass getCppType();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppType#getDefinition <em>Definition</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Definition</em>'.
+ * @see Cpp.CppType#getDefinition()
+ * @see #getCppType()
+ * @generated
+ */
+ EAttribute getCppType_Definition();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppType#getBase_primitivetype <em>Base primitivetype</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base primitivetype</em>'.
+ * @see Cpp.CppType#getBase_primitivetype()
+ * @see #getCppType()
+ * @generated
+ */
+ EReference getCppType_Base_primitivetype();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppVisibility <em>Visibility</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Visibility</em>'.
+ * @see Cpp.CppVisibility
+ * @generated
+ */
+ EClass getCppVisibility();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppVisibility#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see Cpp.CppVisibility#getValue()
+ * @see #getCppVisibility()
+ * @generated
+ */
+ EAttribute getCppVisibility_Value();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppVisibility#getBase_generalization <em>Base generalization</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base generalization</em>'.
+ * @see Cpp.CppVisibility#getBase_generalization()
+ * @see #getCppVisibility()
+ * @generated
+ */
+ EReference getCppVisibility_Base_generalization();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppInit <em>Init</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Init</em>'.
+ * @see Cpp.CppInit
+ * @generated
+ */
+ EClass getCppInit();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppInit#getValue <em>Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Value</em>'.
+ * @see Cpp.CppInit#getValue()
+ * @see #getCppInit()
+ * @generated
+ */
+ EAttribute getCppInit_Value();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppInit#getBase_enumerationliteral <em>Base enumerationliteral</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base enumerationliteral</em>'.
+ * @see Cpp.CppInit#getBase_enumerationliteral()
+ * @see #getCppInit()
+ * @generated
+ */
+ EReference getCppInit_Base_enumerationliteral();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppTemplate <em>Template</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Template</em>'.
+ * @see Cpp.CppTemplate
+ * @generated
+ */
+ EClass getCppTemplate();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppTemplate#getDeclaration <em>Declaration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Declaration</em>'.
+ * @see Cpp.CppTemplate#getDeclaration()
+ * @see #getCppTemplate()
+ * @generated
+ */
+ EAttribute getCppTemplate_Declaration();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppTemplate#getBase_class <em>Base class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base class</em>'.
+ * @see Cpp.CppTemplate#getBase_class()
+ * @see #getCppTemplate()
+ * @generated
+ */
+ EReference getCppTemplate_Base_class();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppTemplateBinding <em>Template Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Template Binding</em>'.
+ * @see Cpp.CppTemplateBinding
+ * @generated
+ */
+ EClass getCppTemplateBinding();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppTemplateBinding#getBinding <em>Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Binding</em>'.
+ * @see Cpp.CppTemplateBinding#getBinding()
+ * @see #getCppTemplateBinding()
+ * @generated
+ */
+ EAttribute getCppTemplateBinding_Binding();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppTemplateBinding#getBase_templatebinding <em>Base templatebinding</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base templatebinding</em>'.
+ * @see Cpp.CppTemplateBinding#getBase_templatebinding()
+ * @see #getCppTemplateBinding()
+ * @generated
+ */
+ EReference getCppTemplateBinding_Base_templatebinding();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.CppTemplateParameter <em>Template Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Template Parameter</em>'.
+ * @see Cpp.CppTemplateParameter
+ * @generated
+ */
+ EClass getCppTemplateParameter();
+
+ /**
+ * Returns the meta object for the attribute '{@link Cpp.CppTemplateParameter#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see Cpp.CppTemplateParameter#getName()
+ * @see #getCppTemplateParameter()
+ * @generated
+ */
+ EAttribute getCppTemplateParameter_Name();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.CppTemplateParameter#getBase_templateparameter <em>Base templateparameter</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base templateparameter</em>'.
+ * @see Cpp.CppTemplateParameter#getBase_templateparameter()
+ * @see #getCppTemplateParameter()
+ * @generated
+ */
+ EReference getCppTemplateParameter_Base_templateparameter();
+
+ /**
+ * Returns the meta object for class '{@link Cpp.Union <em>Union</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Union</em>'.
+ * @see Cpp.Union
+ * @generated
+ */
+ EClass getUnion();
+
+ /**
+ * Returns the meta object for the reference '{@link Cpp.Union#getBase_DataType <em>Base Data Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Data Type</em>'.
+ * @see Cpp.Union#getBase_DataType()
+ * @see #getUnion()
+ * @generated
+ */
+ EReference getUnion_Base_DataType();
+
+ /**
+ * Returns the meta object for enum '{@link Cpp.CppVisibilityKind <em>Visibility Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Visibility Kind</em>'.
+ * @see Cpp.CppVisibilityKind
+ * @generated
+ */
+ EEnum getCppVisibilityKind();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ CppFactory getCppFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppArrayImpl <em>Array</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppArrayImpl
+ * @see Cpp.impl.CppPackageImpl#getCppArray()
+ * @generated
+ */
+ EClass CPP_ARRAY = eINSTANCE.getCppArray();
+
+ /**
+ * The meta object literal for the '<em><b>Base parameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_ARRAY__BASE_PARAMETER = eINSTANCE.getCppArray_Base_parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Definition</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_ARRAY__DEFINITION = eINSTANCE.getCppArray_Definition();
+
+ /**
+ * The meta object literal for the '<em><b>Base property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_ARRAY__BASE_PROPERTY = eINSTANCE.getCppArray_Base_property();
+
+ /**
+ * The meta object literal for the '<em><b>Base association</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_ARRAY__BASE_ASSOCIATION = eINSTANCE.getCppArray_Base_association();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppConstImpl <em>Const</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppConstImpl
+ * @see Cpp.impl.CppPackageImpl#getCppConst()
+ * @generated
+ */
+ EClass CPP_CONST = eINSTANCE.getCppConst();
+
+ /**
+ * The meta object literal for the '<em><b>Base parameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_CONST__BASE_PARAMETER = eINSTANCE.getCppConst_Base_parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Base property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_CONST__BASE_PROPERTY = eINSTANCE.getCppConst_Base_property();
+
+ /**
+ * The meta object literal for the '<em><b>Base operation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_CONST__BASE_OPERATION = eINSTANCE.getCppConst_Base_operation();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppDefaultImpl <em>Default</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppDefaultImpl
+ * @see Cpp.impl.CppPackageImpl#getCppDefault()
+ * @generated
+ */
+ EClass CPP_DEFAULT = eINSTANCE.getCppDefault();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_DEFAULT__VALUE = eINSTANCE.getCppDefault_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Base parameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_DEFAULT__BASE_PARAMETER = eINSTANCE.getCppDefault_Base_parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Base property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_DEFAULT__BASE_PROPERTY = eINSTANCE.getCppDefault_Base_property();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppPtrImpl <em>Ptr</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppPtrImpl
+ * @see Cpp.impl.CppPackageImpl#getCppPtr()
+ * @generated
+ */
+ EClass CPP_PTR = eINSTANCE.getCppPtr();
+
+ /**
+ * The meta object literal for the '<em><b>Base parameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_PTR__BASE_PARAMETER = eINSTANCE.getCppPtr_Base_parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Base property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_PTR__BASE_PROPERTY = eINSTANCE.getCppPtr_Base_property();
+
+ /**
+ * The meta object literal for the '<em><b>Declaration</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_PTR__DECLARATION = eINSTANCE.getCppPtr_Declaration();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppRefImpl <em>Ref</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppRefImpl
+ * @see Cpp.impl.CppPackageImpl#getCppRef()
+ * @generated
+ */
+ EClass CPP_REF = eINSTANCE.getCppRef();
+
+ /**
+ * The meta object literal for the '<em><b>Base parameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_REF__BASE_PARAMETER = eINSTANCE.getCppRef_Base_parameter();
+
+ /**
+ * The meta object literal for the '<em><b>Base property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_REF__BASE_PROPERTY = eINSTANCE.getCppRef_Base_property();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppExternClassImpl <em>Extern Class</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppExternClassImpl
+ * @see Cpp.impl.CppPackageImpl#getCppExternClass()
+ * @generated
+ */
+ EClass CPP_EXTERN_CLASS = eINSTANCE.getCppExternClass();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_EXTERN_CLASS__NAME = eINSTANCE.getCppExternClass_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Base class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_EXTERN_CLASS__BASE_CLASS = eINSTANCE.getCppExternClass_Base_class();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppExternLibraryImpl <em>Extern Library</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppExternLibraryImpl
+ * @see Cpp.impl.CppPackageImpl#getCppExternLibrary()
+ * @generated
+ */
+ EClass CPP_EXTERN_LIBRARY = eINSTANCE.getCppExternLibrary();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_EXTERN_LIBRARY__NAME = eINSTANCE.getCppExternLibrary_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Base package</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_EXTERN_LIBRARY__BASE_PACKAGE = eINSTANCE.getCppExternLibrary_Base_package();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppIncludeImpl <em>Include</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppIncludeImpl
+ * @see Cpp.impl.CppPackageImpl#getCppInclude()
+ * @generated
+ */
+ EClass CPP_INCLUDE = eINSTANCE.getCppInclude();
+
+ /**
+ * The meta object literal for the '<em><b>Body</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_INCLUDE__BODY = eINSTANCE.getCppInclude_Body();
+
+ /**
+ * The meta object literal for the '<em><b>Header</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_INCLUDE__HEADER = eINSTANCE.getCppInclude_Header();
+
+ /**
+ * The meta object literal for the '<em><b>Base package</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_INCLUDE__BASE_PACKAGE = eINSTANCE.getCppInclude_Base_package();
+
+ /**
+ * The meta object literal for the '<em><b>Base class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_INCLUDE__BASE_CLASS = eINSTANCE.getCppInclude_Base_class();
+
+ /**
+ * The meta object literal for the '<em><b>Base Package Import</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_INCLUDE__BASE_PACKAGE_IMPORT = eINSTANCE.getCppInclude_Base_PackageImport();
+
+ /**
+ * The meta object literal for the '<em><b>Pre Body</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_INCLUDE__PRE_BODY = eINSTANCE.getCppInclude_PreBody();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.ManualGenerationImpl <em>Manual Generation</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.ManualGenerationImpl
+ * @see Cpp.impl.CppPackageImpl#getManualGeneration()
+ * @generated
+ */
+ EClass MANUAL_GENERATION = eINSTANCE.getManualGeneration();
+
+ /**
+ * The meta object literal for the '<em><b>Extension Body</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute MANUAL_GENERATION__EXTENSION_BODY = eINSTANCE.getManualGeneration_ExtensionBody();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference MANUAL_GENERATION__BASE_CLASS = eINSTANCE.getManualGeneration_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppRootImpl <em>Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppRootImpl
+ * @see Cpp.impl.CppPackageImpl#getCppRoot()
+ * @generated
+ */
+ EClass CPP_ROOT = eINSTANCE.getCppRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Base package</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_ROOT__BASE_PACKAGE = eINSTANCE.getCppRoot_Base_package();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppNoCodeGenImpl <em>No Code Gen</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppNoCodeGenImpl
+ * @see Cpp.impl.CppPackageImpl#getCppNoCodeGen()
+ * @generated
+ */
+ EClass CPP_NO_CODE_GEN = eINSTANCE.getCppNoCodeGen();
+
+ /**
+ * The meta object literal for the '<em><b>Base element</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_NO_CODE_GEN__BASE_ELEMENT = eINSTANCE.getCppNoCodeGen_Base_element();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppConstInitImpl <em>Const Init</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppConstInitImpl
+ * @see Cpp.impl.CppPackageImpl#getCppConstInit()
+ * @generated
+ */
+ EClass CPP_CONST_INIT = eINSTANCE.getCppConstInit();
+
+ /**
+ * The meta object literal for the '<em><b>Initialisation</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_CONST_INIT__INITIALISATION = eINSTANCE.getCppConstInit_Initialisation();
+
+ /**
+ * The meta object literal for the '<em><b>Base operation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_CONST_INIT__BASE_OPERATION = eINSTANCE.getCppConstInit_Base_operation();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppFriendImpl <em>Friend</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppFriendImpl
+ * @see Cpp.impl.CppPackageImpl#getCppFriend()
+ * @generated
+ */
+ EClass CPP_FRIEND = eINSTANCE.getCppFriend();
+
+ /**
+ * The meta object literal for the '<em><b>Base dependency</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_FRIEND__BASE_DEPENDENCY = eINSTANCE.getCppFriend_Base_dependency();
+
+ /**
+ * The meta object literal for the '<em><b>Base operation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_FRIEND__BASE_OPERATION = eINSTANCE.getCppFriend_Base_operation();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppInlineImpl <em>Inline</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppInlineImpl
+ * @see Cpp.impl.CppPackageImpl#getCppInline()
+ * @generated
+ */
+ EClass CPP_INLINE = eINSTANCE.getCppInline();
+
+ /**
+ * The meta object literal for the '<em><b>Base operation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_INLINE__BASE_OPERATION = eINSTANCE.getCppInline_Base_operation();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppVirtualImpl <em>Virtual</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppVirtualImpl
+ * @see Cpp.impl.CppPackageImpl#getCppVirtual()
+ * @generated
+ */
+ EClass CPP_VIRTUAL = eINSTANCE.getCppVirtual();
+
+ /**
+ * The meta object literal for the '<em><b>Base operation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_VIRTUAL__BASE_OPERATION = eINSTANCE.getCppVirtual_Base_operation();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppTypeImpl <em>Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppTypeImpl
+ * @see Cpp.impl.CppPackageImpl#getCppType()
+ * @generated
+ */
+ EClass CPP_TYPE = eINSTANCE.getCppType();
+
+ /**
+ * The meta object literal for the '<em><b>Definition</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_TYPE__DEFINITION = eINSTANCE.getCppType_Definition();
+
+ /**
+ * The meta object literal for the '<em><b>Base primitivetype</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_TYPE__BASE_PRIMITIVETYPE = eINSTANCE.getCppType_Base_primitivetype();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppVisibilityImpl <em>Visibility</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppVisibilityImpl
+ * @see Cpp.impl.CppPackageImpl#getCppVisibility()
+ * @generated
+ */
+ EClass CPP_VISIBILITY = eINSTANCE.getCppVisibility();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_VISIBILITY__VALUE = eINSTANCE.getCppVisibility_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Base generalization</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_VISIBILITY__BASE_GENERALIZATION = eINSTANCE.getCppVisibility_Base_generalization();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppInitImpl <em>Init</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppInitImpl
+ * @see Cpp.impl.CppPackageImpl#getCppInit()
+ * @generated
+ */
+ EClass CPP_INIT = eINSTANCE.getCppInit();
+
+ /**
+ * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_INIT__VALUE = eINSTANCE.getCppInit_Value();
+
+ /**
+ * The meta object literal for the '<em><b>Base enumerationliteral</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_INIT__BASE_ENUMERATIONLITERAL = eINSTANCE.getCppInit_Base_enumerationliteral();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppTemplateImpl <em>Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppTemplateImpl
+ * @see Cpp.impl.CppPackageImpl#getCppTemplate()
+ * @generated
+ */
+ EClass CPP_TEMPLATE = eINSTANCE.getCppTemplate();
+
+ /**
+ * The meta object literal for the '<em><b>Declaration</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_TEMPLATE__DECLARATION = eINSTANCE.getCppTemplate_Declaration();
+
+ /**
+ * The meta object literal for the '<em><b>Base class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_TEMPLATE__BASE_CLASS = eINSTANCE.getCppTemplate_Base_class();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppTemplateBindingImpl <em>Template Binding</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppTemplateBindingImpl
+ * @see Cpp.impl.CppPackageImpl#getCppTemplateBinding()
+ * @generated
+ */
+ EClass CPP_TEMPLATE_BINDING = eINSTANCE.getCppTemplateBinding();
+
+ /**
+ * The meta object literal for the '<em><b>Binding</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_TEMPLATE_BINDING__BINDING = eINSTANCE.getCppTemplateBinding_Binding();
+
+ /**
+ * The meta object literal for the '<em><b>Base templatebinding</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING = eINSTANCE.getCppTemplateBinding_Base_templatebinding();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.CppTemplateParameterImpl <em>Template Parameter</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.CppTemplateParameterImpl
+ * @see Cpp.impl.CppPackageImpl#getCppTemplateParameter()
+ * @generated
+ */
+ EClass CPP_TEMPLATE_PARAMETER = eINSTANCE.getCppTemplateParameter();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_TEMPLATE_PARAMETER__NAME = eINSTANCE.getCppTemplateParameter_Name();
+
+ /**
+ * The meta object literal for the '<em><b>Base templateparameter</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER = eINSTANCE.getCppTemplateParameter_Base_templateparameter();
+
+ /**
+ * The meta object literal for the '{@link Cpp.impl.UnionImpl <em>Union</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.impl.UnionImpl
+ * @see Cpp.impl.CppPackageImpl#getUnion()
+ * @generated
+ */
+ EClass UNION = eINSTANCE.getUnion();
+
+ /**
+ * The meta object literal for the '<em><b>Base Data Type</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference UNION__BASE_DATA_TYPE = eINSTANCE.getUnion_Base_DataType();
+
+ /**
+ * The meta object literal for the '{@link Cpp.CppVisibilityKind <em>Visibility Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see Cpp.CppVisibilityKind
+ * @see Cpp.impl.CppPackageImpl#getCppVisibilityKind()
+ * @generated
+ */
+ EEnum CPP_VISIBILITY_KIND = eINSTANCE.getCppVisibilityKind();
+
+ }
+
+} //CppPackage
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppPtr.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppPtr.java
new file mode 100644
index 00000000000..fe0957ebe82
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppPtr.java
@@ -0,0 +1,111 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ptr</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * "declaration" attribute should only be used, if more than one indirections of pointers (often "**")
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppPtr#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.CppPtr#getBase_property <em>Base property</em>}</li>
+ * <li>{@link Cpp.CppPtr#getDeclaration <em>Declaration</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppPtr()
+ * @model
+ * @generated
+ */
+public interface CppPtr extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base parameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base parameter</em>' reference.
+ * @see #setBase_parameter(Parameter)
+ * @see Cpp.CppPackage#getCppPtr_Base_parameter()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Parameter getBase_parameter();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppPtr#getBase_parameter <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base parameter</em>' reference.
+ * @see #getBase_parameter()
+ * @generated
+ */
+ void setBase_parameter(Parameter value);
+
+ /**
+ * Returns the value of the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base property</em>' reference.
+ * @see #setBase_property(Property)
+ * @see Cpp.CppPackage#getCppPtr_Base_property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_property();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppPtr#getBase_property <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base property</em>' reference.
+ * @see #getBase_property()
+ * @generated
+ */
+ void setBase_property(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Declaration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declaration</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Declaration</em>' attribute.
+ * @see #setDeclaration(String)
+ * @see Cpp.CppPackage#getCppPtr_Declaration()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDeclaration();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppPtr#getDeclaration <em>Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Declaration</em>' attribute.
+ * @see #getDeclaration()
+ * @generated
+ */
+ void setDeclaration(String value);
+
+} // CppPtr
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppRef.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppRef.java
new file mode 100644
index 00000000000..130a4d605fd
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppRef.java
@@ -0,0 +1,80 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ref</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppRef#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.CppRef#getBase_property <em>Base property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppRef()
+ * @model
+ * @generated
+ */
+public interface CppRef extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base parameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base parameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base parameter</em>' reference.
+ * @see #setBase_parameter(Parameter)
+ * @see Cpp.CppPackage#getCppRef_Base_parameter()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Parameter getBase_parameter();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppRef#getBase_parameter <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base parameter</em>' reference.
+ * @see #getBase_parameter()
+ * @generated
+ */
+ void setBase_parameter(Parameter value);
+
+ /**
+ * Returns the value of the '<em><b>Base property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base property</em>' reference.
+ * @see #setBase_property(Property)
+ * @see Cpp.CppPackage#getCppRef_Base_property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_property();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppRef#getBase_property <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base property</em>' reference.
+ * @see #getBase_property()
+ * @generated
+ */
+ void setBase_property(Property value);
+
+} // CppRef
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppRoot.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppRoot.java
new file mode 100644
index 00000000000..67df86f5af5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppRoot.java
@@ -0,0 +1,50 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppRoot#getBase_package <em>Base package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppRoot()
+ * @model
+ * @generated
+ */
+public interface CppRoot extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base package</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base package</em>' reference.
+ * @see #setBase_package(org.eclipse.uml2.uml.Package)
+ * @see Cpp.CppPackage#getCppRoot_Base_package()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Package getBase_package();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppRoot#getBase_package <em>Base package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base package</em>' reference.
+ * @see #getBase_package()
+ * @generated
+ */
+ void setBase_package(org.eclipse.uml2.uml.Package value);
+
+} // CppRoot
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplate.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplate.java
new file mode 100644
index 00000000000..1e63c4eb366
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplate.java
@@ -0,0 +1,77 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Template</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppTemplate#getDeclaration <em>Declaration</em>}</li>
+ * <li>{@link Cpp.CppTemplate#getBase_class <em>Base class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppTemplate()
+ * @model
+ * @generated
+ */
+public interface CppTemplate extends EObject {
+ /**
+ * Returns the value of the '<em><b>Declaration</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Declaration</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Declaration</em>' attribute.
+ * @see #setDeclaration(String)
+ * @see Cpp.CppPackage#getCppTemplate_Declaration()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDeclaration();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppTemplate#getDeclaration <em>Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Declaration</em>' attribute.
+ * @see #getDeclaration()
+ * @generated
+ */
+ void setDeclaration(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base class</em>' reference.
+ * @see #setBase_class(org.eclipse.uml2.uml.Class)
+ * @see Cpp.CppPackage#getCppTemplate_Base_class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_class();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppTemplate#getBase_class <em>Base class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base class</em>' reference.
+ * @see #getBase_class()
+ * @generated
+ */
+ void setBase_class(org.eclipse.uml2.uml.Class value);
+
+} // CppTemplate
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplateBinding.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplateBinding.java
new file mode 100644
index 00000000000..f57d4f5c335
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplateBinding.java
@@ -0,0 +1,79 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.TemplateBinding;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Template Binding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppTemplateBinding#getBinding <em>Binding</em>}</li>
+ * <li>{@link Cpp.CppTemplateBinding#getBase_templatebinding <em>Base templatebinding</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppTemplateBinding()
+ * @model
+ * @generated
+ */
+public interface CppTemplateBinding extends EObject {
+ /**
+ * Returns the value of the '<em><b>Binding</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Binding</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Binding</em>' attribute.
+ * @see #setBinding(String)
+ * @see Cpp.CppPackage#getCppTemplateBinding_Binding()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getBinding();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppTemplateBinding#getBinding <em>Binding</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Binding</em>' attribute.
+ * @see #getBinding()
+ * @generated
+ */
+ void setBinding(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base templatebinding</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base templatebinding</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base templatebinding</em>' reference.
+ * @see #setBase_templatebinding(TemplateBinding)
+ * @see Cpp.CppPackage#getCppTemplateBinding_Base_templatebinding()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TemplateBinding getBase_templatebinding();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppTemplateBinding#getBase_templatebinding <em>Base templatebinding</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base templatebinding</em>' reference.
+ * @see #getBase_templatebinding()
+ * @generated
+ */
+ void setBase_templatebinding(TemplateBinding value);
+
+} // CppTemplateBinding
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplateParameter.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplateParameter.java
new file mode 100644
index 00000000000..a5ffa3dbf1e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppTemplateParameter.java
@@ -0,0 +1,79 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.TemplateParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Template Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppTemplateParameter#getName <em>Name</em>}</li>
+ * <li>{@link Cpp.CppTemplateParameter#getBase_templateparameter <em>Base templateparameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppTemplateParameter()
+ * @model
+ * @generated
+ */
+public interface CppTemplateParameter extends EObject {
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see Cpp.CppPackage#getCppTemplateParameter_Name()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppTemplateParameter#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base templateparameter</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base templateparameter</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base templateparameter</em>' reference.
+ * @see #setBase_templateparameter(TemplateParameter)
+ * @see Cpp.CppPackage#getCppTemplateParameter_Base_templateparameter()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TemplateParameter getBase_templateparameter();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppTemplateParameter#getBase_templateparameter <em>Base templateparameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base templateparameter</em>' reference.
+ * @see #getBase_templateparameter()
+ * @generated
+ */
+ void setBase_templateparameter(TemplateParameter value);
+
+} // CppTemplateParameter
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppType.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppType.java
new file mode 100644
index 00000000000..e7361e823a9
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppType.java
@@ -0,0 +1,79 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.PrimitiveType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppType#getDefinition <em>Definition</em>}</li>
+ * <li>{@link Cpp.CppType#getBase_primitivetype <em>Base primitivetype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppType()
+ * @model
+ * @generated
+ */
+public interface CppType extends EObject {
+ /**
+ * Returns the value of the '<em><b>Definition</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Definition</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Definition</em>' attribute.
+ * @see #setDefinition(String)
+ * @see Cpp.CppPackage#getCppType_Definition()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getDefinition();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppType#getDefinition <em>Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Definition</em>' attribute.
+ * @see #getDefinition()
+ * @generated
+ */
+ void setDefinition(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base primitivetype</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base primitivetype</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base primitivetype</em>' reference.
+ * @see #setBase_primitivetype(PrimitiveType)
+ * @see Cpp.CppPackage#getCppType_Base_primitivetype()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ PrimitiveType getBase_primitivetype();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppType#getBase_primitivetype <em>Base primitivetype</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base primitivetype</em>' reference.
+ * @see #getBase_primitivetype()
+ * @generated
+ */
+ void setBase_primitivetype(PrimitiveType value);
+
+} // CppType
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVirtual.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVirtual.java
new file mode 100644
index 00000000000..816aae48392
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVirtual.java
@@ -0,0 +1,52 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Virtual</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppVirtual#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppVirtual()
+ * @model
+ * @generated
+ */
+public interface CppVirtual extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base operation</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base operation</em>' reference.
+ * @see #setBase_operation(Operation)
+ * @see Cpp.CppPackage#getCppVirtual_Base_operation()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Operation getBase_operation();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppVirtual#getBase_operation <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base operation</em>' reference.
+ * @see #getBase_operation()
+ * @generated
+ */
+ void setBase_operation(Operation value);
+
+} // CppVirtual
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVisibility.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVisibility.java
new file mode 100644
index 00000000000..ad89c998382
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVisibility.java
@@ -0,0 +1,79 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Generalization;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Visibility</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.CppVisibility#getValue <em>Value</em>}</li>
+ * <li>{@link Cpp.CppVisibility#getBase_generalization <em>Base generalization</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getCppVisibility()
+ * @model
+ * @generated
+ */
+public interface CppVisibility extends EObject {
+ /**
+ * Returns the value of the '<em><b>Value</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Value</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Value</em>' attribute.
+ * @see #setValue(String)
+ * @see Cpp.CppPackage#getCppVisibility_Value()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getValue();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppVisibility#getValue <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Value</em>' attribute.
+ * @see #getValue()
+ * @generated
+ */
+ void setValue(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base generalization</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base generalization</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base generalization</em>' reference.
+ * @see #setBase_generalization(Generalization)
+ * @see Cpp.CppPackage#getCppVisibility_Base_generalization()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Generalization getBase_generalization();
+
+ /**
+ * Sets the value of the '{@link Cpp.CppVisibility#getBase_generalization <em>Base generalization</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base generalization</em>' reference.
+ * @see #getBase_generalization()
+ * @generated
+ */
+ void setBase_generalization(Generalization value);
+
+} // CppVisibility
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVisibilityKind.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVisibilityKind.java
new file mode 100644
index 00000000000..6f2b0a5dc28
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/CppVisibilityKind.java
@@ -0,0 +1,235 @@
+/**
+ */
+package Cpp;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Visibility Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see Cpp.CppPackage#getCppVisibilityKind()
+ * @model
+ * @generated
+ */
+public enum CppVisibilityKind implements Enumerator {
+ /**
+ * The '<em><b>Private</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PRIVATE_VALUE
+ * @generated
+ * @ordered
+ */
+ PRIVATE(0, "private", "private"),
+
+ /**
+ * The '<em><b>Protected</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PROTECTED_VALUE
+ * @generated
+ * @ordered
+ */
+ PROTECTED(1, "protected", "protected"),
+
+ /**
+ * The '<em><b>Public</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PUBLIC_VALUE
+ * @generated
+ * @ordered
+ */
+ PUBLIC(2, "public", "public");
+
+ /**
+ * The '<em><b>Private</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Private</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PRIVATE
+ * @model name="private"
+ * @generated
+ * @ordered
+ */
+ public static final int PRIVATE_VALUE = 0;
+
+ /**
+ * The '<em><b>Protected</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Protected</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PROTECTED
+ * @model name="protected"
+ * @generated
+ * @ordered
+ */
+ public static final int PROTECTED_VALUE = 1;
+
+ /**
+ * The '<em><b>Public</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Public</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PUBLIC
+ * @model name="public"
+ * @generated
+ * @ordered
+ */
+ public static final int PUBLIC_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Visibility Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final CppVisibilityKind[] VALUES_ARRAY =
+ new CppVisibilityKind[] {
+ PRIVATE,
+ PROTECTED,
+ PUBLIC,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Visibility Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<CppVisibilityKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static CppVisibilityKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ CppVisibilityKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static CppVisibilityKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ CppVisibilityKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Visibility Kind</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static CppVisibilityKind get(int value) {
+ switch (value) {
+ case PRIVATE_VALUE: return PRIVATE;
+ case PROTECTED_VALUE: return PROTECTED;
+ case PUBLIC_VALUE: return PUBLIC;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private CppVisibilityKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //CppVisibilityKind
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/ManualGeneration.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/ManualGeneration.java
new file mode 100644
index 00000000000..c1471d435f5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/ManualGeneration.java
@@ -0,0 +1,81 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Manual Generation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * Some toolkits require a quite particular way of use. For instance, LTTng requires the use of C (not C++) for the declaration of a trace provider and the header file is read several time with redefined macros. Therefore, the code generator supports a "manual" generation mode, in which primarily the contents of the CppInclude directive is written.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.ManualGeneration#getExtensionBody <em>Extension Body</em>}</li>
+ * <li>{@link Cpp.ManualGeneration#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getManualGeneration()
+ * @model
+ * @generated
+ */
+public interface ManualGeneration extends EObject {
+ /**
+ * Returns the value of the '<em><b>Extension Body</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Extension Body</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Extension Body</em>' attribute.
+ * @see #setExtensionBody(String)
+ * @see Cpp.CppPackage#getManualGeneration_ExtensionBody()
+ * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+ * @generated
+ */
+ String getExtensionBody();
+
+ /**
+ * Sets the value of the '{@link Cpp.ManualGeneration#getExtensionBody <em>Extension Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Extension Body</em>' attribute.
+ * @see #getExtensionBody()
+ * @generated
+ */
+ void setExtensionBody(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see Cpp.CppPackage#getManualGeneration_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link Cpp.ManualGeneration#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // ManualGeneration
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/Union.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/Union.java
new file mode 100644
index 00000000000..48ee35c6bd2
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/Union.java
@@ -0,0 +1,52 @@
+/**
+ */
+package Cpp;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.DataType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Union</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link Cpp.Union#getBase_DataType <em>Base Data Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see Cpp.CppPackage#getUnion()
+ * @model
+ * @generated
+ */
+public interface Union extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Data Type</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Data Type</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Data Type</em>' reference.
+ * @see #setBase_DataType(DataType)
+ * @see Cpp.CppPackage#getUnion_Base_DataType()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ DataType getBase_DataType();
+
+ /**
+ * Sets the value of the '{@link Cpp.Union#getBase_DataType <em>Base Data Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Data Type</em>' reference.
+ * @see #getBase_DataType()
+ * @generated
+ */
+ void setBase_DataType(DataType value);
+
+} // Union
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppArrayImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppArrayImpl.java
new file mode 100644
index 00000000000..8b05813d8b1
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppArrayImpl.java
@@ -0,0 +1,348 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppArray;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Array</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppArrayImpl#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.impl.CppArrayImpl#getDefinition <em>Definition</em>}</li>
+ * <li>{@link Cpp.impl.CppArrayImpl#getBase_property <em>Base property</em>}</li>
+ * <li>{@link Cpp.impl.CppArrayImpl#getBase_association <em>Base association</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppArrayImpl extends EObjectImpl implements CppArray {
+ /**
+ * The cached value of the '{@link #getBase_parameter() <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_parameter()
+ * @generated
+ * @ordered
+ */
+ protected Parameter base_parameter;
+
+ /**
+ * The default value of the '{@link #getDefinition() <em>Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefinition()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFINITION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefinition() <em>Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefinition()
+ * @generated
+ * @ordered
+ */
+ protected String definition = DEFINITION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_property() <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_property;
+
+ /**
+ * The cached value of the '{@link #getBase_association() <em>Base association</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_association()
+ * @generated
+ * @ordered
+ */
+ protected Association base_association;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppArrayImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_ARRAY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter getBase_parameter() {
+ if (base_parameter != null && base_parameter.eIsProxy()) {
+ InternalEObject oldBase_parameter = (InternalEObject)base_parameter;
+ base_parameter = (Parameter)eResolveProxy(oldBase_parameter);
+ if (base_parameter != oldBase_parameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_ARRAY__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+ }
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter basicGetBase_parameter() {
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_parameter(Parameter newBase_parameter) {
+ Parameter oldBase_parameter = base_parameter;
+ base_parameter = newBase_parameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_ARRAY__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDefinition() {
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDefinition(String newDefinition) {
+ String oldDefinition = definition;
+ definition = newDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_ARRAY__DEFINITION, oldDefinition, definition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_property() {
+ if (base_property != null && base_property.eIsProxy()) {
+ InternalEObject oldBase_property = (InternalEObject)base_property;
+ base_property = (Property)eResolveProxy(oldBase_property);
+ if (base_property != oldBase_property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_ARRAY__BASE_PROPERTY, oldBase_property, base_property));
+ }
+ }
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_property() {
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_property(Property newBase_property) {
+ Property oldBase_property = base_property;
+ base_property = newBase_property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_ARRAY__BASE_PROPERTY, oldBase_property, base_property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Association getBase_association() {
+ if (base_association != null && base_association.eIsProxy()) {
+ InternalEObject oldBase_association = (InternalEObject)base_association;
+ base_association = (Association)eResolveProxy(oldBase_association);
+ if (base_association != oldBase_association) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_ARRAY__BASE_ASSOCIATION, oldBase_association, base_association));
+ }
+ }
+ return base_association;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Association basicGetBase_association() {
+ return base_association;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_association(Association newBase_association) {
+ Association oldBase_association = base_association;
+ base_association = newBase_association;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_ARRAY__BASE_ASSOCIATION, oldBase_association, base_association));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_ARRAY__BASE_PARAMETER:
+ if (resolve) return getBase_parameter();
+ return basicGetBase_parameter();
+ case CppPackage.CPP_ARRAY__DEFINITION:
+ return getDefinition();
+ case CppPackage.CPP_ARRAY__BASE_PROPERTY:
+ if (resolve) return getBase_property();
+ return basicGetBase_property();
+ case CppPackage.CPP_ARRAY__BASE_ASSOCIATION:
+ if (resolve) return getBase_association();
+ return basicGetBase_association();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_ARRAY__BASE_PARAMETER:
+ setBase_parameter((Parameter)newValue);
+ return;
+ case CppPackage.CPP_ARRAY__DEFINITION:
+ setDefinition((String)newValue);
+ return;
+ case CppPackage.CPP_ARRAY__BASE_PROPERTY:
+ setBase_property((Property)newValue);
+ return;
+ case CppPackage.CPP_ARRAY__BASE_ASSOCIATION:
+ setBase_association((Association)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_ARRAY__BASE_PARAMETER:
+ setBase_parameter((Parameter)null);
+ return;
+ case CppPackage.CPP_ARRAY__DEFINITION:
+ setDefinition(DEFINITION_EDEFAULT);
+ return;
+ case CppPackage.CPP_ARRAY__BASE_PROPERTY:
+ setBase_property((Property)null);
+ return;
+ case CppPackage.CPP_ARRAY__BASE_ASSOCIATION:
+ setBase_association((Association)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_ARRAY__BASE_PARAMETER:
+ return base_parameter != null;
+ case CppPackage.CPP_ARRAY__DEFINITION:
+ return DEFINITION_EDEFAULT == null ? definition != null : !DEFINITION_EDEFAULT.equals(definition);
+ case CppPackage.CPP_ARRAY__BASE_PROPERTY:
+ return base_property != null;
+ case CppPackage.CPP_ARRAY__BASE_ASSOCIATION:
+ return base_association != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (definition: ");
+ result.append(definition);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppArrayImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppConstImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppConstImpl.java
new file mode 100644
index 00000000000..ebc2284c757
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppConstImpl.java
@@ -0,0 +1,280 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppConst;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Const</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppConstImpl#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.impl.CppConstImpl#getBase_property <em>Base property</em>}</li>
+ * <li>{@link Cpp.impl.CppConstImpl#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppConstImpl extends EObjectImpl implements CppConst {
+ /**
+ * The cached value of the '{@link #getBase_parameter() <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_parameter()
+ * @generated
+ * @ordered
+ */
+ protected Parameter base_parameter;
+
+ /**
+ * The cached value of the '{@link #getBase_property() <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_property;
+
+ /**
+ * The cached value of the '{@link #getBase_operation() <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_operation()
+ * @generated
+ * @ordered
+ */
+ protected Operation base_operation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppConstImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_CONST;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter getBase_parameter() {
+ if (base_parameter != null && base_parameter.eIsProxy()) {
+ InternalEObject oldBase_parameter = (InternalEObject)base_parameter;
+ base_parameter = (Parameter)eResolveProxy(oldBase_parameter);
+ if (base_parameter != oldBase_parameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_CONST__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+ }
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter basicGetBase_parameter() {
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_parameter(Parameter newBase_parameter) {
+ Parameter oldBase_parameter = base_parameter;
+ base_parameter = newBase_parameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_CONST__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_property() {
+ if (base_property != null && base_property.eIsProxy()) {
+ InternalEObject oldBase_property = (InternalEObject)base_property;
+ base_property = (Property)eResolveProxy(oldBase_property);
+ if (base_property != oldBase_property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_CONST__BASE_PROPERTY, oldBase_property, base_property));
+ }
+ }
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_property() {
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_property(Property newBase_property) {
+ Property oldBase_property = base_property;
+ base_property = newBase_property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_CONST__BASE_PROPERTY, oldBase_property, base_property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation getBase_operation() {
+ if (base_operation != null && base_operation.eIsProxy()) {
+ InternalEObject oldBase_operation = (InternalEObject)base_operation;
+ base_operation = (Operation)eResolveProxy(oldBase_operation);
+ if (base_operation != oldBase_operation) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_CONST__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+ }
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation basicGetBase_operation() {
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_operation(Operation newBase_operation) {
+ Operation oldBase_operation = base_operation;
+ base_operation = newBase_operation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_CONST__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_CONST__BASE_PARAMETER:
+ if (resolve) return getBase_parameter();
+ return basicGetBase_parameter();
+ case CppPackage.CPP_CONST__BASE_PROPERTY:
+ if (resolve) return getBase_property();
+ return basicGetBase_property();
+ case CppPackage.CPP_CONST__BASE_OPERATION:
+ if (resolve) return getBase_operation();
+ return basicGetBase_operation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_CONST__BASE_PARAMETER:
+ setBase_parameter((Parameter)newValue);
+ return;
+ case CppPackage.CPP_CONST__BASE_PROPERTY:
+ setBase_property((Property)newValue);
+ return;
+ case CppPackage.CPP_CONST__BASE_OPERATION:
+ setBase_operation((Operation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_CONST__BASE_PARAMETER:
+ setBase_parameter((Parameter)null);
+ return;
+ case CppPackage.CPP_CONST__BASE_PROPERTY:
+ setBase_property((Property)null);
+ return;
+ case CppPackage.CPP_CONST__BASE_OPERATION:
+ setBase_operation((Operation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_CONST__BASE_PARAMETER:
+ return base_parameter != null;
+ case CppPackage.CPP_CONST__BASE_PROPERTY:
+ return base_property != null;
+ case CppPackage.CPP_CONST__BASE_OPERATION:
+ return base_operation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CppConstImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppConstInitImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppConstInitImpl.java
new file mode 100644
index 00000000000..4800f9e0d58
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppConstInitImpl.java
@@ -0,0 +1,226 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppConstInit;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Const Init</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppConstInitImpl#getInitialisation <em>Initialisation</em>}</li>
+ * <li>{@link Cpp.impl.CppConstInitImpl#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppConstInitImpl extends EObjectImpl implements CppConstInit {
+ /**
+ * The default value of the '{@link #getInitialisation() <em>Initialisation</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInitialisation()
+ * @generated
+ * @ordered
+ */
+ protected static final String INITIALISATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getInitialisation() <em>Initialisation</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInitialisation()
+ * @generated
+ * @ordered
+ */
+ protected String initialisation = INITIALISATION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_operation() <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_operation()
+ * @generated
+ * @ordered
+ */
+ protected Operation base_operation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppConstInitImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_CONST_INIT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getInitialisation() {
+ return initialisation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setInitialisation(String newInitialisation) {
+ String oldInitialisation = initialisation;
+ initialisation = newInitialisation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_CONST_INIT__INITIALISATION, oldInitialisation, initialisation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation getBase_operation() {
+ if (base_operation != null && base_operation.eIsProxy()) {
+ InternalEObject oldBase_operation = (InternalEObject)base_operation;
+ base_operation = (Operation)eResolveProxy(oldBase_operation);
+ if (base_operation != oldBase_operation) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_CONST_INIT__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+ }
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation basicGetBase_operation() {
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_operation(Operation newBase_operation) {
+ Operation oldBase_operation = base_operation;
+ base_operation = newBase_operation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_CONST_INIT__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_CONST_INIT__INITIALISATION:
+ return getInitialisation();
+ case CppPackage.CPP_CONST_INIT__BASE_OPERATION:
+ if (resolve) return getBase_operation();
+ return basicGetBase_operation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_CONST_INIT__INITIALISATION:
+ setInitialisation((String)newValue);
+ return;
+ case CppPackage.CPP_CONST_INIT__BASE_OPERATION:
+ setBase_operation((Operation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_CONST_INIT__INITIALISATION:
+ setInitialisation(INITIALISATION_EDEFAULT);
+ return;
+ case CppPackage.CPP_CONST_INIT__BASE_OPERATION:
+ setBase_operation((Operation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_CONST_INIT__INITIALISATION:
+ return INITIALISATION_EDEFAULT == null ? initialisation != null : !INITIALISATION_EDEFAULT.equals(initialisation);
+ case CppPackage.CPP_CONST_INIT__BASE_OPERATION:
+ return base_operation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (initialisation: ");
+ result.append(initialisation);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppConstInitImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppDefaultImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppDefaultImpl.java
new file mode 100644
index 00000000000..d81b34ecac8
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppDefaultImpl.java
@@ -0,0 +1,287 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppDefault;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Default</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppDefaultImpl#getValue <em>Value</em>}</li>
+ * <li>{@link Cpp.impl.CppDefaultImpl#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.impl.CppDefaultImpl#getBase_property <em>Base property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppDefaultImpl extends EObjectImpl implements CppDefault {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_parameter() <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_parameter()
+ * @generated
+ * @ordered
+ */
+ protected Parameter base_parameter;
+
+ /**
+ * The cached value of the '{@link #getBase_property() <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_property;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppDefaultImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_DEFAULT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_DEFAULT__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter getBase_parameter() {
+ if (base_parameter != null && base_parameter.eIsProxy()) {
+ InternalEObject oldBase_parameter = (InternalEObject)base_parameter;
+ base_parameter = (Parameter)eResolveProxy(oldBase_parameter);
+ if (base_parameter != oldBase_parameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_DEFAULT__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+ }
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter basicGetBase_parameter() {
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_parameter(Parameter newBase_parameter) {
+ Parameter oldBase_parameter = base_parameter;
+ base_parameter = newBase_parameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_DEFAULT__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_property() {
+ if (base_property != null && base_property.eIsProxy()) {
+ InternalEObject oldBase_property = (InternalEObject)base_property;
+ base_property = (Property)eResolveProxy(oldBase_property);
+ if (base_property != oldBase_property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_DEFAULT__BASE_PROPERTY, oldBase_property, base_property));
+ }
+ }
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_property() {
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_property(Property newBase_property) {
+ Property oldBase_property = base_property;
+ base_property = newBase_property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_DEFAULT__BASE_PROPERTY, oldBase_property, base_property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_DEFAULT__VALUE:
+ return getValue();
+ case CppPackage.CPP_DEFAULT__BASE_PARAMETER:
+ if (resolve) return getBase_parameter();
+ return basicGetBase_parameter();
+ case CppPackage.CPP_DEFAULT__BASE_PROPERTY:
+ if (resolve) return getBase_property();
+ return basicGetBase_property();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_DEFAULT__VALUE:
+ setValue((String)newValue);
+ return;
+ case CppPackage.CPP_DEFAULT__BASE_PARAMETER:
+ setBase_parameter((Parameter)newValue);
+ return;
+ case CppPackage.CPP_DEFAULT__BASE_PROPERTY:
+ setBase_property((Property)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_DEFAULT__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case CppPackage.CPP_DEFAULT__BASE_PARAMETER:
+ setBase_parameter((Parameter)null);
+ return;
+ case CppPackage.CPP_DEFAULT__BASE_PROPERTY:
+ setBase_property((Property)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_DEFAULT__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case CppPackage.CPP_DEFAULT__BASE_PARAMETER:
+ return base_parameter != null;
+ case CppPackage.CPP_DEFAULT__BASE_PROPERTY:
+ return base_property != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppDefaultImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppExternClassImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppExternClassImpl.java
new file mode 100644
index 00000000000..13727e6e45e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppExternClassImpl.java
@@ -0,0 +1,224 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppExternClass;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Extern Class</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppExternClassImpl#getName <em>Name</em>}</li>
+ * <li>{@link Cpp.impl.CppExternClassImpl#getBase_class <em>Base class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppExternClassImpl extends EObjectImpl implements CppExternClass {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_class() <em>Base class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppExternClassImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_EXTERN_CLASS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_EXTERN_CLASS__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_class() {
+ if (base_class != null && base_class.eIsProxy()) {
+ InternalEObject oldBase_class = (InternalEObject)base_class;
+ base_class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_class);
+ if (base_class != oldBase_class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_EXTERN_CLASS__BASE_CLASS, oldBase_class, base_class));
+ }
+ }
+ return base_class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_class() {
+ return base_class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_class(org.eclipse.uml2.uml.Class newBase_class) {
+ org.eclipse.uml2.uml.Class oldBase_class = base_class;
+ base_class = newBase_class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_EXTERN_CLASS__BASE_CLASS, oldBase_class, base_class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_EXTERN_CLASS__NAME:
+ return getName();
+ case CppPackage.CPP_EXTERN_CLASS__BASE_CLASS:
+ if (resolve) return getBase_class();
+ return basicGetBase_class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_EXTERN_CLASS__NAME:
+ setName((String)newValue);
+ return;
+ case CppPackage.CPP_EXTERN_CLASS__BASE_CLASS:
+ setBase_class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_EXTERN_CLASS__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CppPackage.CPP_EXTERN_CLASS__BASE_CLASS:
+ setBase_class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_EXTERN_CLASS__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CppPackage.CPP_EXTERN_CLASS__BASE_CLASS:
+ return base_class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppExternClassImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppExternLibraryImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppExternLibraryImpl.java
new file mode 100644
index 00000000000..ccc2fd9db05
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppExternLibraryImpl.java
@@ -0,0 +1,224 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppExternLibrary;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Extern Library</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppExternLibraryImpl#getName <em>Name</em>}</li>
+ * <li>{@link Cpp.impl.CppExternLibraryImpl#getBase_package <em>Base package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppExternLibraryImpl extends EObjectImpl implements CppExternLibrary {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_package() <em>Base package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_package()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Package base_package;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppExternLibraryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_EXTERN_LIBRARY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_EXTERN_LIBRARY__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package getBase_package() {
+ if (base_package != null && base_package.eIsProxy()) {
+ InternalEObject oldBase_package = (InternalEObject)base_package;
+ base_package = (org.eclipse.uml2.uml.Package)eResolveProxy(oldBase_package);
+ if (base_package != oldBase_package) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_EXTERN_LIBRARY__BASE_PACKAGE, oldBase_package, base_package));
+ }
+ }
+ return base_package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package basicGetBase_package() {
+ return base_package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_package(org.eclipse.uml2.uml.Package newBase_package) {
+ org.eclipse.uml2.uml.Package oldBase_package = base_package;
+ base_package = newBase_package;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_EXTERN_LIBRARY__BASE_PACKAGE, oldBase_package, base_package));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_EXTERN_LIBRARY__NAME:
+ return getName();
+ case CppPackage.CPP_EXTERN_LIBRARY__BASE_PACKAGE:
+ if (resolve) return getBase_package();
+ return basicGetBase_package();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_EXTERN_LIBRARY__NAME:
+ setName((String)newValue);
+ return;
+ case CppPackage.CPP_EXTERN_LIBRARY__BASE_PACKAGE:
+ setBase_package((org.eclipse.uml2.uml.Package)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_EXTERN_LIBRARY__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CppPackage.CPP_EXTERN_LIBRARY__BASE_PACKAGE:
+ setBase_package((org.eclipse.uml2.uml.Package)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_EXTERN_LIBRARY__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CppPackage.CPP_EXTERN_LIBRARY__BASE_PACKAGE:
+ return base_package != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppExternLibraryImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppFactoryImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppFactoryImpl.java
new file mode 100644
index 00000000000..f5345e4b76e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppFactoryImpl.java
@@ -0,0 +1,399 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.*;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import Cpp.CppArray;
+import Cpp.CppConst;
+import Cpp.CppConstInit;
+import Cpp.CppDefault;
+import Cpp.CppExternClass;
+import Cpp.CppExternLibrary;
+import Cpp.CppFactory;
+import Cpp.CppFriend;
+import Cpp.CppInclude;
+import Cpp.CppInit;
+import Cpp.CppInline;
+import Cpp.CppNoCodeGen;
+import Cpp.CppPackage;
+import Cpp.CppPtr;
+import Cpp.CppRef;
+import Cpp.CppRoot;
+import Cpp.CppTemplate;
+import Cpp.CppTemplateBinding;
+import Cpp.CppTemplateParameter;
+import Cpp.CppType;
+import Cpp.CppVirtual;
+import Cpp.CppVisibility;
+import Cpp.CppVisibilityKind;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CppFactoryImpl extends EFactoryImpl implements CppFactory {
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static CppFactory init() {
+ try {
+ CppFactory theCppFactory = (CppFactory)EPackage.Registry.INSTANCE.getEFactory("http://papyrus/CppProfile/1");
+ if (theCppFactory != null) {
+ return theCppFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new CppFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case CppPackage.CPP_PTR: return createCppPtr();
+ case CppPackage.CPP_INCLUDE: return createCppInclude();
+ case CppPackage.MANUAL_GENERATION: return createManualGeneration();
+ case CppPackage.CPP_ARRAY: return createCppArray();
+ case CppPackage.CPP_CONST: return createCppConst();
+ case CppPackage.CPP_DEFAULT: return createCppDefault();
+ case CppPackage.CPP_REF: return createCppRef();
+ case CppPackage.CPP_EXTERN_CLASS: return createCppExternClass();
+ case CppPackage.CPP_EXTERN_LIBRARY: return createCppExternLibrary();
+ case CppPackage.CPP_ROOT: return createCppRoot();
+ case CppPackage.CPP_NO_CODE_GEN: return createCppNoCodeGen();
+ case CppPackage.CPP_CONST_INIT: return createCppConstInit();
+ case CppPackage.CPP_FRIEND: return createCppFriend();
+ case CppPackage.CPP_INLINE: return createCppInline();
+ case CppPackage.CPP_VIRTUAL: return createCppVirtual();
+ case CppPackage.CPP_TYPE: return createCppType();
+ case CppPackage.CPP_VISIBILITY: return createCppVisibility();
+ case CppPackage.CPP_INIT: return createCppInit();
+ case CppPackage.CPP_TEMPLATE: return createCppTemplate();
+ case CppPackage.CPP_TEMPLATE_BINDING: return createCppTemplateBinding();
+ case CppPackage.CPP_TEMPLATE_PARAMETER: return createCppTemplateParameter();
+ case CppPackage.UNION: return createUnion();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case CppPackage.CPP_VISIBILITY_KIND:
+ return createCppVisibilityKindFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case CppPackage.CPP_VISIBILITY_KIND:
+ return convertCppVisibilityKindToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppArray createCppArray() {
+ CppArrayImpl cppArray = new CppArrayImpl();
+ return cppArray;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppConst createCppConst() {
+ CppConstImpl cppConst = new CppConstImpl();
+ return cppConst;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppDefault createCppDefault() {
+ CppDefaultImpl cppDefault = new CppDefaultImpl();
+ return cppDefault;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppPtr createCppPtr() {
+ CppPtrImpl cppPtr = new CppPtrImpl();
+ return cppPtr;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppRef createCppRef() {
+ CppRefImpl cppRef = new CppRefImpl();
+ return cppRef;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppExternClass createCppExternClass() {
+ CppExternClassImpl cppExternClass = new CppExternClassImpl();
+ return cppExternClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppExternLibrary createCppExternLibrary() {
+ CppExternLibraryImpl cppExternLibrary = new CppExternLibraryImpl();
+ return cppExternLibrary;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppInclude createCppInclude() {
+ CppIncludeImpl cppInclude = new CppIncludeImpl();
+ return cppInclude;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ManualGeneration createManualGeneration() {
+ ManualGenerationImpl manualGeneration = new ManualGenerationImpl();
+ return manualGeneration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppRoot createCppRoot() {
+ CppRootImpl cppRoot = new CppRootImpl();
+ return cppRoot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppNoCodeGen createCppNoCodeGen() {
+ CppNoCodeGenImpl cppNoCodeGen = new CppNoCodeGenImpl();
+ return cppNoCodeGen;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppConstInit createCppConstInit() {
+ CppConstInitImpl cppConstInit = new CppConstInitImpl();
+ return cppConstInit;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppFriend createCppFriend() {
+ CppFriendImpl cppFriend = new CppFriendImpl();
+ return cppFriend;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppInline createCppInline() {
+ CppInlineImpl cppInline = new CppInlineImpl();
+ return cppInline;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppVirtual createCppVirtual() {
+ CppVirtualImpl cppVirtual = new CppVirtualImpl();
+ return cppVirtual;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppType createCppType() {
+ CppTypeImpl cppType = new CppTypeImpl();
+ return cppType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppVisibility createCppVisibility() {
+ CppVisibilityImpl cppVisibility = new CppVisibilityImpl();
+ return cppVisibility;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppInit createCppInit() {
+ CppInitImpl cppInit = new CppInitImpl();
+ return cppInit;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppTemplate createCppTemplate() {
+ CppTemplateImpl cppTemplate = new CppTemplateImpl();
+ return cppTemplate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppTemplateBinding createCppTemplateBinding() {
+ CppTemplateBindingImpl cppTemplateBinding = new CppTemplateBindingImpl();
+ return cppTemplateBinding;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppTemplateParameter createCppTemplateParameter() {
+ CppTemplateParameterImpl cppTemplateParameter = new CppTemplateParameterImpl();
+ return cppTemplateParameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Union createUnion() {
+ UnionImpl union = new UnionImpl();
+ return union;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppVisibilityKind createCppVisibilityKindFromString(EDataType eDataType, String initialValue) {
+ CppVisibilityKind result = CppVisibilityKind.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertCppVisibilityKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppPackage getCppPackage() {
+ return (CppPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static CppPackage getPackage() {
+ return CppPackage.eINSTANCE;
+ }
+
+} //CppFactoryImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppFriendImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppFriendImpl.java
new file mode 100644
index 00000000000..6ba2782df0e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppFriendImpl.java
@@ -0,0 +1,219 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppFriend;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Friend</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppFriendImpl#getBase_dependency <em>Base dependency</em>}</li>
+ * <li>{@link Cpp.impl.CppFriendImpl#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppFriendImpl extends EObjectImpl implements CppFriend {
+ /**
+ * The cached value of the '{@link #getBase_dependency() <em>Base dependency</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_dependency()
+ * @generated
+ * @ordered
+ */
+ protected Dependency base_dependency;
+
+ /**
+ * The cached value of the '{@link #getBase_operation() <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_operation()
+ * @generated
+ * @ordered
+ */
+ protected Operation base_operation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppFriendImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_FRIEND;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Dependency getBase_dependency() {
+ if (base_dependency != null && base_dependency.eIsProxy()) {
+ InternalEObject oldBase_dependency = (InternalEObject)base_dependency;
+ base_dependency = (Dependency)eResolveProxy(oldBase_dependency);
+ if (base_dependency != oldBase_dependency) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_FRIEND__BASE_DEPENDENCY, oldBase_dependency, base_dependency));
+ }
+ }
+ return base_dependency;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Dependency basicGetBase_dependency() {
+ return base_dependency;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_dependency(Dependency newBase_dependency) {
+ Dependency oldBase_dependency = base_dependency;
+ base_dependency = newBase_dependency;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_FRIEND__BASE_DEPENDENCY, oldBase_dependency, base_dependency));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation getBase_operation() {
+ if (base_operation != null && base_operation.eIsProxy()) {
+ InternalEObject oldBase_operation = (InternalEObject)base_operation;
+ base_operation = (Operation)eResolveProxy(oldBase_operation);
+ if (base_operation != oldBase_operation) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_FRIEND__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+ }
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation basicGetBase_operation() {
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_operation(Operation newBase_operation) {
+ Operation oldBase_operation = base_operation;
+ base_operation = newBase_operation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_FRIEND__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_FRIEND__BASE_DEPENDENCY:
+ if (resolve) return getBase_dependency();
+ return basicGetBase_dependency();
+ case CppPackage.CPP_FRIEND__BASE_OPERATION:
+ if (resolve) return getBase_operation();
+ return basicGetBase_operation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_FRIEND__BASE_DEPENDENCY:
+ setBase_dependency((Dependency)newValue);
+ return;
+ case CppPackage.CPP_FRIEND__BASE_OPERATION:
+ setBase_operation((Operation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_FRIEND__BASE_DEPENDENCY:
+ setBase_dependency((Dependency)null);
+ return;
+ case CppPackage.CPP_FRIEND__BASE_OPERATION:
+ setBase_operation((Operation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_FRIEND__BASE_DEPENDENCY:
+ return base_dependency != null;
+ case CppPackage.CPP_FRIEND__BASE_OPERATION:
+ return base_operation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CppFriendImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppIncludeImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppIncludeImpl.java
new file mode 100644
index 00000000000..3e0210ca542
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppIncludeImpl.java
@@ -0,0 +1,454 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppInclude;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.PackageImport;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Include</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppIncludeImpl#getBody <em>Body</em>}</li>
+ * <li>{@link Cpp.impl.CppIncludeImpl#getHeader <em>Header</em>}</li>
+ * <li>{@link Cpp.impl.CppIncludeImpl#getBase_package <em>Base package</em>}</li>
+ * <li>{@link Cpp.impl.CppIncludeImpl#getBase_class <em>Base class</em>}</li>
+ * <li>{@link Cpp.impl.CppIncludeImpl#getBase_PackageImport <em>Base Package Import</em>}</li>
+ * <li>{@link Cpp.impl.CppIncludeImpl#getPreBody <em>Pre Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppIncludeImpl extends EObjectImpl implements CppInclude {
+ /**
+ * The default value of the '{@link #getBody() <em>Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBody()
+ * @generated
+ * @ordered
+ */
+ protected static final String BODY_EDEFAULT = "";
+
+ /**
+ * The cached value of the '{@link #getBody() <em>Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBody()
+ * @generated
+ * @ordered
+ */
+ protected String body = BODY_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getHeader() <em>Header</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHeader()
+ * @generated
+ * @ordered
+ */
+ protected static final String HEADER_EDEFAULT = "";
+
+ /**
+ * The cached value of the '{@link #getHeader() <em>Header</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getHeader()
+ * @generated
+ * @ordered
+ */
+ protected String header = HEADER_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_package() <em>Base package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_package()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Package base_package;
+
+ /**
+ * The cached value of the '{@link #getBase_class() <em>Base class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_class;
+
+ /**
+ * The cached value of the '{@link #getBase_PackageImport() <em>Base Package Import</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_PackageImport()
+ * @generated
+ * @ordered
+ */
+ protected PackageImport base_PackageImport;
+
+ /**
+ * The default value of the '{@link #getPreBody() <em>Pre Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPreBody()
+ * @generated
+ * @ordered
+ */
+ protected static final String PRE_BODY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getPreBody() <em>Pre Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getPreBody()
+ * @generated
+ * @ordered
+ */
+ protected String preBody = PRE_BODY_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppIncludeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_INCLUDE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getBody() {
+ return body;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBody(String newBody) {
+ String oldBody = body;
+ body = newBody;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INCLUDE__BODY, oldBody, body));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getHeader() {
+ return header;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setHeader(String newHeader) {
+ String oldHeader = header;
+ header = newHeader;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INCLUDE__HEADER, oldHeader, header));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package getBase_package() {
+ if (base_package != null && base_package.eIsProxy()) {
+ InternalEObject oldBase_package = (InternalEObject)base_package;
+ base_package = (org.eclipse.uml2.uml.Package)eResolveProxy(oldBase_package);
+ if (base_package != oldBase_package) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_INCLUDE__BASE_PACKAGE, oldBase_package, base_package));
+ }
+ }
+ return base_package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package basicGetBase_package() {
+ return base_package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_package(org.eclipse.uml2.uml.Package newBase_package) {
+ org.eclipse.uml2.uml.Package oldBase_package = base_package;
+ base_package = newBase_package;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INCLUDE__BASE_PACKAGE, oldBase_package, base_package));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_class() {
+ if (base_class != null && base_class.eIsProxy()) {
+ InternalEObject oldBase_class = (InternalEObject)base_class;
+ base_class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_class);
+ if (base_class != oldBase_class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_INCLUDE__BASE_CLASS, oldBase_class, base_class));
+ }
+ }
+ return base_class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_class() {
+ return base_class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_class(org.eclipse.uml2.uml.Class newBase_class) {
+ org.eclipse.uml2.uml.Class oldBase_class = base_class;
+ base_class = newBase_class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INCLUDE__BASE_CLASS, oldBase_class, base_class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PackageImport getBase_PackageImport() {
+ if (base_PackageImport != null && base_PackageImport.eIsProxy()) {
+ InternalEObject oldBase_PackageImport = (InternalEObject)base_PackageImport;
+ base_PackageImport = (PackageImport)eResolveProxy(oldBase_PackageImport);
+ if (base_PackageImport != oldBase_PackageImport) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_INCLUDE__BASE_PACKAGE_IMPORT, oldBase_PackageImport, base_PackageImport));
+ }
+ }
+ return base_PackageImport;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PackageImport basicGetBase_PackageImport() {
+ return base_PackageImport;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_PackageImport(PackageImport newBase_PackageImport) {
+ PackageImport oldBase_PackageImport = base_PackageImport;
+ base_PackageImport = newBase_PackageImport;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INCLUDE__BASE_PACKAGE_IMPORT, oldBase_PackageImport, base_PackageImport));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getPreBody() {
+ return preBody;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setPreBody(String newPreBody) {
+ String oldPreBody = preBody;
+ preBody = newPreBody;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INCLUDE__PRE_BODY, oldPreBody, preBody));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_INCLUDE__BODY:
+ return getBody();
+ case CppPackage.CPP_INCLUDE__HEADER:
+ return getHeader();
+ case CppPackage.CPP_INCLUDE__BASE_PACKAGE:
+ if (resolve) return getBase_package();
+ return basicGetBase_package();
+ case CppPackage.CPP_INCLUDE__BASE_CLASS:
+ if (resolve) return getBase_class();
+ return basicGetBase_class();
+ case CppPackage.CPP_INCLUDE__BASE_PACKAGE_IMPORT:
+ if (resolve) return getBase_PackageImport();
+ return basicGetBase_PackageImport();
+ case CppPackage.CPP_INCLUDE__PRE_BODY:
+ return getPreBody();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_INCLUDE__BODY:
+ setBody((String)newValue);
+ return;
+ case CppPackage.CPP_INCLUDE__HEADER:
+ setHeader((String)newValue);
+ return;
+ case CppPackage.CPP_INCLUDE__BASE_PACKAGE:
+ setBase_package((org.eclipse.uml2.uml.Package)newValue);
+ return;
+ case CppPackage.CPP_INCLUDE__BASE_CLASS:
+ setBase_class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ case CppPackage.CPP_INCLUDE__BASE_PACKAGE_IMPORT:
+ setBase_PackageImport((PackageImport)newValue);
+ return;
+ case CppPackage.CPP_INCLUDE__PRE_BODY:
+ setPreBody((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_INCLUDE__BODY:
+ setBody(BODY_EDEFAULT);
+ return;
+ case CppPackage.CPP_INCLUDE__HEADER:
+ setHeader(HEADER_EDEFAULT);
+ return;
+ case CppPackage.CPP_INCLUDE__BASE_PACKAGE:
+ setBase_package((org.eclipse.uml2.uml.Package)null);
+ return;
+ case CppPackage.CPP_INCLUDE__BASE_CLASS:
+ setBase_class((org.eclipse.uml2.uml.Class)null);
+ return;
+ case CppPackage.CPP_INCLUDE__BASE_PACKAGE_IMPORT:
+ setBase_PackageImport((PackageImport)null);
+ return;
+ case CppPackage.CPP_INCLUDE__PRE_BODY:
+ setPreBody(PRE_BODY_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_INCLUDE__BODY:
+ return BODY_EDEFAULT == null ? body != null : !BODY_EDEFAULT.equals(body);
+ case CppPackage.CPP_INCLUDE__HEADER:
+ return HEADER_EDEFAULT == null ? header != null : !HEADER_EDEFAULT.equals(header);
+ case CppPackage.CPP_INCLUDE__BASE_PACKAGE:
+ return base_package != null;
+ case CppPackage.CPP_INCLUDE__BASE_CLASS:
+ return base_class != null;
+ case CppPackage.CPP_INCLUDE__BASE_PACKAGE_IMPORT:
+ return base_PackageImport != null;
+ case CppPackage.CPP_INCLUDE__PRE_BODY:
+ return PRE_BODY_EDEFAULT == null ? preBody != null : !PRE_BODY_EDEFAULT.equals(preBody);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (body: ");
+ result.append(body);
+ result.append(", header: ");
+ result.append(header);
+ result.append(", preBody: ");
+ result.append(preBody);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppIncludeImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppInitImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppInitImpl.java
new file mode 100644
index 00000000000..743b2692a97
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppInitImpl.java
@@ -0,0 +1,226 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppInit;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.EnumerationLiteral;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Init</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppInitImpl#getValue <em>Value</em>}</li>
+ * <li>{@link Cpp.impl.CppInitImpl#getBase_enumerationliteral <em>Base enumerationliteral</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppInitImpl extends EObjectImpl implements CppInit {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final int VALUE_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected int value = VALUE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_enumerationliteral() <em>Base enumerationliteral</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_enumerationliteral()
+ * @generated
+ * @ordered
+ */
+ protected EnumerationLiteral base_enumerationliteral;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppInitImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_INIT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(int newValue) {
+ int oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INIT__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EnumerationLiteral getBase_enumerationliteral() {
+ if (base_enumerationliteral != null && base_enumerationliteral.eIsProxy()) {
+ InternalEObject oldBase_enumerationliteral = (InternalEObject)base_enumerationliteral;
+ base_enumerationliteral = (EnumerationLiteral)eResolveProxy(oldBase_enumerationliteral);
+ if (base_enumerationliteral != oldBase_enumerationliteral) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_INIT__BASE_ENUMERATIONLITERAL, oldBase_enumerationliteral, base_enumerationliteral));
+ }
+ }
+ return base_enumerationliteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EnumerationLiteral basicGetBase_enumerationliteral() {
+ return base_enumerationliteral;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_enumerationliteral(EnumerationLiteral newBase_enumerationliteral) {
+ EnumerationLiteral oldBase_enumerationliteral = base_enumerationliteral;
+ base_enumerationliteral = newBase_enumerationliteral;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INIT__BASE_ENUMERATIONLITERAL, oldBase_enumerationliteral, base_enumerationliteral));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_INIT__VALUE:
+ return getValue();
+ case CppPackage.CPP_INIT__BASE_ENUMERATIONLITERAL:
+ if (resolve) return getBase_enumerationliteral();
+ return basicGetBase_enumerationliteral();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_INIT__VALUE:
+ setValue((Integer)newValue);
+ return;
+ case CppPackage.CPP_INIT__BASE_ENUMERATIONLITERAL:
+ setBase_enumerationliteral((EnumerationLiteral)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_INIT__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case CppPackage.CPP_INIT__BASE_ENUMERATIONLITERAL:
+ setBase_enumerationliteral((EnumerationLiteral)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_INIT__VALUE:
+ return value != VALUE_EDEFAULT;
+ case CppPackage.CPP_INIT__BASE_ENUMERATIONLITERAL:
+ return base_enumerationliteral != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppInitImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppInlineImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppInlineImpl.java
new file mode 100644
index 00000000000..aa1e57239b0
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppInlineImpl.java
@@ -0,0 +1,158 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppInline;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Inline</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppInlineImpl#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppInlineImpl extends EObjectImpl implements CppInline {
+ /**
+ * The cached value of the '{@link #getBase_operation() <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_operation()
+ * @generated
+ * @ordered
+ */
+ protected Operation base_operation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppInlineImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_INLINE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation getBase_operation() {
+ if (base_operation != null && base_operation.eIsProxy()) {
+ InternalEObject oldBase_operation = (InternalEObject)base_operation;
+ base_operation = (Operation)eResolveProxy(oldBase_operation);
+ if (base_operation != oldBase_operation) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_INLINE__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+ }
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation basicGetBase_operation() {
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_operation(Operation newBase_operation) {
+ Operation oldBase_operation = base_operation;
+ base_operation = newBase_operation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_INLINE__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_INLINE__BASE_OPERATION:
+ if (resolve) return getBase_operation();
+ return basicGetBase_operation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_INLINE__BASE_OPERATION:
+ setBase_operation((Operation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_INLINE__BASE_OPERATION:
+ setBase_operation((Operation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_INLINE__BASE_OPERATION:
+ return base_operation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CppInlineImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppNoCodeGenImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppNoCodeGenImpl.java
new file mode 100644
index 00000000000..6a36591b52c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppNoCodeGenImpl.java
@@ -0,0 +1,158 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppNoCodeGen;
+import Cpp.CppPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>No Code Gen</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppNoCodeGenImpl#getBase_element <em>Base element</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppNoCodeGenImpl extends EObjectImpl implements CppNoCodeGen {
+ /**
+ * The cached value of the '{@link #getBase_element() <em>Base element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_element()
+ * @generated
+ * @ordered
+ */
+ protected Element base_element;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppNoCodeGenImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_NO_CODE_GEN;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getBase_element() {
+ if (base_element != null && base_element.eIsProxy()) {
+ InternalEObject oldBase_element = (InternalEObject)base_element;
+ base_element = (Element)eResolveProxy(oldBase_element);
+ if (base_element != oldBase_element) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_NO_CODE_GEN__BASE_ELEMENT, oldBase_element, base_element));
+ }
+ }
+ return base_element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element basicGetBase_element() {
+ return base_element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_element(Element newBase_element) {
+ Element oldBase_element = base_element;
+ base_element = newBase_element;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_NO_CODE_GEN__BASE_ELEMENT, oldBase_element, base_element));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_NO_CODE_GEN__BASE_ELEMENT:
+ if (resolve) return getBase_element();
+ return basicGetBase_element();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_NO_CODE_GEN__BASE_ELEMENT:
+ setBase_element((Element)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_NO_CODE_GEN__BASE_ELEMENT:
+ setBase_element((Element)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_NO_CODE_GEN__BASE_ELEMENT:
+ return base_element != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CppNoCodeGenImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppPackageImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppPackageImpl.java
new file mode 100644
index 00000000000..f00bdd2c22c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppPackageImpl.java
@@ -0,0 +1,1170 @@
+/**
+ */
+package Cpp.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.uml2.types.TypesPackage;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import Cpp.CppArray;
+import Cpp.CppConst;
+import Cpp.CppConstInit;
+import Cpp.CppDefault;
+import Cpp.CppExternClass;
+import Cpp.CppExternLibrary;
+import Cpp.CppFactory;
+import Cpp.CppFriend;
+import Cpp.CppInclude;
+import Cpp.CppInit;
+import Cpp.CppInline;
+import Cpp.CppNoCodeGen;
+import Cpp.CppPackage;
+import Cpp.CppPtr;
+import Cpp.CppRef;
+import Cpp.CppRoot;
+import Cpp.CppTemplate;
+import Cpp.CppTemplateBinding;
+import Cpp.CppTemplateParameter;
+import Cpp.CppType;
+import Cpp.CppVirtual;
+import Cpp.CppVisibility;
+import Cpp.CppVisibilityKind;
+import Cpp.ManualGeneration;
+import Cpp.Union;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CppPackageImpl extends EPackageImpl implements CppPackage {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppArrayEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppConstEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppDefaultEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppPtrEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppRefEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppExternClassEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppExternLibraryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppIncludeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass manualGenerationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppRootEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppNoCodeGenEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppConstInitEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppFriendEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppInlineEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppVirtualEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppTypeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppVisibilityEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppInitEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppTemplateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppTemplateBindingEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppTemplateParameterEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass unionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum cppVisibilityKindEEnum = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see Cpp.CppPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private CppPackageImpl() {
+ super(eNS_URI, CppFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link CppPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static CppPackage init() {
+ if (isInited) return (CppPackage)EPackage.Registry.INSTANCE.getEPackage(CppPackage.eNS_URI);
+
+ // Obtain or create and register package
+ CppPackageImpl theCppPackage = (CppPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof CppPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new CppPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theCppPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theCppPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theCppPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(CppPackage.eNS_URI, theCppPackage);
+ return theCppPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppArray() {
+ return cppArrayEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppArray_Base_parameter() {
+ return (EReference)cppArrayEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppArray_Definition() {
+ return (EAttribute)cppArrayEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppArray_Base_property() {
+ return (EReference)cppArrayEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppArray_Base_association() {
+ return (EReference)cppArrayEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppConst() {
+ return cppConstEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppConst_Base_parameter() {
+ return (EReference)cppConstEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppConst_Base_property() {
+ return (EReference)cppConstEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppConst_Base_operation() {
+ return (EReference)cppConstEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppDefault() {
+ return cppDefaultEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppDefault_Value() {
+ return (EAttribute)cppDefaultEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppDefault_Base_parameter() {
+ return (EReference)cppDefaultEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppDefault_Base_property() {
+ return (EReference)cppDefaultEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppPtr() {
+ return cppPtrEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppPtr_Base_parameter() {
+ return (EReference)cppPtrEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppPtr_Base_property() {
+ return (EReference)cppPtrEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppPtr_Declaration() {
+ return (EAttribute)cppPtrEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppRef() {
+ return cppRefEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppRef_Base_parameter() {
+ return (EReference)cppRefEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppRef_Base_property() {
+ return (EReference)cppRefEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppExternClass() {
+ return cppExternClassEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppExternClass_Name() {
+ return (EAttribute)cppExternClassEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppExternClass_Base_class() {
+ return (EReference)cppExternClassEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppExternLibrary() {
+ return cppExternLibraryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppExternLibrary_Name() {
+ return (EAttribute)cppExternLibraryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppExternLibrary_Base_package() {
+ return (EReference)cppExternLibraryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppInclude() {
+ return cppIncludeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppInclude_Body() {
+ return (EAttribute)cppIncludeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppInclude_Header() {
+ return (EAttribute)cppIncludeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppInclude_Base_package() {
+ return (EReference)cppIncludeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppInclude_Base_class() {
+ return (EReference)cppIncludeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppInclude_Base_PackageImport() {
+ return (EReference)cppIncludeEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppInclude_PreBody() {
+ return (EAttribute)cppIncludeEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getManualGeneration() {
+ return manualGenerationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getManualGeneration_ExtensionBody() {
+ return (EAttribute)manualGenerationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getManualGeneration_Base_Class() {
+ return (EReference)manualGenerationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppRoot() {
+ return cppRootEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppRoot_Base_package() {
+ return (EReference)cppRootEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppNoCodeGen() {
+ return cppNoCodeGenEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppNoCodeGen_Base_element() {
+ return (EReference)cppNoCodeGenEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppConstInit() {
+ return cppConstInitEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppConstInit_Initialisation() {
+ return (EAttribute)cppConstInitEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppConstInit_Base_operation() {
+ return (EReference)cppConstInitEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppFriend() {
+ return cppFriendEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppFriend_Base_dependency() {
+ return (EReference)cppFriendEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppFriend_Base_operation() {
+ return (EReference)cppFriendEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppInline() {
+ return cppInlineEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppInline_Base_operation() {
+ return (EReference)cppInlineEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppVirtual() {
+ return cppVirtualEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppVirtual_Base_operation() {
+ return (EReference)cppVirtualEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppType() {
+ return cppTypeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppType_Definition() {
+ return (EAttribute)cppTypeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppType_Base_primitivetype() {
+ return (EReference)cppTypeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppVisibility() {
+ return cppVisibilityEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppVisibility_Value() {
+ return (EAttribute)cppVisibilityEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppVisibility_Base_generalization() {
+ return (EReference)cppVisibilityEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppInit() {
+ return cppInitEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppInit_Value() {
+ return (EAttribute)cppInitEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppInit_Base_enumerationliteral() {
+ return (EReference)cppInitEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppTemplate() {
+ return cppTemplateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppTemplate_Declaration() {
+ return (EAttribute)cppTemplateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppTemplate_Base_class() {
+ return (EReference)cppTemplateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppTemplateBinding() {
+ return cppTemplateBindingEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppTemplateBinding_Binding() {
+ return (EAttribute)cppTemplateBindingEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppTemplateBinding_Base_templatebinding() {
+ return (EReference)cppTemplateBindingEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppTemplateParameter() {
+ return cppTemplateParameterEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppTemplateParameter_Name() {
+ return (EAttribute)cppTemplateParameterEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCppTemplateParameter_Base_templateparameter() {
+ return (EReference)cppTemplateParameterEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getUnion() {
+ return unionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUnion_Base_DataType() {
+ return (EReference)unionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getCppVisibilityKind() {
+ return cppVisibilityKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppFactory getCppFactory() {
+ return (CppFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ cppPtrEClass = createEClass(CPP_PTR);
+ createEReference(cppPtrEClass, CPP_PTR__BASE_PARAMETER);
+ createEReference(cppPtrEClass, CPP_PTR__BASE_PROPERTY);
+ createEAttribute(cppPtrEClass, CPP_PTR__DECLARATION);
+
+ cppIncludeEClass = createEClass(CPP_INCLUDE);
+ createEAttribute(cppIncludeEClass, CPP_INCLUDE__BODY);
+ createEAttribute(cppIncludeEClass, CPP_INCLUDE__HEADER);
+ createEReference(cppIncludeEClass, CPP_INCLUDE__BASE_PACKAGE);
+ createEReference(cppIncludeEClass, CPP_INCLUDE__BASE_CLASS);
+ createEReference(cppIncludeEClass, CPP_INCLUDE__BASE_PACKAGE_IMPORT);
+ createEAttribute(cppIncludeEClass, CPP_INCLUDE__PRE_BODY);
+
+ manualGenerationEClass = createEClass(MANUAL_GENERATION);
+ createEAttribute(manualGenerationEClass, MANUAL_GENERATION__EXTENSION_BODY);
+ createEReference(manualGenerationEClass, MANUAL_GENERATION__BASE_CLASS);
+
+ cppArrayEClass = createEClass(CPP_ARRAY);
+ createEReference(cppArrayEClass, CPP_ARRAY__BASE_PARAMETER);
+ createEAttribute(cppArrayEClass, CPP_ARRAY__DEFINITION);
+ createEReference(cppArrayEClass, CPP_ARRAY__BASE_PROPERTY);
+ createEReference(cppArrayEClass, CPP_ARRAY__BASE_ASSOCIATION);
+
+ cppConstEClass = createEClass(CPP_CONST);
+ createEReference(cppConstEClass, CPP_CONST__BASE_PARAMETER);
+ createEReference(cppConstEClass, CPP_CONST__BASE_PROPERTY);
+ createEReference(cppConstEClass, CPP_CONST__BASE_OPERATION);
+
+ cppDefaultEClass = createEClass(CPP_DEFAULT);
+ createEAttribute(cppDefaultEClass, CPP_DEFAULT__VALUE);
+ createEReference(cppDefaultEClass, CPP_DEFAULT__BASE_PARAMETER);
+ createEReference(cppDefaultEClass, CPP_DEFAULT__BASE_PROPERTY);
+
+ cppRefEClass = createEClass(CPP_REF);
+ createEReference(cppRefEClass, CPP_REF__BASE_PARAMETER);
+ createEReference(cppRefEClass, CPP_REF__BASE_PROPERTY);
+
+ cppExternClassEClass = createEClass(CPP_EXTERN_CLASS);
+ createEAttribute(cppExternClassEClass, CPP_EXTERN_CLASS__NAME);
+ createEReference(cppExternClassEClass, CPP_EXTERN_CLASS__BASE_CLASS);
+
+ cppExternLibraryEClass = createEClass(CPP_EXTERN_LIBRARY);
+ createEAttribute(cppExternLibraryEClass, CPP_EXTERN_LIBRARY__NAME);
+ createEReference(cppExternLibraryEClass, CPP_EXTERN_LIBRARY__BASE_PACKAGE);
+
+ cppRootEClass = createEClass(CPP_ROOT);
+ createEReference(cppRootEClass, CPP_ROOT__BASE_PACKAGE);
+
+ cppNoCodeGenEClass = createEClass(CPP_NO_CODE_GEN);
+ createEReference(cppNoCodeGenEClass, CPP_NO_CODE_GEN__BASE_ELEMENT);
+
+ cppConstInitEClass = createEClass(CPP_CONST_INIT);
+ createEAttribute(cppConstInitEClass, CPP_CONST_INIT__INITIALISATION);
+ createEReference(cppConstInitEClass, CPP_CONST_INIT__BASE_OPERATION);
+
+ cppFriendEClass = createEClass(CPP_FRIEND);
+ createEReference(cppFriendEClass, CPP_FRIEND__BASE_DEPENDENCY);
+ createEReference(cppFriendEClass, CPP_FRIEND__BASE_OPERATION);
+
+ cppInlineEClass = createEClass(CPP_INLINE);
+ createEReference(cppInlineEClass, CPP_INLINE__BASE_OPERATION);
+
+ cppVirtualEClass = createEClass(CPP_VIRTUAL);
+ createEReference(cppVirtualEClass, CPP_VIRTUAL__BASE_OPERATION);
+
+ cppTypeEClass = createEClass(CPP_TYPE);
+ createEAttribute(cppTypeEClass, CPP_TYPE__DEFINITION);
+ createEReference(cppTypeEClass, CPP_TYPE__BASE_PRIMITIVETYPE);
+
+ cppVisibilityEClass = createEClass(CPP_VISIBILITY);
+ createEAttribute(cppVisibilityEClass, CPP_VISIBILITY__VALUE);
+ createEReference(cppVisibilityEClass, CPP_VISIBILITY__BASE_GENERALIZATION);
+
+ cppInitEClass = createEClass(CPP_INIT);
+ createEAttribute(cppInitEClass, CPP_INIT__VALUE);
+ createEReference(cppInitEClass, CPP_INIT__BASE_ENUMERATIONLITERAL);
+
+ cppTemplateEClass = createEClass(CPP_TEMPLATE);
+ createEAttribute(cppTemplateEClass, CPP_TEMPLATE__DECLARATION);
+ createEReference(cppTemplateEClass, CPP_TEMPLATE__BASE_CLASS);
+
+ cppTemplateBindingEClass = createEClass(CPP_TEMPLATE_BINDING);
+ createEAttribute(cppTemplateBindingEClass, CPP_TEMPLATE_BINDING__BINDING);
+ createEReference(cppTemplateBindingEClass, CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING);
+
+ cppTemplateParameterEClass = createEClass(CPP_TEMPLATE_PARAMETER);
+ createEAttribute(cppTemplateParameterEClass, CPP_TEMPLATE_PARAMETER__NAME);
+ createEReference(cppTemplateParameterEClass, CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER);
+
+ unionEClass = createEClass(UNION);
+ createEReference(unionEClass, UNION__BASE_DATA_TYPE);
+
+ // Create enums
+ cppVisibilityKindEEnum = createEEnum(CPP_VISIBILITY_KIND);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+ TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(cppPtrEClass, CppPtr.class, "CppPtr", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppPtr_Base_parameter(), theUMLPackage.getParameter(), null, "base_parameter", null, 1, 1, CppPtr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppPtr_Base_property(), theUMLPackage.getProperty(), null, "base_property", null, 1, 1, CppPtr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCppPtr_Declaration(), theTypesPackage.getString(), "declaration", null, 1, 1, CppPtr.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppIncludeEClass, CppInclude.class, "CppInclude", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppInclude_Body(), theTypesPackage.getString(), "body", "", 1, 1, CppInclude.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCppInclude_Header(), theTypesPackage.getString(), "header", "", 1, 1, CppInclude.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppInclude_Base_package(), theUMLPackage.getPackage(), null, "base_package", null, 1, 1, CppInclude.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppInclude_Base_class(), theUMLPackage.getClass_(), null, "base_class", null, 1, 1, CppInclude.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppInclude_Base_PackageImport(), theUMLPackage.getPackageImport(), null, "base_PackageImport", null, 1, 1, CppInclude.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCppInclude_PreBody(), theTypesPackage.getString(), "preBody", null, 1, 1, CppInclude.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(manualGenerationEClass, ManualGeneration.class, "ManualGeneration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getManualGeneration_ExtensionBody(), theTypesPackage.getString(), "extensionBody", null, 1, 1, ManualGeneration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getManualGeneration_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, ManualGeneration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppArrayEClass, CppArray.class, "CppArray", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppArray_Base_parameter(), theUMLPackage.getParameter(), null, "base_parameter", null, 1, 1, CppArray.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCppArray_Definition(), theTypesPackage.getString(), "definition", null, 1, 1, CppArray.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppArray_Base_property(), theUMLPackage.getProperty(), null, "base_property", null, 1, 1, CppArray.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppArray_Base_association(), theUMLPackage.getAssociation(), null, "base_association", null, 1, 1, CppArray.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppConstEClass, CppConst.class, "CppConst", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppConst_Base_parameter(), theUMLPackage.getParameter(), null, "base_parameter", null, 1, 1, CppConst.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppConst_Base_property(), theUMLPackage.getProperty(), null, "base_property", null, 1, 1, CppConst.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppConst_Base_operation(), theUMLPackage.getOperation(), null, "base_operation", null, 1, 1, CppConst.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppDefaultEClass, CppDefault.class, "CppDefault", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppDefault_Value(), theTypesPackage.getString(), "value", null, 1, 1, CppDefault.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppDefault_Base_parameter(), theUMLPackage.getParameter(), null, "base_parameter", null, 1, 1, CppDefault.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppDefault_Base_property(), theUMLPackage.getProperty(), null, "base_property", null, 1, 1, CppDefault.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppRefEClass, CppRef.class, "CppRef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppRef_Base_parameter(), theUMLPackage.getParameter(), null, "base_parameter", null, 1, 1, CppRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppRef_Base_property(), theUMLPackage.getProperty(), null, "base_property", null, 1, 1, CppRef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppExternClassEClass, CppExternClass.class, "CppExternClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppExternClass_Name(), theTypesPackage.getString(), "name", null, 1, 1, CppExternClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppExternClass_Base_class(), theUMLPackage.getClass_(), null, "base_class", null, 1, 1, CppExternClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppExternLibraryEClass, CppExternLibrary.class, "CppExternLibrary", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppExternLibrary_Name(), theTypesPackage.getString(), "name", null, 1, 1, CppExternLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppExternLibrary_Base_package(), theUMLPackage.getPackage(), null, "base_package", null, 1, 1, CppExternLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppRootEClass, CppRoot.class, "CppRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppRoot_Base_package(), theUMLPackage.getPackage(), null, "base_package", null, 1, 1, CppRoot.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppNoCodeGenEClass, CppNoCodeGen.class, "CppNoCodeGen", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppNoCodeGen_Base_element(), theUMLPackage.getElement(), null, "base_element", null, 1, 1, CppNoCodeGen.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppConstInitEClass, CppConstInit.class, "CppConstInit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppConstInit_Initialisation(), theTypesPackage.getString(), "initialisation", null, 1, 1, CppConstInit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppConstInit_Base_operation(), theUMLPackage.getOperation(), null, "base_operation", null, 1, 1, CppConstInit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppFriendEClass, CppFriend.class, "CppFriend", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppFriend_Base_dependency(), theUMLPackage.getDependency(), null, "base_dependency", null, 1, 1, CppFriend.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppFriend_Base_operation(), theUMLPackage.getOperation(), null, "base_operation", null, 1, 1, CppFriend.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppInlineEClass, CppInline.class, "CppInline", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppInline_Base_operation(), theUMLPackage.getOperation(), null, "base_operation", null, 1, 1, CppInline.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppVirtualEClass, CppVirtual.class, "CppVirtual", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCppVirtual_Base_operation(), theUMLPackage.getOperation(), null, "base_operation", null, 1, 1, CppVirtual.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppTypeEClass, CppType.class, "CppType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppType_Definition(), theTypesPackage.getString(), "definition", null, 1, 1, CppType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppType_Base_primitivetype(), theUMLPackage.getPrimitiveType(), null, "base_primitivetype", null, 1, 1, CppType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppVisibilityEClass, CppVisibility.class, "CppVisibility", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppVisibility_Value(), theTypesPackage.getString(), "value", null, 1, 1, CppVisibility.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppVisibility_Base_generalization(), theUMLPackage.getGeneralization(), null, "base_generalization", null, 1, 1, CppVisibility.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppInitEClass, CppInit.class, "CppInit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppInit_Value(), theTypesPackage.getInteger(), "value", null, 1, 1, CppInit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppInit_Base_enumerationliteral(), theUMLPackage.getEnumerationLiteral(), null, "base_enumerationliteral", null, 1, 1, CppInit.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppTemplateEClass, CppTemplate.class, "CppTemplate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppTemplate_Declaration(), theTypesPackage.getString(), "declaration", null, 1, 1, CppTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppTemplate_Base_class(), theUMLPackage.getClass_(), null, "base_class", null, 1, 1, CppTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppTemplateBindingEClass, CppTemplateBinding.class, "CppTemplateBinding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppTemplateBinding_Binding(), theTypesPackage.getString(), "binding", null, 1, 1, CppTemplateBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppTemplateBinding_Base_templatebinding(), theUMLPackage.getTemplateBinding(), null, "base_templatebinding", null, 1, 1, CppTemplateBinding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppTemplateParameterEClass, CppTemplateParameter.class, "CppTemplateParameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppTemplateParameter_Name(), theTypesPackage.getString(), "name", null, 1, 1, CppTemplateParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCppTemplateParameter_Base_templateparameter(), theUMLPackage.getTemplateParameter(), null, "base_templateparameter", null, 1, 1, CppTemplateParameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(unionEClass, Union.class, "Union", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getUnion_Base_DataType(), theUMLPackage.getDataType(), null, "base_DataType", null, 1, 1, Union.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(cppVisibilityKindEEnum, CppVisibilityKind.class, "CppVisibilityKind");
+ addEEnumLiteral(cppVisibilityKindEEnum, CppVisibilityKind.PRIVATE);
+ addEEnumLiteral(cppVisibilityKindEEnum, CppVisibilityKind.PROTECTED);
+ addEEnumLiteral(cppVisibilityKindEEnum, CppVisibilityKind.PUBLIC);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //CppPackageImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppPtrImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppPtrImpl.java
new file mode 100644
index 00000000000..9aff1d7eb7c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppPtrImpl.java
@@ -0,0 +1,287 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppPtr;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Ptr</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppPtrImpl#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.impl.CppPtrImpl#getBase_property <em>Base property</em>}</li>
+ * <li>{@link Cpp.impl.CppPtrImpl#getDeclaration <em>Declaration</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppPtrImpl extends EObjectImpl implements CppPtr {
+ /**
+ * The cached value of the '{@link #getBase_parameter() <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_parameter()
+ * @generated
+ * @ordered
+ */
+ protected Parameter base_parameter;
+
+ /**
+ * The cached value of the '{@link #getBase_property() <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_property;
+
+ /**
+ * The default value of the '{@link #getDeclaration() <em>Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected static final String DECLARATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDeclaration() <em>Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected String declaration = DECLARATION_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppPtrImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_PTR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter getBase_parameter() {
+ if (base_parameter != null && base_parameter.eIsProxy()) {
+ InternalEObject oldBase_parameter = (InternalEObject)base_parameter;
+ base_parameter = (Parameter)eResolveProxy(oldBase_parameter);
+ if (base_parameter != oldBase_parameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_PTR__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+ }
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter basicGetBase_parameter() {
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_parameter(Parameter newBase_parameter) {
+ Parameter oldBase_parameter = base_parameter;
+ base_parameter = newBase_parameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_PTR__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_property() {
+ if (base_property != null && base_property.eIsProxy()) {
+ InternalEObject oldBase_property = (InternalEObject)base_property;
+ base_property = (Property)eResolveProxy(oldBase_property);
+ if (base_property != oldBase_property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_PTR__BASE_PROPERTY, oldBase_property, base_property));
+ }
+ }
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_property() {
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_property(Property newBase_property) {
+ Property oldBase_property = base_property;
+ base_property = newBase_property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_PTR__BASE_PROPERTY, oldBase_property, base_property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDeclaration() {
+ return declaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDeclaration(String newDeclaration) {
+ String oldDeclaration = declaration;
+ declaration = newDeclaration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_PTR__DECLARATION, oldDeclaration, declaration));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_PTR__BASE_PARAMETER:
+ if (resolve) return getBase_parameter();
+ return basicGetBase_parameter();
+ case CppPackage.CPP_PTR__BASE_PROPERTY:
+ if (resolve) return getBase_property();
+ return basicGetBase_property();
+ case CppPackage.CPP_PTR__DECLARATION:
+ return getDeclaration();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_PTR__BASE_PARAMETER:
+ setBase_parameter((Parameter)newValue);
+ return;
+ case CppPackage.CPP_PTR__BASE_PROPERTY:
+ setBase_property((Property)newValue);
+ return;
+ case CppPackage.CPP_PTR__DECLARATION:
+ setDeclaration((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_PTR__BASE_PARAMETER:
+ setBase_parameter((Parameter)null);
+ return;
+ case CppPackage.CPP_PTR__BASE_PROPERTY:
+ setBase_property((Property)null);
+ return;
+ case CppPackage.CPP_PTR__DECLARATION:
+ setDeclaration(DECLARATION_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_PTR__BASE_PARAMETER:
+ return base_parameter != null;
+ case CppPackage.CPP_PTR__BASE_PROPERTY:
+ return base_property != null;
+ case CppPackage.CPP_PTR__DECLARATION:
+ return DECLARATION_EDEFAULT == null ? declaration != null : !DECLARATION_EDEFAULT.equals(declaration);
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (declaration: ");
+ result.append(declaration);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppPtrImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppRefImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppRefImpl.java
new file mode 100644
index 00000000000..8c0744a7d0f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppRefImpl.java
@@ -0,0 +1,219 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppRef;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Ref</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppRefImpl#getBase_parameter <em>Base parameter</em>}</li>
+ * <li>{@link Cpp.impl.CppRefImpl#getBase_property <em>Base property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppRefImpl extends EObjectImpl implements CppRef {
+ /**
+ * The cached value of the '{@link #getBase_parameter() <em>Base parameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_parameter()
+ * @generated
+ * @ordered
+ */
+ protected Parameter base_parameter;
+
+ /**
+ * The cached value of the '{@link #getBase_property() <em>Base property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_property;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppRefImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_REF;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter getBase_parameter() {
+ if (base_parameter != null && base_parameter.eIsProxy()) {
+ InternalEObject oldBase_parameter = (InternalEObject)base_parameter;
+ base_parameter = (Parameter)eResolveProxy(oldBase_parameter);
+ if (base_parameter != oldBase_parameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_REF__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+ }
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Parameter basicGetBase_parameter() {
+ return base_parameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_parameter(Parameter newBase_parameter) {
+ Parameter oldBase_parameter = base_parameter;
+ base_parameter = newBase_parameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_REF__BASE_PARAMETER, oldBase_parameter, base_parameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_property() {
+ if (base_property != null && base_property.eIsProxy()) {
+ InternalEObject oldBase_property = (InternalEObject)base_property;
+ base_property = (Property)eResolveProxy(oldBase_property);
+ if (base_property != oldBase_property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_REF__BASE_PROPERTY, oldBase_property, base_property));
+ }
+ }
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_property() {
+ return base_property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_property(Property newBase_property) {
+ Property oldBase_property = base_property;
+ base_property = newBase_property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_REF__BASE_PROPERTY, oldBase_property, base_property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_REF__BASE_PARAMETER:
+ if (resolve) return getBase_parameter();
+ return basicGetBase_parameter();
+ case CppPackage.CPP_REF__BASE_PROPERTY:
+ if (resolve) return getBase_property();
+ return basicGetBase_property();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_REF__BASE_PARAMETER:
+ setBase_parameter((Parameter)newValue);
+ return;
+ case CppPackage.CPP_REF__BASE_PROPERTY:
+ setBase_property((Property)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_REF__BASE_PARAMETER:
+ setBase_parameter((Parameter)null);
+ return;
+ case CppPackage.CPP_REF__BASE_PROPERTY:
+ setBase_property((Property)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_REF__BASE_PARAMETER:
+ return base_parameter != null;
+ case CppPackage.CPP_REF__BASE_PROPERTY:
+ return base_property != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CppRefImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppRootImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppRootImpl.java
new file mode 100644
index 00000000000..51dc9d8f50e
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppRootImpl.java
@@ -0,0 +1,156 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppRoot;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppRootImpl#getBase_package <em>Base package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppRootImpl extends EObjectImpl implements CppRoot {
+ /**
+ * The cached value of the '{@link #getBase_package() <em>Base package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_package()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Package base_package;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppRootImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_ROOT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package getBase_package() {
+ if (base_package != null && base_package.eIsProxy()) {
+ InternalEObject oldBase_package = (InternalEObject)base_package;
+ base_package = (org.eclipse.uml2.uml.Package)eResolveProxy(oldBase_package);
+ if (base_package != oldBase_package) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_ROOT__BASE_PACKAGE, oldBase_package, base_package));
+ }
+ }
+ return base_package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package basicGetBase_package() {
+ return base_package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_package(org.eclipse.uml2.uml.Package newBase_package) {
+ org.eclipse.uml2.uml.Package oldBase_package = base_package;
+ base_package = newBase_package;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_ROOT__BASE_PACKAGE, oldBase_package, base_package));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_ROOT__BASE_PACKAGE:
+ if (resolve) return getBase_package();
+ return basicGetBase_package();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_ROOT__BASE_PACKAGE:
+ setBase_package((org.eclipse.uml2.uml.Package)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_ROOT__BASE_PACKAGE:
+ setBase_package((org.eclipse.uml2.uml.Package)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_ROOT__BASE_PACKAGE:
+ return base_package != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CppRootImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateBindingImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateBindingImpl.java
new file mode 100644
index 00000000000..e5442dbd7f0
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateBindingImpl.java
@@ -0,0 +1,226 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppTemplateBinding;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.TemplateBinding;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Template Binding</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppTemplateBindingImpl#getBinding <em>Binding</em>}</li>
+ * <li>{@link Cpp.impl.CppTemplateBindingImpl#getBase_templatebinding <em>Base templatebinding</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppTemplateBindingImpl extends EObjectImpl implements CppTemplateBinding {
+ /**
+ * The default value of the '{@link #getBinding() <em>Binding</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBinding()
+ * @generated
+ * @ordered
+ */
+ protected static final String BINDING_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getBinding() <em>Binding</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBinding()
+ * @generated
+ * @ordered
+ */
+ protected String binding = BINDING_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_templatebinding() <em>Base templatebinding</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_templatebinding()
+ * @generated
+ * @ordered
+ */
+ protected TemplateBinding base_templatebinding;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppTemplateBindingImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_TEMPLATE_BINDING;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getBinding() {
+ return binding;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBinding(String newBinding) {
+ String oldBinding = binding;
+ binding = newBinding;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_TEMPLATE_BINDING__BINDING, oldBinding, binding));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateBinding getBase_templatebinding() {
+ if (base_templatebinding != null && base_templatebinding.eIsProxy()) {
+ InternalEObject oldBase_templatebinding = (InternalEObject)base_templatebinding;
+ base_templatebinding = (TemplateBinding)eResolveProxy(oldBase_templatebinding);
+ if (base_templatebinding != oldBase_templatebinding) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING, oldBase_templatebinding, base_templatebinding));
+ }
+ }
+ return base_templatebinding;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateBinding basicGetBase_templatebinding() {
+ return base_templatebinding;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_templatebinding(TemplateBinding newBase_templatebinding) {
+ TemplateBinding oldBase_templatebinding = base_templatebinding;
+ base_templatebinding = newBase_templatebinding;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING, oldBase_templatebinding, base_templatebinding));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE_BINDING__BINDING:
+ return getBinding();
+ case CppPackage.CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING:
+ if (resolve) return getBase_templatebinding();
+ return basicGetBase_templatebinding();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE_BINDING__BINDING:
+ setBinding((String)newValue);
+ return;
+ case CppPackage.CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING:
+ setBase_templatebinding((TemplateBinding)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE_BINDING__BINDING:
+ setBinding(BINDING_EDEFAULT);
+ return;
+ case CppPackage.CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING:
+ setBase_templatebinding((TemplateBinding)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE_BINDING__BINDING:
+ return BINDING_EDEFAULT == null ? binding != null : !BINDING_EDEFAULT.equals(binding);
+ case CppPackage.CPP_TEMPLATE_BINDING__BASE_TEMPLATEBINDING:
+ return base_templatebinding != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (binding: ");
+ result.append(binding);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppTemplateBindingImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateImpl.java
new file mode 100644
index 00000000000..5910429a18d
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateImpl.java
@@ -0,0 +1,224 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppTemplate;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Template</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppTemplateImpl#getDeclaration <em>Declaration</em>}</li>
+ * <li>{@link Cpp.impl.CppTemplateImpl#getBase_class <em>Base class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppTemplateImpl extends EObjectImpl implements CppTemplate {
+ /**
+ * The default value of the '{@link #getDeclaration() <em>Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected static final String DECLARATION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDeclaration() <em>Declaration</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeclaration()
+ * @generated
+ * @ordered
+ */
+ protected String declaration = DECLARATION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_class() <em>Base class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppTemplateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_TEMPLATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDeclaration() {
+ return declaration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDeclaration(String newDeclaration) {
+ String oldDeclaration = declaration;
+ declaration = newDeclaration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_TEMPLATE__DECLARATION, oldDeclaration, declaration));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_class() {
+ if (base_class != null && base_class.eIsProxy()) {
+ InternalEObject oldBase_class = (InternalEObject)base_class;
+ base_class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_class);
+ if (base_class != oldBase_class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_TEMPLATE__BASE_CLASS, oldBase_class, base_class));
+ }
+ }
+ return base_class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_class() {
+ return base_class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_class(org.eclipse.uml2.uml.Class newBase_class) {
+ org.eclipse.uml2.uml.Class oldBase_class = base_class;
+ base_class = newBase_class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_TEMPLATE__BASE_CLASS, oldBase_class, base_class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE__DECLARATION:
+ return getDeclaration();
+ case CppPackage.CPP_TEMPLATE__BASE_CLASS:
+ if (resolve) return getBase_class();
+ return basicGetBase_class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE__DECLARATION:
+ setDeclaration((String)newValue);
+ return;
+ case CppPackage.CPP_TEMPLATE__BASE_CLASS:
+ setBase_class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE__DECLARATION:
+ setDeclaration(DECLARATION_EDEFAULT);
+ return;
+ case CppPackage.CPP_TEMPLATE__BASE_CLASS:
+ setBase_class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE__DECLARATION:
+ return DECLARATION_EDEFAULT == null ? declaration != null : !DECLARATION_EDEFAULT.equals(declaration);
+ case CppPackage.CPP_TEMPLATE__BASE_CLASS:
+ return base_class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (declaration: ");
+ result.append(declaration);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppTemplateImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateParameterImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateParameterImpl.java
new file mode 100644
index 00000000000..53ca847b48c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTemplateParameterImpl.java
@@ -0,0 +1,226 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppTemplateParameter;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.TemplateParameter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Template Parameter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppTemplateParameterImpl#getName <em>Name</em>}</li>
+ * <li>{@link Cpp.impl.CppTemplateParameterImpl#getBase_templateparameter <em>Base templateparameter</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppTemplateParameterImpl extends EObjectImpl implements CppTemplateParameter {
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_templateparameter() <em>Base templateparameter</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_templateparameter()
+ * @generated
+ * @ordered
+ */
+ protected TemplateParameter base_templateparameter;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppTemplateParameterImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_TEMPLATE_PARAMETER;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_TEMPLATE_PARAMETER__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateParameter getBase_templateparameter() {
+ if (base_templateparameter != null && base_templateparameter.eIsProxy()) {
+ InternalEObject oldBase_templateparameter = (InternalEObject)base_templateparameter;
+ base_templateparameter = (TemplateParameter)eResolveProxy(oldBase_templateparameter);
+ if (base_templateparameter != oldBase_templateparameter) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER, oldBase_templateparameter, base_templateparameter));
+ }
+ }
+ return base_templateparameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateParameter basicGetBase_templateparameter() {
+ return base_templateparameter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_templateparameter(TemplateParameter newBase_templateparameter) {
+ TemplateParameter oldBase_templateparameter = base_templateparameter;
+ base_templateparameter = newBase_templateparameter;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER, oldBase_templateparameter, base_templateparameter));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE_PARAMETER__NAME:
+ return getName();
+ case CppPackage.CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER:
+ if (resolve) return getBase_templateparameter();
+ return basicGetBase_templateparameter();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE_PARAMETER__NAME:
+ setName((String)newValue);
+ return;
+ case CppPackage.CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER:
+ setBase_templateparameter((TemplateParameter)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE_PARAMETER__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case CppPackage.CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER:
+ setBase_templateparameter((TemplateParameter)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_TEMPLATE_PARAMETER__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case CppPackage.CPP_TEMPLATE_PARAMETER__BASE_TEMPLATEPARAMETER:
+ return base_templateparameter != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppTemplateParameterImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTypeImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTypeImpl.java
new file mode 100644
index 00000000000..83f5cacea0f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppTypeImpl.java
@@ -0,0 +1,226 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppType;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.PrimitiveType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppTypeImpl#getDefinition <em>Definition</em>}</li>
+ * <li>{@link Cpp.impl.CppTypeImpl#getBase_primitivetype <em>Base primitivetype</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppTypeImpl extends EObjectImpl implements CppType {
+ /**
+ * The default value of the '{@link #getDefinition() <em>Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefinition()
+ * @generated
+ * @ordered
+ */
+ protected static final String DEFINITION_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getDefinition() <em>Definition</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDefinition()
+ * @generated
+ * @ordered
+ */
+ protected String definition = DEFINITION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_primitivetype() <em>Base primitivetype</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_primitivetype()
+ * @generated
+ * @ordered
+ */
+ protected PrimitiveType base_primitivetype;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppTypeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_TYPE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getDefinition() {
+ return definition;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDefinition(String newDefinition) {
+ String oldDefinition = definition;
+ definition = newDefinition;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_TYPE__DEFINITION, oldDefinition, definition));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimitiveType getBase_primitivetype() {
+ if (base_primitivetype != null && base_primitivetype.eIsProxy()) {
+ InternalEObject oldBase_primitivetype = (InternalEObject)base_primitivetype;
+ base_primitivetype = (PrimitiveType)eResolveProxy(oldBase_primitivetype);
+ if (base_primitivetype != oldBase_primitivetype) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_TYPE__BASE_PRIMITIVETYPE, oldBase_primitivetype, base_primitivetype));
+ }
+ }
+ return base_primitivetype;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PrimitiveType basicGetBase_primitivetype() {
+ return base_primitivetype;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_primitivetype(PrimitiveType newBase_primitivetype) {
+ PrimitiveType oldBase_primitivetype = base_primitivetype;
+ base_primitivetype = newBase_primitivetype;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_TYPE__BASE_PRIMITIVETYPE, oldBase_primitivetype, base_primitivetype));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_TYPE__DEFINITION:
+ return getDefinition();
+ case CppPackage.CPP_TYPE__BASE_PRIMITIVETYPE:
+ if (resolve) return getBase_primitivetype();
+ return basicGetBase_primitivetype();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_TYPE__DEFINITION:
+ setDefinition((String)newValue);
+ return;
+ case CppPackage.CPP_TYPE__BASE_PRIMITIVETYPE:
+ setBase_primitivetype((PrimitiveType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_TYPE__DEFINITION:
+ setDefinition(DEFINITION_EDEFAULT);
+ return;
+ case CppPackage.CPP_TYPE__BASE_PRIMITIVETYPE:
+ setBase_primitivetype((PrimitiveType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_TYPE__DEFINITION:
+ return DEFINITION_EDEFAULT == null ? definition != null : !DEFINITION_EDEFAULT.equals(definition);
+ case CppPackage.CPP_TYPE__BASE_PRIMITIVETYPE:
+ return base_primitivetype != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (definition: ");
+ result.append(definition);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppTypeImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppVirtualImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppVirtualImpl.java
new file mode 100644
index 00000000000..3fae1b79f74
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppVirtualImpl.java
@@ -0,0 +1,158 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppVirtual;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Virtual</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppVirtualImpl#getBase_operation <em>Base operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppVirtualImpl extends EObjectImpl implements CppVirtual {
+ /**
+ * The cached value of the '{@link #getBase_operation() <em>Base operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_operation()
+ * @generated
+ * @ordered
+ */
+ protected Operation base_operation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppVirtualImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_VIRTUAL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation getBase_operation() {
+ if (base_operation != null && base_operation.eIsProxy()) {
+ InternalEObject oldBase_operation = (InternalEObject)base_operation;
+ base_operation = (Operation)eResolveProxy(oldBase_operation);
+ if (base_operation != oldBase_operation) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_VIRTUAL__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+ }
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation basicGetBase_operation() {
+ return base_operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_operation(Operation newBase_operation) {
+ Operation oldBase_operation = base_operation;
+ base_operation = newBase_operation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_VIRTUAL__BASE_OPERATION, oldBase_operation, base_operation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_VIRTUAL__BASE_OPERATION:
+ if (resolve) return getBase_operation();
+ return basicGetBase_operation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_VIRTUAL__BASE_OPERATION:
+ setBase_operation((Operation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_VIRTUAL__BASE_OPERATION:
+ setBase_operation((Operation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_VIRTUAL__BASE_OPERATION:
+ return base_operation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CppVirtualImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppVisibilityImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppVisibilityImpl.java
new file mode 100644
index 00000000000..bf23505a2cb
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/CppVisibilityImpl.java
@@ -0,0 +1,226 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.CppVisibility;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Generalization;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Visibility</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.CppVisibilityImpl#getValue <em>Value</em>}</li>
+ * <li>{@link Cpp.impl.CppVisibilityImpl#getBase_generalization <em>Base generalization</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppVisibilityImpl extends EObjectImpl implements CppVisibility {
+ /**
+ * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected static final String VALUE_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getValue()
+ * @generated
+ * @ordered
+ */
+ protected String value = VALUE_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_generalization() <em>Base generalization</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_generalization()
+ * @generated
+ * @ordered
+ */
+ protected Generalization base_generalization;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppVisibilityImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.CPP_VISIBILITY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setValue(String newValue) {
+ String oldValue = value;
+ value = newValue;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_VISIBILITY__VALUE, oldValue, value));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Generalization getBase_generalization() {
+ if (base_generalization != null && base_generalization.eIsProxy()) {
+ InternalEObject oldBase_generalization = (InternalEObject)base_generalization;
+ base_generalization = (Generalization)eResolveProxy(oldBase_generalization);
+ if (base_generalization != oldBase_generalization) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.CPP_VISIBILITY__BASE_GENERALIZATION, oldBase_generalization, base_generalization));
+ }
+ }
+ return base_generalization;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Generalization basicGetBase_generalization() {
+ return base_generalization;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_generalization(Generalization newBase_generalization) {
+ Generalization oldBase_generalization = base_generalization;
+ base_generalization = newBase_generalization;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.CPP_VISIBILITY__BASE_GENERALIZATION, oldBase_generalization, base_generalization));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.CPP_VISIBILITY__VALUE:
+ return getValue();
+ case CppPackage.CPP_VISIBILITY__BASE_GENERALIZATION:
+ if (resolve) return getBase_generalization();
+ return basicGetBase_generalization();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.CPP_VISIBILITY__VALUE:
+ setValue((String)newValue);
+ return;
+ case CppPackage.CPP_VISIBILITY__BASE_GENERALIZATION:
+ setBase_generalization((Generalization)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_VISIBILITY__VALUE:
+ setValue(VALUE_EDEFAULT);
+ return;
+ case CppPackage.CPP_VISIBILITY__BASE_GENERALIZATION:
+ setBase_generalization((Generalization)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.CPP_VISIBILITY__VALUE:
+ return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ case CppPackage.CPP_VISIBILITY__BASE_GENERALIZATION:
+ return base_generalization != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (value: ");
+ result.append(value);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppVisibilityImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/ManualGenerationImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/ManualGenerationImpl.java
new file mode 100644
index 00000000000..e8e77b1f4b3
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/ManualGenerationImpl.java
@@ -0,0 +1,224 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.ManualGeneration;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Manual Generation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.ManualGenerationImpl#getExtensionBody <em>Extension Body</em>}</li>
+ * <li>{@link Cpp.impl.ManualGenerationImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ManualGenerationImpl extends EObjectImpl implements ManualGeneration {
+ /**
+ * The default value of the '{@link #getExtensionBody() <em>Extension Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExtensionBody()
+ * @generated
+ * @ordered
+ */
+ protected static final String EXTENSION_BODY_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getExtensionBody() <em>Extension Body</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getExtensionBody()
+ * @generated
+ * @ordered
+ */
+ protected String extensionBody = EXTENSION_BODY_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ManualGenerationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.MANUAL_GENERATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getExtensionBody() {
+ return extensionBody;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setExtensionBody(String newExtensionBody) {
+ String oldExtensionBody = extensionBody;
+ extensionBody = newExtensionBody;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.MANUAL_GENERATION__EXTENSION_BODY, oldExtensionBody, extensionBody));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.MANUAL_GENERATION__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.MANUAL_GENERATION__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.MANUAL_GENERATION__EXTENSION_BODY:
+ return getExtensionBody();
+ case CppPackage.MANUAL_GENERATION__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.MANUAL_GENERATION__EXTENSION_BODY:
+ setExtensionBody((String)newValue);
+ return;
+ case CppPackage.MANUAL_GENERATION__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.MANUAL_GENERATION__EXTENSION_BODY:
+ setExtensionBody(EXTENSION_BODY_EDEFAULT);
+ return;
+ case CppPackage.MANUAL_GENERATION__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.MANUAL_GENERATION__EXTENSION_BODY:
+ return EXTENSION_BODY_EDEFAULT == null ? extensionBody != null : !EXTENSION_BODY_EDEFAULT.equals(extensionBody);
+ case CppPackage.MANUAL_GENERATION__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (extensionBody: ");
+ result.append(extensionBody);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ManualGenerationImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/UnionImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/UnionImpl.java
new file mode 100644
index 00000000000..a1f90e2b31f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/impl/UnionImpl.java
@@ -0,0 +1,158 @@
+/**
+ */
+package Cpp.impl;
+
+import Cpp.CppPackage;
+import Cpp.Union;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.DataType;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Union</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link Cpp.impl.UnionImpl#getBase_DataType <em>Base Data Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class UnionImpl extends EObjectImpl implements Union {
+ /**
+ * The cached value of the '{@link #getBase_DataType() <em>Base Data Type</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_DataType()
+ * @generated
+ * @ordered
+ */
+ protected DataType base_DataType;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected UnionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return CppPackage.Literals.UNION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataType getBase_DataType() {
+ if (base_DataType != null && base_DataType.eIsProxy()) {
+ InternalEObject oldBase_DataType = (InternalEObject)base_DataType;
+ base_DataType = (DataType)eResolveProxy(oldBase_DataType);
+ if (base_DataType != oldBase_DataType) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, CppPackage.UNION__BASE_DATA_TYPE, oldBase_DataType, base_DataType));
+ }
+ }
+ return base_DataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DataType basicGetBase_DataType() {
+ return base_DataType;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_DataType(DataType newBase_DataType) {
+ DataType oldBase_DataType = base_DataType;
+ base_DataType = newBase_DataType;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, CppPackage.UNION__BASE_DATA_TYPE, oldBase_DataType, base_DataType));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case CppPackage.UNION__BASE_DATA_TYPE:
+ if (resolve) return getBase_DataType();
+ return basicGetBase_DataType();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case CppPackage.UNION__BASE_DATA_TYPE:
+ setBase_DataType((DataType)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case CppPackage.UNION__BASE_DATA_TYPE:
+ setBase_DataType((DataType)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case CppPackage.UNION__BASE_DATA_TYPE:
+ return base_DataType != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //UnionImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppAdapterFactory.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppAdapterFactory.java
new file mode 100644
index 00000000000..19cad94fb1c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppAdapterFactory.java
@@ -0,0 +1,518 @@
+/**
+ */
+package Cpp.util;
+
+import Cpp.*;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+
+import Cpp.CppArray;
+import Cpp.CppConst;
+import Cpp.CppConstInit;
+import Cpp.CppDefault;
+import Cpp.CppExternClass;
+import Cpp.CppExternLibrary;
+import Cpp.CppFriend;
+import Cpp.CppInclude;
+import Cpp.CppInit;
+import Cpp.CppInline;
+import Cpp.CppNoCodeGen;
+import Cpp.CppPackage;
+import Cpp.CppPtr;
+import Cpp.CppRef;
+import Cpp.CppRoot;
+import Cpp.CppTemplate;
+import Cpp.CppTemplateBinding;
+import Cpp.CppTemplateParameter;
+import Cpp.CppType;
+import Cpp.CppVirtual;
+import Cpp.CppVisibility;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see Cpp.CppPackage
+ * @generated
+ */
+public class CppAdapterFactory extends AdapterFactoryImpl {
+
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static CppPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = CppPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppSwitch<Adapter> modelSwitch =
+ new CppSwitch<Adapter>() {
+ @Override
+ public Adapter caseCppPtr(CppPtr object) {
+ return createCppPtrAdapter();
+ }
+ @Override
+ public Adapter caseCppInclude(CppInclude object) {
+ return createCppIncludeAdapter();
+ }
+ @Override
+ public Adapter caseManualGeneration(ManualGeneration object) {
+ return createManualGenerationAdapter();
+ }
+ @Override
+ public Adapter caseCppArray(CppArray object) {
+ return createCppArrayAdapter();
+ }
+ @Override
+ public Adapter caseCppConst(CppConst object) {
+ return createCppConstAdapter();
+ }
+ @Override
+ public Adapter caseCppDefault(CppDefault object) {
+ return createCppDefaultAdapter();
+ }
+ @Override
+ public Adapter caseCppRef(CppRef object) {
+ return createCppRefAdapter();
+ }
+ @Override
+ public Adapter caseCppExternClass(CppExternClass object) {
+ return createCppExternClassAdapter();
+ }
+ @Override
+ public Adapter caseCppExternLibrary(CppExternLibrary object) {
+ return createCppExternLibraryAdapter();
+ }
+ @Override
+ public Adapter caseCppRoot(CppRoot object) {
+ return createCppRootAdapter();
+ }
+ @Override
+ public Adapter caseCppNoCodeGen(CppNoCodeGen object) {
+ return createCppNoCodeGenAdapter();
+ }
+ @Override
+ public Adapter caseCppConstInit(CppConstInit object) {
+ return createCppConstInitAdapter();
+ }
+ @Override
+ public Adapter caseCppFriend(CppFriend object) {
+ return createCppFriendAdapter();
+ }
+ @Override
+ public Adapter caseCppInline(CppInline object) {
+ return createCppInlineAdapter();
+ }
+ @Override
+ public Adapter caseCppVirtual(CppVirtual object) {
+ return createCppVirtualAdapter();
+ }
+ @Override
+ public Adapter caseCppType(CppType object) {
+ return createCppTypeAdapter();
+ }
+ @Override
+ public Adapter caseCppVisibility(CppVisibility object) {
+ return createCppVisibilityAdapter();
+ }
+ @Override
+ public Adapter caseCppInit(CppInit object) {
+ return createCppInitAdapter();
+ }
+ @Override
+ public Adapter caseCppTemplate(CppTemplate object) {
+ return createCppTemplateAdapter();
+ }
+ @Override
+ public Adapter caseCppTemplateBinding(CppTemplateBinding object) {
+ return createCppTemplateBindingAdapter();
+ }
+ @Override
+ public Adapter caseCppTemplateParameter(CppTemplateParameter object) {
+ return createCppTemplateParameterAdapter();
+ }
+ @Override
+ public Adapter caseUnion(Union object) {
+ return createUnionAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppArray <em>Array</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppArray
+ * @generated
+ */
+ public Adapter createCppArrayAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppConst <em>Const</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppConst
+ * @generated
+ */
+ public Adapter createCppConstAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppDefault <em>Default</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppDefault
+ * @generated
+ */
+ public Adapter createCppDefaultAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppPtr <em>Ptr</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppPtr
+ * @generated
+ */
+ public Adapter createCppPtrAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppRef <em>Ref</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppRef
+ * @generated
+ */
+ public Adapter createCppRefAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppExternClass <em>Extern Class</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppExternClass
+ * @generated
+ */
+ public Adapter createCppExternClassAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppExternLibrary <em>Extern Library</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppExternLibrary
+ * @generated
+ */
+ public Adapter createCppExternLibraryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppInclude <em>Include</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppInclude
+ * @generated
+ */
+ public Adapter createCppIncludeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.ManualGeneration <em>Manual Generation</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.ManualGeneration
+ * @generated
+ */
+ public Adapter createManualGenerationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppRoot <em>Root</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppRoot
+ * @generated
+ */
+ public Adapter createCppRootAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppNoCodeGen <em>No Code Gen</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppNoCodeGen
+ * @generated
+ */
+ public Adapter createCppNoCodeGenAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppConstInit <em>Const Init</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppConstInit
+ * @generated
+ */
+ public Adapter createCppConstInitAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppFriend <em>Friend</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppFriend
+ * @generated
+ */
+ public Adapter createCppFriendAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppInline <em>Inline</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppInline
+ * @generated
+ */
+ public Adapter createCppInlineAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppVirtual <em>Virtual</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppVirtual
+ * @generated
+ */
+ public Adapter createCppVirtualAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppType
+ * @generated
+ */
+ public Adapter createCppTypeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppVisibility <em>Visibility</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppVisibility
+ * @generated
+ */
+ public Adapter createCppVisibilityAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppInit <em>Init</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppInit
+ * @generated
+ */
+ public Adapter createCppInitAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppTemplate <em>Template</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppTemplate
+ * @generated
+ */
+ public Adapter createCppTemplateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppTemplateBinding <em>Template Binding</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppTemplateBinding
+ * @generated
+ */
+ public Adapter createCppTemplateBindingAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.CppTemplateParameter <em>Template Parameter</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.CppTemplateParameter
+ * @generated
+ */
+ public Adapter createCppTemplateParameterAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link Cpp.Union <em>Union</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see Cpp.Union
+ * @generated
+ */
+ public Adapter createUnionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //CppAdapterFactory
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppResourceFactoryImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppResourceFactoryImpl.java
new file mode 100644
index 00000000000..09f00e350f8
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppResourceFactoryImpl.java
@@ -0,0 +1,52 @@
+/**
+ */
+package Cpp.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see Cpp.util.CppResourceImpl
+ * @generated
+ */
+public class CppResourceFactoryImpl extends ResourceFactoryImpl {
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppResourceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri) {
+ XMLResource result = new CppResourceImpl(uri);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+ return result;
+ }
+
+} //CppResourceFactoryImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppResourceImpl.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppResourceImpl.java
new file mode 100644
index 00000000000..bf2c9be99cb
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppResourceImpl.java
@@ -0,0 +1,28 @@
+/**
+ */
+package Cpp.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see Cpp.util.CppResourceFactoryImpl
+ * @generated
+ */
+public class CppResourceImpl extends XMLResourceImpl {
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param uri the URI of the new resource.
+ * @generated
+ */
+ public CppResourceImpl(URI uri) {
+ super(uri);
+ }
+
+} //CppResourceImpl
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppSwitch.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppSwitch.java
new file mode 100644
index 00000000000..ceb244d7cf9
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppSwitch.java
@@ -0,0 +1,571 @@
+/**
+ */
+package Cpp.util;
+
+import Cpp.*;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+
+import Cpp.CppArray;
+import Cpp.CppConst;
+import Cpp.CppConstInit;
+import Cpp.CppDefault;
+import Cpp.CppExternClass;
+import Cpp.CppExternLibrary;
+import Cpp.CppFriend;
+import Cpp.CppInclude;
+import Cpp.CppInit;
+import Cpp.CppInline;
+import Cpp.CppNoCodeGen;
+import Cpp.CppPackage;
+import Cpp.CppPtr;
+import Cpp.CppRef;
+import Cpp.CppRoot;
+import Cpp.CppTemplate;
+import Cpp.CppTemplateBinding;
+import Cpp.CppTemplateParameter;
+import Cpp.CppType;
+import Cpp.CppVirtual;
+import Cpp.CppVisibility;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see Cpp.CppPackage
+ * @generated
+ */
+public class CppSwitch<T> extends Switch<T> {
+
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static CppPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppSwitch() {
+ if (modelPackage == null) {
+ modelPackage = CppPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case CppPackage.CPP_PTR: {
+ CppPtr cppPtr = (CppPtr)theEObject;
+ T result = caseCppPtr(cppPtr);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_INCLUDE: {
+ CppInclude cppInclude = (CppInclude)theEObject;
+ T result = caseCppInclude(cppInclude);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.MANUAL_GENERATION: {
+ ManualGeneration manualGeneration = (ManualGeneration)theEObject;
+ T result = caseManualGeneration(manualGeneration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_ARRAY: {
+ CppArray cppArray = (CppArray)theEObject;
+ T result = caseCppArray(cppArray);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_CONST: {
+ CppConst cppConst = (CppConst)theEObject;
+ T result = caseCppConst(cppConst);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_DEFAULT: {
+ CppDefault cppDefault = (CppDefault)theEObject;
+ T result = caseCppDefault(cppDefault);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_REF: {
+ CppRef cppRef = (CppRef)theEObject;
+ T result = caseCppRef(cppRef);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_EXTERN_CLASS: {
+ CppExternClass cppExternClass = (CppExternClass)theEObject;
+ T result = caseCppExternClass(cppExternClass);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_EXTERN_LIBRARY: {
+ CppExternLibrary cppExternLibrary = (CppExternLibrary)theEObject;
+ T result = caseCppExternLibrary(cppExternLibrary);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_ROOT: {
+ CppRoot cppRoot = (CppRoot)theEObject;
+ T result = caseCppRoot(cppRoot);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_NO_CODE_GEN: {
+ CppNoCodeGen cppNoCodeGen = (CppNoCodeGen)theEObject;
+ T result = caseCppNoCodeGen(cppNoCodeGen);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_CONST_INIT: {
+ CppConstInit cppConstInit = (CppConstInit)theEObject;
+ T result = caseCppConstInit(cppConstInit);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_FRIEND: {
+ CppFriend cppFriend = (CppFriend)theEObject;
+ T result = caseCppFriend(cppFriend);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_INLINE: {
+ CppInline cppInline = (CppInline)theEObject;
+ T result = caseCppInline(cppInline);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_VIRTUAL: {
+ CppVirtual cppVirtual = (CppVirtual)theEObject;
+ T result = caseCppVirtual(cppVirtual);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_TYPE: {
+ CppType cppType = (CppType)theEObject;
+ T result = caseCppType(cppType);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_VISIBILITY: {
+ CppVisibility cppVisibility = (CppVisibility)theEObject;
+ T result = caseCppVisibility(cppVisibility);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_INIT: {
+ CppInit cppInit = (CppInit)theEObject;
+ T result = caseCppInit(cppInit);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_TEMPLATE: {
+ CppTemplate cppTemplate = (CppTemplate)theEObject;
+ T result = caseCppTemplate(cppTemplate);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_TEMPLATE_BINDING: {
+ CppTemplateBinding cppTemplateBinding = (CppTemplateBinding)theEObject;
+ T result = caseCppTemplateBinding(cppTemplateBinding);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.CPP_TEMPLATE_PARAMETER: {
+ CppTemplateParameter cppTemplateParameter = (CppTemplateParameter)theEObject;
+ T result = caseCppTemplateParameter(cppTemplateParameter);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case CppPackage.UNION: {
+ Union union = (Union)theEObject;
+ T result = caseUnion(union);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Array</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Array</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppArray(CppArray object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Const</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Const</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppConst(CppConst object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Default</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Default</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppDefault(CppDefault object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Ptr</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Ptr</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppPtr(CppPtr object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Ref</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Ref</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppRef(CppRef object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Extern Class</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Extern Class</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppExternClass(CppExternClass object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Extern Library</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Extern Library</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppExternLibrary(CppExternLibrary object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Include</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Include</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppInclude(CppInclude object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Manual Generation</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Manual Generation</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseManualGeneration(ManualGeneration object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Root</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Root</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppRoot(CppRoot object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>No Code Gen</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>No Code Gen</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppNoCodeGen(CppNoCodeGen object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Const Init</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Const Init</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppConstInit(CppConstInit object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Friend</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Friend</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppFriend(CppFriend object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Inline</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Inline</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppInline(CppInline object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Virtual</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Virtual</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppVirtual(CppVirtual object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Type</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Type</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppType(CppType object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Visibility</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Visibility</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppVisibility(CppVisibility object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Init</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Init</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppInit(CppInit object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Template</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Template</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppTemplate(CppTemplate object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Template Binding</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Template Binding</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppTemplateBinding(CppTemplateBinding object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Template Parameter</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Template Parameter</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppTemplateParameter(CppTemplateParameter object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Union</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Union</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseUnion(Union object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //CppSwitch
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppXMLProcessor.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppXMLProcessor.java
new file mode 100644
index 00000000000..19875a83aa1
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/Cpp/util/CppXMLProcessor.java
@@ -0,0 +1,50 @@
+/**
+ */
+package Cpp.util;
+
+import Cpp.CppPackage;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class CppXMLProcessor extends XMLProcessor {
+
+ /**
+ * Public constructor to instantiate the helper.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppXMLProcessor() {
+ super((EPackage.Registry.INSTANCE));
+ CppPackage.eINSTANCE.eClass();
+ }
+
+ /**
+ * Register for "*" and "xml" file extensions the CppResourceFactoryImpl factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Map<String, Resource.Factory> getRegistrations() {
+ if (registrations == null) {
+ super.getRegistrations();
+ registrations.put(XML_EXTENSION, new CppResourceFactoryImpl());
+ registrations.put(STAR_EXTENSION, new CppResourceFactoryImpl());
+ }
+ return registrations;
+ }
+
+} //CppXMLProcessor
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/Activator.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/Activator.java
new file mode 100644
index 00000000000..ebe45039cae
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/Activator.java
@@ -0,0 +1,52 @@
+package org.eclipse.papyrus.cpp.profile;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.cpp.profile";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/StUtils.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/StUtils.java
new file mode 100644
index 00000000000..06ed195bd5f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/StUtils.java
@@ -0,0 +1,243 @@
+package org.eclipse.papyrus.cpp.profile;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Stereotype;
+
+/**
+ * Some functions around stereotype usage.
+ * TODO: originally developed without use of static profile. It thus contains many functions
+ * that are no longer needed (e.g. getBoolean) => needs some cleanup
+ *
+ * @author ansgar
+ *
+ */
+public class StUtils {
+
+ /**
+ * This method verifies if a stereotype is applied on an UML element
+ *
+ * @param element
+ * A UML element
+ * @param str_name
+ * a qualified stereotype name
+ */
+ public static boolean isApplied(Element element, String str_name) {
+ return (element.getAppliedStereotype(str_name) != null);
+ }
+
+ /**
+ * This method verifies if a stereotype is applied on an UML element
+ *
+ * @param element
+ * A UML element
+ * @param the
+ * class of an element of a static profile
+ */
+ public static boolean isApplied(Element element, java.lang.Class<? extends EObject> clazz) {
+ for(EObject stereoApplication : element.getStereotypeApplications()) {
+ // check whether the stereotype is a subclass of the passed parameter clazz
+ if(clazz.isAssignableFrom(stereoApplication.getClass())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return the attribute of a stereotype. If the attribute type is a model reference,
+ * use the function getAttributeBase instead.
+ *
+ * @param element
+ * the element which holds the stereotype
+ * @param stereo_name
+ * the name of the stereotype
+ * @param attrib_name
+ * the name of an attribute of this stereotype
+ * @return The value that is associated with the stereotype attribute
+ */
+ public static Object getAttribute(Element element, String stereo_name, String attrib_name) {
+ Stereotype stereotype = element.getAppliedStereotype(stereo_name);
+ if(stereotype == null) {
+ return null;
+ }
+ return element.getValue(stereotype, attrib_name);
+ }
+
+ /**
+ * Return the stereotype application. Like getStereotypeApplication, except
+ * that the passed stereotype is a string.
+ *
+ * @param element
+ * @param stereo_name
+ * @return
+ */
+ public static EObject getApplication(Element element, String stereo_name) {
+
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ return element.getStereotypeApplication(stereotype);
+ }
+ return null;
+
+ }
+
+ /**
+ * Return the stereotype application by passing an element of the static profile
+ *
+ * @param element
+ * the UML model element
+ * @param clazz
+ * the class of an element of a static profile. Compatible sub-types will be returned as well
+ * @return the stereotype application or null
+ */
+ @SuppressWarnings("unchecked")
+ public static <T extends EObject> T getApplication(Element element, java.lang.Class<T> clazz) {
+ for(EObject stereoApplication : element.getStereotypeApplications()) {
+ // check whether the stereotype is an instance of the passed parameter clazz
+ if(clazz.isInstance(stereoApplication)) {
+ return (T)stereoApplication;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Apply a stereotype. The stereotype is not applied, if already a sub-stereotype is applied.
+ * If you want to apply the new stereotype also in this case, use applyExact instead.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static Stereotype apply(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ EList<Stereotype> subStereos = element.getAppliedSubstereotypes(stereotype);
+ boolean alreadyApplied = (subStereos.size() > 0);
+ if(!alreadyApplied) {
+ // it seems that subSterotypes do not include the stereotype itself
+ if(element.getStereotypeApplication(stereotype) == null) {
+ element.applyStereotype(stereotype);
+ }
+ }
+ }
+ return stereotype;
+ }
+
+ /**
+ * unapply a stereotype when the name of the stereotype is given.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static void unapply(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ if(element.getStereotypeApplication(stereotype) != null) {
+ element.unapplyStereotype(stereotype);
+ }
+ }
+ }
+
+ /**
+ * Apply a stereotype and return the stereotype application (if successful).
+ * The stereotype is not applied, if already a sub-stereotype is applied.
+ * If you want to apply the new stereotype also in this case, use applyExact instead.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static <T extends EObject> T applyApp(Element element, java.lang.Class<T> clazz) {
+ if(apply(element, clazz) != null) {
+ return getApplication(element, clazz);
+ }
+ return null;
+ }
+
+ /**
+ * @param element
+ * @param stereo_name
+ * @return
+ */
+ public static Stereotype applyExact(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ Stereotype alreadyApplied = element.getAppliedSubstereotype(stereotype, stereo_name);
+ if(alreadyApplied == null) {
+ element.applyStereotype(stereotype);
+ }
+ }
+ return stereotype;
+ }
+
+ /**
+ * Apply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param class a class of a static profile
+ * @return
+ */
+ public static Stereotype apply(Element element, java.lang.Class<? extends EObject> clazz) {
+ return apply(element, getStereoName(clazz));
+ }
+
+ /**
+ * Unapply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static void unapply(Element element, java.lang.Class<? extends EObject> clazz) {
+ unapply(element, getStereoName(clazz));
+ }
+
+ /**
+ * Apply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static Stereotype applyExact(Element element, java.lang.Class<? extends EObject> clazz) {
+ return applyExact(element, getStereoName(clazz));
+ }
+
+ public static Stereotype getStereo(Element element, java.lang.Class<? extends EObject> clazz) {
+ return element.getAppliedStereotype(getStereoName(clazz));
+ }
+
+ public static String getStereoName(java.lang.Class<? extends EObject> clazz) {
+ String name = clazz.getName();
+ if(name.startsWith("org.eclipse.papyrus.MARTE")) {
+ // MARTE classes are prefixed with "org.eclipse.papyrus" which does not belong
+ // to the stereotype name
+ name = name.substring("org.eclipse.papyrus.".length());
+ }
+ return name.replace(".", "::");
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/StdStereo.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/StdStereo.java
new file mode 100644
index 00000000000..8e34f007917
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.cpp.profile/src/org/eclipse/papyrus/cpp/profile/StdStereo.java
@@ -0,0 +1,17 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2012 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.cpp.profile;
+
+public class StdStereo {
+ public final static String create = "Standard::Create";
+ public final static String destroy = "Standard::Destroy";
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/.classpath b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/.project b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/.project
new file mode 100644
index 00000000000..c547cbe1809
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.views.cpp</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/META-INF/MANIFEST.MF b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..9131718656c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/META-INF/MANIFEST.MF
@@ -0,0 +1,37 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.views.cpp;singleton:=true
+Bundle-Version: 0.9.2.vqualifier
+Bundle-Activator: org.eclipse.papyrus.views.cpp.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.uml2.uml,
+ org.eclipse.emf.ecore.edit,
+ org.eclipse.gmf.runtime.notation;bundle-version="1.4.0",
+ org.eclipse.gef;bundle-version="3.6.0",
+ org.eclipse.papyrus.cpp.profile;bundle-version="0.9.2",
+ org.eclipse.ui.editors;bundle-version="3.6.1",
+ org.eclipse.papyrus.infra.core;bundle-version="0.9.2",
+ org.eclipse.jface.text;bundle-version="3.8.0",
+ org.eclipse.emf.transaction;bundle-version="1.4.0",
+ org.eclipse.gmf.runtime.common.core;bundle-version="1.4.1",
+ org.eclipse.gmf.runtime.emf.commands.core;bundle-version="1.4.0"
+Eclipse-LazyStart: true
+Bundle-ClassPath: .
+Export-Package: org.eclipse.papyrus.views.cpp;
+ uses:="org.eclipse.ui.plugin,
+ org.eclipse.swt.graphics,
+ org.osgi.framework,
+ org.eclipse.emf.transaction",
+ org.eclipse.papyrus.views.cpp;
+ uses:="org.eclipse.ui,
+ com.cea.papyrus.views.panels,
+ org.eclipse.jface.viewers,
+ org.eclipse.ui.part,
+ org.eclipse.uml2.uml,
+ org.eclipse.swt.widgets"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Localization: plugin
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/about.html b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/about.ini b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/about.ini
new file mode 100644
index 00000000000..9b4b2c53944
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+
+# feature image (for about info...)
+featureImage = resources/icons/Papyrus_32x32.gif
+
+#about text
+aboutText =\
+Papyrus Cpp Code generation\n\
+\n\
+Version: 1.6.2\n\
+\n\
+(c) Copyright CEA 2006, 2007. All rights reserved.\n\
+\n\
+This program and the accompanying materials are made available under\n\
+the terms of the Eclipse Public License v1.0 which accompanies this\n\
+distribution, and is available at http://www.eclipse.org/legal/epl-v10.html\n\
+\ \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/build.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/build.properties
new file mode 100644
index 00000000000..b961dfd1fd2
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml,\
+ resources/,\
+ about.ini,\
+ about.html
+src.includes = about.html
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/plugin.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/plugin.properties
new file mode 100644
index 00000000000..7ced719d446
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Simple Papyrus C++ view (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/plugin.xml b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/plugin.xml
new file mode 100644
index 00000000000..90b2f91a207
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/plugin.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ category="org.eclipse.papyrus.views.category"
+ class="org.eclipse.papyrus.views.cpp.CppPanelView"
+ icon="resources/icons/transfo_cpp.gif"
+ id="com.cea.papyrus.views.cpp"
+ name="C/C++"/>
+ </extension>
+</plugin>
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/Papyrus_32x32.gif b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/Papyrus_32x32.gif
new file mode 100644
index 00000000000..a57b9d92dee
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/Papyrus_32x32.gif
Binary files differ
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/save_edit.gif b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/save_edit.gif
new file mode 100644
index 00000000000..499dd0ca602
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/save_edit.gif
Binary files differ
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/transfo_cpp.gif b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/transfo_cpp.gif
new file mode 100644
index 00000000000..7caaa0fdae8
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/transfo_cpp.gif
Binary files differ
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/transfo_cpp_old.gif b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/transfo_cpp_old.gif
new file mode 100644
index 00000000000..4b39411daf5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/transfo_cpp_old.gif
Binary files differ
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/undo_edit.gif b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/undo_edit.gif
new file mode 100644
index 00000000000..eae118ad168
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/resources/icons/undo_edit.gif
Binary files differ
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/AbstractCppPanelView.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/AbstractCppPanelView.java
new file mode 100644
index 00000000000..43a58e50fb2
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/AbstractCppPanelView.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.cpp;
+
+import org.eclipse.papyrus.views.panels.CppAbstractPanel;
+import org.eclipse.papyrus.views.panels.PanelFactory;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * This class extends <code>ViewPart</code>. This class draws the Accord/Cpp
+ * panel in the Modeling Perspective. It also implements
+ * <code>ISelectionListener</code> in order to know which element is selected
+ * in the workbench. In fact, the content of the view changes depending on the
+ * type of the element selected
+ */
+public abstract class AbstractCppPanelView extends ViewPart implements ISelectionListener {
+
+ /** parent composite of the panels contained by this view */
+ protected Composite parent;
+
+ /** stores the current target */
+ protected Object currentTarget;
+
+ /** keeps the reference to the panel (abstract class) */
+ protected CppAbstractPanel panel;
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
+ */
+ @Override
+ public void createPartControl(Composite parent) {
+ getViewSite().getPage().addSelectionListener(this);
+ this.parent = parent;
+ panel = createPanel(parent, 0, null);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
+ */
+ @Override
+ public void setFocus() {
+ // delegate focus to the panel
+ panel.setFocus();
+ }
+
+ /**
+ * Changes the panel displayed in the view, depending on the type of the
+ * newly selected element.
+ */
+ protected void switchUI() {
+ /*
+ * test to check if the panel is not disposed. Closing the panel
+ * view and open it again creates a second instance of panel, one of
+ * it is disposed, the new one is active
+ */
+ if (!panel.isDisposed()) {
+ panel.exitAction();
+ panel.dispose();
+
+ if (currentTarget != null && currentTarget instanceof Element) {
+ // creates the new panel given the current target
+ panel = createPanel(parent, 0, (Element)currentTarget);
+ } else {
+ panel = createPanel(parent, 0, null);
+ }
+
+ panel.setBounds(panel.getParent().getBounds());
+ panel.entryAction();
+ }
+ }
+
+
+ /**
+ * Creates the new panel, when switching UI.
+ * <p>This class should be overloaded when working with RSA or other tools, using a new PanelFactory
+ * @param parent the parent of the new panel
+ * @param style the SWT style of this panel
+ * @param element the element for which the panel is created
+ * @return the newly created panel
+ */
+ protected CppAbstractPanel createPanel(Composite parent, int style, Element element) {
+ return PanelFactory.eINSTANCE.createPanel(parent, 0, currentTarget);
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/Activator.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/Activator.java
new file mode 100644
index 00000000000..317488edd47
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/Activator.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.views.cpp;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.views.cpp";
+
+ // The shared instance
+ private static Activator plugin;
+
+ // Resource bundle.
+ public static final Font VIEW_FONT = new Font(null, "Bitstream Vera Sans Mono", 10, SWT.NORMAL);
+
+ private static final String RESOURCE_NAME = PLUGIN_ID + ".Activator";
+
+ public static final String ICONS_PATH = "resources/icons/";
+
+ public static final String DEFAULT_IMAGE = ICONS_PATH + "default.gif";
+
+ public static final String SAVE_IMAGE = ICONS_PATH + "save_edit.gif";
+
+ public static final String UNDO_IMAGE = ICONS_PATH + "undo_edit.gif";
+
+ public static final String WARNING_IMAGE = ICONS_PATH + "warning.gif";
+
+ private ResourceBundle resourceBundle;
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ plugin = this;
+ try {
+ resourceBundle = ResourceBundle.getBundle(RESOURCE_NAME);
+ } catch (MissingResourceException mre) {
+ //Log.exception(mre);
+ resourceBundle = null;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the string from the plugin's resource bundle, or 'key' if not
+ * found.
+ */
+ public static String getResourceString(String key) {
+ ResourceBundle bundle = getDefault().getResourceBundle();
+ try {
+ return (bundle != null) ? bundle.getString(key) : key;
+ } catch (MissingResourceException e) {
+ return key;
+ }
+ }
+
+ /**
+ * Returns the plugin's resource bundle,
+ */
+ public ResourceBundle getResourceBundle() {
+ return resourceBundle;
+ }
+
+ /**
+ * Returns an <code>org.eclipse.swt.graphics.Image</code> identified by
+ * its key. <BR>
+ * By default, it returns a default image. This image is the image placed in
+ * the directory <em>resources/icons/default.gif</em>
+ *
+ * @param key
+ * the key of the image
+ * @return the Image
+ */
+ public static Image getImage(String key) {
+ ImageRegistry registry = getDefault().getImageRegistry();
+ Image image = registry.get(key);
+ if(image == null) {
+ ImageDescriptor desc = AbstractUIPlugin
+ .imageDescriptorFromPlugin(PLUGIN_ID, key);
+ registry.put(key, desc);
+ image = registry.get(key);
+ }
+ if(image == null && !key.equals(DEFAULT_IMAGE)) {
+ image = getImage(DEFAULT_IMAGE);
+ }
+
+ return image;
+ }
+
+ /**
+ * Log the given exception into the plugin log.
+ *
+ * @param e
+ * the exception to log
+ */
+ public static void log(Exception e) {
+ getDefault().getLog().log(new Status(
+ IStatus.ERROR,
+ PLUGIN_ID,
+ IStatus.OK,
+ "exception caught: " + e.getMessage(),
+ e));
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/Activator.properties b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/Activator.properties
new file mode 100644
index 00000000000..79979449eba
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/Activator.properties
@@ -0,0 +1,96 @@
+# Defaut Panel
+panel.default.text=Please select a UML item on diagram or in the Model explorer
+
+# Operation Panel
+panel.operation.button.save=Save
+panel.operation.button.save.tooltip=Save Cpp operation body into its method Activity
+panel.operation.button.cancel=Cancel
+panel.operation.button.cancel.tooltip=Ignore modifications made since last save action
+panel.operation.dialog.saveorignore.title=Warning : modifications not saved
+panel.operation.dialog.saveorignore.body=Do you want to save modifications for the body of this method ?
+panel.operation.dialog.saveorignore.button.save=Save
+panel.operation.dialog.saveorignore.button.ignore=Ignore
+
+# Class Panel
+panel.class.button.save=Save
+panel.class.button.save.tooltip=Save Cpp include associated to this class
+
+panel.class.button.cancel=Cancel
+panel.class.button.cancel.tooltip=Ignore modifications made since last save action
+
+panel.class.dialog.saveorignore.title=Warning : modifications not saved
+panel.class.dialog.saveorignore=Do you want to save modifications for the include declared in this class ?
+panel.class.dialog.saveorignore.button.save=Save
+panel.class.dialog.saveorignore.button.ignore=Ignore
+
+# Package Panel
+panel.package.button.save=Save
+panel.package.button.save.tooltip=Save Cpp include associated to this package
+
+panel.package.button.cancel=Cancel
+panel.package.button.cancel.tooltip=Ignore modifications made since last save action
+
+panel.package.dialog.saveorignore.title=Warning : modifications not saved
+panel.package.dialog.saveorignore=Do you want to save modifications for the include declared in this package ?
+panel.package.dialog.saveorignore.button.save=Save
+panel.package.dialog.saveorignore.button.ignore=Ignore
+
+# PrimitiveType Panel
+panel.type.button.save=Save
+panel.type.button.save.tooltip=Save Cpp type definition associated to this primitive type
+
+panel.type.button.cancel=Cancel
+panel.type.button.cancel.tooltip=Ignore modifications made since last save action
+
+panel.type.dialog.saveorignore.title=Warning : modifications not saved
+panel.type.dialog.saveorignore=Do you want to save modifications for the type defined here ?
+panel.type.dialog.saveorignore.button.save=Save
+panel.type.dialog.saveorignore.button.ignore=Ignore
+
+# Property Panel
+panel.property.button.save=Save
+panel.property.button.save.tooltip=Save Cpp Property informations
+
+panel.property.button.cancel=Cancel
+panel.property.button.cancel.tooltip=Ignore modifications made since last save action
+
+panel.property.dialog.saveorignore.title=Warning : modifications not saved
+panel.property.dialog.saveorignore=Do you want to save modifications for the Property defined here ?
+panel.property.dialog.saveorignore.button.save=Save
+panel.property.dialog.saveorignore.button.ignore=Ignore
+
+# Parameter Panel
+panel.parameter.button.save=Save
+panel.parameter.button.save.tooltip=Save Cpp Parameter informations
+
+panel.parameter.button.cancel=Cancel
+panel.parameter.button.cancel.tooltip=Ignore modifications made since last save action
+
+panel.parameter.dialog.saveorignore.title=Warning : modifications not saved
+panel.parameter.dialog.saveorignore=Do you want to save modifications for the Parameter defined here ?
+panel.parameter.dialog.saveorignore.button.save=Save
+panel.parameter.dialog.saveorignore.button.ignore=Ignore
+
+# TemplateBinding Panel
+panel.templatebinding.button.save=Save
+panel.templatebinding.button.save.tooltip=Save Cpp TemplateBinding informations
+
+panel.templatebinding.button.cancel=Cancel
+panel.templatebinding.button.cancel.tooltip=Ignore modifications made since last save action
+
+panel.templatebinding.dialog.saveorignore.title=Warning : modifications not saved
+panel.templatebinding.dialog.saveorignore=Do you want to save modifications for the TemplateBinding defined here ?
+panel.templatebinding.dialog.saveorignore.button.save=Save
+panel.templatebinding.dialog.saveorignore.button.ignore=Ignore
+
+# TemplateParameter Panel
+panel.templateparameter.button.save=Save
+panel.templateparameter.button.save.tooltip=Save Cpp TemplateParameter informations
+
+panel.templateparameter.button.cancel=Cancel
+panel.templateparameter.button.cancel.tooltip=Ignore modifications made since last save action
+
+panel.templateparameter.dialog.saveorignore.title=Warning : modifications not saved
+panel.templateparameter.dialog.saveorignore=Do you want to save modifications for the TemplateParameter defined here ?
+panel.templateparameter.dialog.saveorignore.button.save=Save
+panel.templateparameter.dialog.saveorignore.button.ignore=Ignore
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/CommandSupport.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/CommandSupport.java
new file mode 100644
index 00000000000..a37ff165d3c
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/CommandSupport.java
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.cpp;
+
+import java.util.Collections;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.OperationHistoryFactory;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.papyrus.infra.core.utils.EditorUtils;
+
+/**
+ * Utility function. Allow adaption to command stack
+ *
+ * @author ansgar
+ *
+ */
+public class CommandSupport
+{
+ /**
+ * Execute the passed Runnable within a command
+ * @param label
+ * @param command
+ */
+ public static void exec (String label, final Runnable command)
+ {
+ TransactionalEditingDomain domain = EditorUtils.getTransactionalEditingDomain();
+ IOperationHistory history = OperationHistoryFactory.getOperationHistory();
+ try {
+ history.execute ( new AbstractTransactionalCommand (domain, label, Collections.EMPTY_LIST) {
+ public CommandResult doExecuteWithResult (IProgressMonitor dummy, IAdaptable info) {
+ command.run ();
+ return CommandResult.newOKCommandResult();
+ }
+ }, null, null);
+ }
+ catch (ExecutionException e) {
+ e.printStackTrace ();
+ }
+ }
+
+ /**
+ * Execute the passed Runnable within a command
+ * @param label
+ * @param command
+ */
+ public static void exec (TransactionalEditingDomain domain, String label, final Runnable command)
+ {
+ // do works, undo does not (but is selectable in Papyrus Model explorer)
+ IOperationHistory history = OperationHistoryFactory.getOperationHistory();
+ try {
+ history.execute ( new AbstractTransactionalCommand (domain, label, Collections.EMPTY_LIST) {
+ public CommandResult doExecuteWithResult (IProgressMonitor dummy, IAdaptable info) {
+ command.run ();
+ return CommandResult.newOKCommandResult();
+ }
+ }, null, null);
+ }
+ catch (ExecutionException e) {
+ e.printStackTrace ();
+ }
+ }
+
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/CppPanelView.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/CppPanelView.java
new file mode 100644
index 00000000000..0e6e7452753
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/CppPanelView.java
@@ -0,0 +1,104 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.cpp;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.views.panels.CppAbstractPanel;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * This class extends <code>ViewPart</code>. This class draws the Accord/Cpp
+ * panel in the Modeling Perspective. It also implements <code>ISelectionListener</code> in order to know which element is selected
+ * in the workbench. In fact, the content of the view changes depending on the
+ * type of the element selected
+ */
+public class CppPanelView extends AbstractCppPanelView {
+
+ /**
+ * Creates the new panel, when switching UI.
+ * <p>
+ * This class should be overloaded when working with RSA or other tools, using a new PanelFactory
+ *
+ * @param parent
+ * the parent of the new panel
+ * @param style
+ * the SWT style of this panel
+ * @param element
+ * the element for which the panel is created
+ * @return the newly created panel
+ */
+ @Override
+ protected CppAbstractPanel createPanel(Composite parent, int style,
+ Element element) {
+ return org.eclipse.papyrus.views.panels.PanelFactory.eINSTANCE
+ .createPanel(parent, 0, currentTarget);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+
+ IStructuredSelection sSelection = null;
+ if(selection instanceof IStructuredSelection) {
+ sSelection = (IStructuredSelection)selection;
+ }
+
+ // exclude case of an empty selection which is not a Tree selection, since changing views provokes an
+ // empty selection (selection gets lost, although same element remains selected)
+ if((selection != null) && (sSelection != null) && sSelection.isEmpty()) {
+ return;
+ }
+
+ // No available selection: switch to default panel
+ if((sSelection == null) || (sSelection.size() != 1)) {
+ currentTarget = null;
+ switchUI();
+ return;
+ }
+
+ // Retrieve selected object
+ Object currentObject = sSelection.getFirstElement();
+ // If the object is an edit part, try to get semantic bridge
+ if(currentObject instanceof GraphicalEditPart) {
+ GraphicalEditPart editPart = (GraphicalEditPart)currentObject;
+ if(editPart.getModel() instanceof View) {
+ View view = (View)editPart.getModel();
+ if(view.getElement() instanceof Element) {
+ currentObject = (Element)view.getElement();
+ }
+ }
+ }
+ else if(currentObject instanceof IAdaptable) {
+ // modisco ModelElementItem supports IAdaptable (cleaner than cast / dependency with modisco)
+ currentObject = ((IAdaptable)currentObject).getAdapter(EObject.class);
+ }
+
+ if(currentObject instanceof Element) {
+ if(currentTarget != currentObject) {
+ currentTarget = (Element)currentObject;
+ switchUI();
+ }
+ }
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/StUtils.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/StUtils.java
new file mode 100644
index 00000000000..47dc72e2f26
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/cpp/StUtils.java
@@ -0,0 +1,243 @@
+package org.eclipse.papyrus.views.cpp;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Stereotype;
+
+/**
+ * Some functions around stereotype usage.
+ * TODO: originally developed without use of static profile. It thus contains many functions
+ * that are no longer needed (e.g. getBoolean) => needs some cleanup
+ *
+ * @author ansgar
+ *
+ */
+public class StUtils {
+
+ /**
+ * This method verifies if a stereotype is applied on an UML element
+ *
+ * @param element
+ * A UML element
+ * @param str_name
+ * a qualified stereotype name
+ */
+ public static boolean isApplied(Element element, String str_name) {
+ return (element.getAppliedStereotype(str_name) != null);
+ }
+
+ /**
+ * This method verifies if a stereotype is applied on an UML element
+ *
+ * @param element
+ * A UML element
+ * @param the
+ * class of an element of a static profile
+ */
+ public static boolean isApplied(Element element, java.lang.Class<? extends EObject> clazz) {
+ for(EObject stereoApplication : element.getStereotypeApplications()) {
+ // check whether the stereotype is a subclass of the passed parameter clazz
+ if(clazz.isAssignableFrom(stereoApplication.getClass())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return the attribute of a stereotype. If the attribute type is a model reference,
+ * use the function getAttributeBase instead.
+ *
+ * @param element
+ * the element which holds the stereotype
+ * @param stereo_name
+ * the name of the stereotype
+ * @param attrib_name
+ * the name of an attribute of this stereotype
+ * @return The value that is associated with the stereotype attribute
+ */
+ public static Object getAttribute(Element element, String stereo_name, String attrib_name) {
+ Stereotype stereotype = element.getAppliedStereotype(stereo_name);
+ if(stereotype == null) {
+ return null;
+ }
+ return element.getValue(stereotype, attrib_name);
+ }
+
+ /**
+ * Return the stereotype application. Like getStereotypeApplication, except
+ * that the passed stereotype is a string.
+ *
+ * @param element
+ * @param stereo_name
+ * @return
+ */
+ public static EObject getApplication(Element element, String stereo_name) {
+
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ return element.getStereotypeApplication(stereotype);
+ }
+ return null;
+
+ }
+
+ /**
+ * Return the stereotype application by passing an element of the static profile
+ *
+ * @param element
+ * the UML model element
+ * @param clazz
+ * the class of an element of a static profile. Compatible sub-types will be returned as well
+ * @return the stereotype application or null
+ */
+ @SuppressWarnings("unchecked")
+ public static <T extends EObject> T getApplication(Element element, java.lang.Class<T> clazz) {
+ for(EObject stereoApplication : element.getStereotypeApplications()) {
+ // check whether the stereotype is an instance of the passed parameter clazz
+ if(clazz.isInstance(stereoApplication)) {
+ return (T)stereoApplication;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Apply a stereotype. The stereotype is not applied, if already a sub-stereotype is applied.
+ * If you want to apply the new stereotype also in this case, use applyExact instead.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static Stereotype apply(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ EList<Stereotype> subStereos = element.getAppliedSubstereotypes(stereotype);
+ boolean alreadyApplied = (subStereos.size() > 0);
+ if(!alreadyApplied) {
+ // it seems that subSterotypes do not include the stereotype itself
+ if(element.getStereotypeApplication(stereotype) == null) {
+ element.applyStereotype(stereotype);
+ }
+ }
+ }
+ return stereotype;
+ }
+
+ /**
+ * unapply a stereotype when the name of the stereotype is given.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static void unapply(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ if(element.getStereotypeApplication(stereotype) != null) {
+ element.unapplyStereotype(stereotype);
+ }
+ }
+ }
+
+ /**
+ * Apply a stereotype and return the stereotype application (if successful).
+ * The stereotype is not applied, if already a sub-stereotype is applied.
+ * If you want to apply the new stereotype also in this case, use applyExact instead.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static <T extends EObject> T applyApp(Element element, java.lang.Class<T> clazz) {
+ if(apply(element, clazz) != null) {
+ return getApplication(element, clazz);
+ }
+ return null;
+ }
+
+ /**
+ * @param element
+ * @param stereo_name
+ * @return
+ */
+ public static Stereotype applyExact(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ Stereotype alreadyApplied = element.getAppliedSubstereotype(stereotype, stereo_name);
+ if(alreadyApplied == null) {
+ element.applyStereotype(stereotype);
+ }
+ }
+ return stereotype;
+ }
+
+ /**
+ * Apply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param class a class of a static profile
+ * @return
+ */
+ public static Stereotype apply(Element element, java.lang.Class<? extends EObject> clazz) {
+ return apply(element, getStereoName(clazz));
+ }
+
+ /**
+ * Unapply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static void unapply(Element element, java.lang.Class<? extends EObject> clazz) {
+ unapply(element, getStereoName(clazz));
+ }
+
+ /**
+ * Apply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static Stereotype applyExact(Element element, java.lang.Class<? extends EObject> clazz) {
+ return applyExact(element, getStereoName(clazz));
+ }
+
+ public static Stereotype getStereo(Element element, java.lang.Class<? extends EObject> clazz) {
+ return element.getAppliedStereotype(getStereoName(clazz));
+ }
+
+ public static String getStereoName(java.lang.Class<? extends EObject> clazz) {
+ String name = clazz.getName();
+ if(name.startsWith("org.eclipse.papyrus.MARTE")) {
+ // MARTE classes are prefixed with "org.eclipse.papyrus" which does not belong
+ // to the stereotype name
+ name = name.substring("org.eclipse.papyrus.".length());
+ }
+ return name.replace(".", "::");
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/listeners/UMLElementPanelListener.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/listeners/UMLElementPanelListener.java
new file mode 100644
index 00000000000..c47bfcd6149
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/listeners/UMLElementPanelListener.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.views.listeners;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.papyrus.views.panels.CppAbstractPanel;
+
+
+
+/**
+ * Listener for a uml element, for a given AccordCppAbstractPanel.
+ */
+public class UMLElementPanelListener implements Adapter {
+
+ /** element listened */
+ private Notifier target;
+
+ /** panel that listens to this element */
+ protected CppAbstractPanel panel;
+
+ /**
+ * Creates a new UMLElementListener for the given panel.
+ * @param panel the panel that describes this element
+ */
+ public UMLElementPanelListener(CppAbstractPanel panel){
+ this.panel=panel;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.emf.common.notify.Adapter#notifyChanged(org.eclipse.emf.common.notify.Notification)
+ */
+ public void notifyChanged(Notification notification) {
+ if( notification.getEventType()!=Notification.REMOVING_ADAPTER ){
+ panel.reset(); // equivalent to a refresh
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.emf.common.notify.Adapter#getTarget()
+ */
+ public Notifier getTarget() {
+ return this.target;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.emf.common.notify.Adapter#setTarget(org.eclipse.emf.common.notify.Notifier)
+ */
+ public void setTarget(Notifier newTarget) {
+ this.target = newTarget;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.emf.common.notify.Adapter#isAdapterForType(java.lang.Object)
+ */
+ public boolean isAdapterForType(Object type) {
+ Class<? extends Notifier> class_ = target.getClass();
+ // if class is not null
+ if(class_!=null) {
+ return class_.equals(type);
+ }
+ //default case: it is not an adapter
+ return false;
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppAbstractPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppAbstractPanel.java
new file mode 100644
index 00000000000..1038f202e85
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppAbstractPanel.java
@@ -0,0 +1,428 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.papyrus.views.cpp.Activator;
+import org.eclipse.papyrus.views.listeners.UMLElementPanelListener;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ *
+ */
+public abstract class CppAbstractPanel extends Composite {
+
+ static final Font pluginFont = new Font(null, "Bitstream Vera Sans Mono", 10, SWT.NORMAL);
+
+ public static final int H_SPACE = 10;
+
+ // string representing the ID of the language
+ // this is the string contained in the language attribute of Activity
+ protected static final String CPP_ID = "C/C++";
+
+ // CppInclude text area
+ protected Button buttonSave;
+
+ protected Button buttonCancel;
+
+ /** Listener for modifications on the uml element */
+ protected UMLElementPanelListener umlListener = null;
+
+ public CppAbstractPanel(Composite parent, int style) {
+
+ super(parent, style);
+ this.setLayout(new FormLayout());
+ FormData layoutData = new FormData();
+ layoutData.top = new FormAttachment(0);
+ layoutData.bottom = new FormAttachment(100);
+ layoutData.left = new FormAttachment(0);
+ layoutData.right = new FormAttachment(100);
+ this.setLayoutData(layoutData);
+ this.setBackground(parent.getBackground());
+ this.setVisible(true);
+ }
+
+ public abstract Control createContent();
+
+
+ ///////////////////////////////////////////////////////////////////////
+ // Following method are used to create text area w/o coloration
+ ///////////////////////////////////////////////////////////////////////
+ // /**
+ // *
+ // */
+ // protected FastPartitioner createPartitioner() {
+ // FastPartitioner pluginPartitioner = new FastPartitioner(
+ // new CPartitionScanner(), new String[] {
+ // CPartitionScanner.C_SINGLE_LINE_COMMENT,
+ // CPartitionScanner.C_MULTILINE_COMMENT,
+ // CPartitionScanner.C_STRING
+ // }
+ // );
+ //
+ // return pluginPartitioner;
+ // }
+
+
+ /**
+ * Create a group for a text area
+ *
+ * @param textArea
+ * parent composite
+ * @param name
+ * of the group
+ * @param t_previous
+ * attached to top border
+ * @param l_previous
+ * attached to left border
+ * @param toRight
+ * should group reach right border of parent
+ * @param height
+ * of text in percent of group size
+ * @param width
+ * of text in percent of group size
+ * @param toBottom
+ * should group reach bottom of parent
+ * @return new Group
+ */
+ protected Group createGroup(
+ Composite textArea
+ , String name
+ , Control t_previous
+ , Control l_previous
+ , boolean toRight
+ , int height
+ , int width
+ , boolean toBottom) {
+
+ Group groupBody = new Group(textArea, SWT.NONE);
+
+ groupBody.setBackground(textArea.getBackground());
+ groupBody.setLayout(new FormLayout());
+ groupBody.setText(" " + name + " ");
+ groupBody.setFont(Activator.VIEW_FONT);
+
+ FormData data = new FormData();
+ if(t_previous != null) {
+ data.top = new FormAttachment(t_previous, H_SPACE);
+ }
+
+ if(l_previous != null) {
+ data.left = new FormAttachment(l_previous, H_SPACE);
+ }
+
+ if(data.top == null) {
+ data.top = new FormAttachment(0, H_SPACE);
+ }
+
+ if(data.left == null) {
+ data.left = new FormAttachment(0, H_SPACE);
+ }
+
+ if(toBottom) {
+ data.bottom = new FormAttachment(100, -H_SPACE);
+ } else if(height != 0) {
+ data.bottom = new FormAttachment(height);
+ }
+
+ if(toRight) {
+ data.right = new FormAttachment(100, -H_SPACE);
+ } else {
+ data.right = new FormAttachment(width, 0);
+ }
+
+ groupBody.setLayoutData(data);
+ return groupBody;
+ }
+
+ /**
+ * Create a simple viewer without coloration
+ *
+ * @param doc
+ * @param group
+ * @return
+ */
+ protected SourceViewer createViewer(IDocument doc, Group group) {
+
+ SourceViewer viewer =
+ new SourceViewer(group, null, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+
+ viewer.setDocument(doc);
+
+ viewer.getTextWidget().setLayout(new FormLayout());
+ FormData viewerData = new FormData();
+ viewerData.height = 20;
+ viewerData.top = new FormAttachment(0);
+ viewerData.bottom = new FormAttachment(100);
+ viewerData.left = new FormAttachment(0);
+ viewerData.right = new FormAttachment(100);
+ viewer.getTextWidget().setLayoutData(viewerData);
+
+ return viewer;
+ }
+
+ /**
+ *
+ * @param doc
+ * @param group
+ * @return
+ */
+ protected SourceViewer createViewerC(IDocument doc, Group group) {
+ return createViewer(doc, group);
+ }
+
+ /**
+ * Create a simple document
+ *
+ * @return
+ */
+ protected IDocument createDocument() {
+ IDocument doc = new Document();
+
+ return doc;
+ }
+
+ /**
+ * Create a C/C++ (see cdt) document
+ *
+ * @return
+ */
+ protected IDocument createDocumentC() {
+ return createDocument();
+ }
+
+ ///////////////////////////////////////////////////////////////////////
+
+ /**
+ * Create save and reset button in the top - right of the structure
+ *
+ */
+ protected void createSaveResetButtons() {
+
+ /////////////////////////////////////////////////////////////////////////
+ // Create a composite that contain the "Save/Cancel" buttons
+ /////////////////////////////////////////////////////////////////////////
+
+ buttonSave = new Button(this, SWT.PUSH);
+ buttonSave.setImage(Activator.getImage(Activator.SAVE_IMAGE));
+ buttonSave.setToolTipText(Activator.getResourceString("panel.class.button.save.tooltip"));
+ buttonSave.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent arg0) {
+ save();
+ }
+ });
+
+ buttonCancel = new Button(this, SWT.PUSH);
+ buttonCancel.setImage(Activator.getImage(Activator.UNDO_IMAGE));
+ buttonCancel.setToolTipText(Activator.getResourceString("panel.class.button.cancel.tooltip"));
+ buttonCancel.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent arg0) {
+ reset();
+ }
+ });
+
+ FormData dataC = new FormData();
+ dataC.right = new FormAttachment(100, -H_SPACE);
+ dataC.top = new FormAttachment(0, H_SPACE);
+ buttonCancel.setLayoutData(dataC);
+
+ FormData dataS = new FormData();
+ dataS.right = new FormAttachment(buttonCancel, -H_SPACE);
+ dataS.top = new FormAttachment(0, H_SPACE);
+ buttonSave.setLayoutData(dataS);
+ }
+
+ /**
+ * Create new button
+ *
+ * @param name
+ * of the button
+ * @param parent
+ * composite that owns the button
+ * @param previous
+ * structure on which button is left attached
+ * @return the newly created button
+ */
+ protected Button createButton(String name, Composite parent, Button previous) {
+ Button newButton = new Button(parent, SWT.CHECK);
+
+ newButton.setBackground(parent.getBackground());
+ newButton.setText(name);
+ FormData data = new FormData();
+
+ if(previous == null) {
+ data.left = new FormAttachment(0, H_SPACE);
+ } else {
+ data.left = new FormAttachment(previous, H_SPACE);
+ }
+
+ data.top = new FormAttachment(0, H_SPACE);
+ newButton.setLayoutData(data);
+
+ return newButton;
+ }
+
+ /**
+ * Selection listener that match button status and a particular stereotype
+ *
+ * @param button
+ * @param stereotypeName
+ */
+ protected void addStereotypeSelectionListener(final Button button, final String stereotypeName) {
+
+ button.addSelectionListener(
+ new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+
+ updateModel();
+ refreshPanel();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ }
+ );
+ }
+
+ /**
+ * Action executed just after the panel is created for the specific element.
+ */
+ public void entryAction() {
+ reset();
+ }
+
+ /**
+ * Action executed just before moving to the new element.
+ */
+ public void exitAction() {
+ boolean modelChanged = false;
+
+ // check if model was modified (read only action)
+ modelChanged = checkModifications();
+
+ // model has change, must go in a write transaction => save
+ if(modelChanged) {
+ MessageDialog dialog = new MessageDialog(
+ Display.getCurrent().getActiveShell(),
+ Activator.getResourceString("panel.property.dialog.saveorignore.title"),
+ Activator.getImage(Activator.WARNING_IMAGE),
+ Activator.getResourceString("panel.property.dialog.saveorignore"),
+ 0,
+ new String[]{
+ Activator.getResourceString("panel.property.dialog.saveorignore.button.save"),
+ Activator.getResourceString("panel.property.dialog.saveorignore.button.ignore") },
+ 0);
+ dialog.open();
+ if(dialog.getReturnCode() == 0) { //saveButton pressed
+ save();
+ }
+ }
+ }
+
+ /**
+ * Check if the content of the panel has modification against the corresponding UML element.
+ *
+ * @return <code>true</code> if the panel has modification against the model
+ */
+ public abstract boolean checkModifications();
+
+ /**
+ * Action executed when save button is pressed
+ */
+ public abstract void save();
+
+ /**
+ * Action executed when reset button is pressed
+ */
+ public void reset() {
+ boolean modelValid = true;
+ modelValid = isModelValid();
+ if(!modelValid) {
+ updateModel();
+ }
+ refreshPanel();
+ }
+
+ /**
+ * Refresh panel
+ */
+ protected abstract void refreshPanel();
+
+ /**
+ * Makes the model coherent with the AccordCpp Methodology
+ */
+ protected void updateModel() {
+ }
+
+ /**
+ * Check if model is coherent with the AccordCpp Methodology
+ *
+ * @return <code>true</code> if the model is coherent with the AccordCpp Methodology
+ */
+ protected boolean isModelValid() {
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.widgets.Widget#dispose()
+ */
+ @Override
+ public void dispose() {
+ if(getSelectedElement() != null && umlListener != null) {
+ getSelectedElement().eAdapters().remove(umlListener);
+ }
+ super.dispose();
+ }
+
+ /**
+ * Returns the selected element
+ * <p>
+ * Warning: it can be <code>null</code>
+ *
+ * @return the selected element
+ */
+ public abstract Element getSelectedElement();
+
+ /**
+ * Sets the new selected element
+ *
+ * @param newElement
+ * the new selected element
+ */
+ public void setSelectedElement(Element newElement) {
+ if(newElement != null && umlListener != null) {
+ newElement.eAdapters().add(umlListener);
+ }
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppClassPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppClassPanel.java
new file mode 100644
index 00000000000..10668823f0a
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppClassPanel.java
@@ -0,0 +1,205 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+
+import Cpp.CppInclude;
+
+
+/**
+ * Panel displayed when a Class is selected
+ */
+public class CppClassPanel extends CppAbstractPanel {
+
+ // document used by the viewer for header include
+ private IDocument headerDocument;
+
+ @SuppressWarnings("unused")
+ private SourceViewer headerViewer;
+
+ private Group headerGroup;
+
+ // document used by the viewer for body include
+ private IDocument bodyDocument;
+
+ @SuppressWarnings("unused")
+ private SourceViewer bodyViewer;
+
+ private Group bodyGroup;
+
+ // Current selection
+ private Class selectedClass;
+
+ public CppClassPanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /**
+ * @return Returns the selectedOperation.
+ */
+ public org.eclipse.uml2.uml.Class getSelectedElement() {
+ return selectedClass;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(java.lang.Object)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof Class) {
+ this.selectedClass = (Class)newElement;
+ }
+ else {
+ throw new RuntimeException("bad selection: " + newElement + " should be an uml2 Class");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContentHI()
+ */
+ public Control createContent() {
+
+ ///////////////////////////////////////////////////////////////////////
+ // Create save reset buttons with superclass method
+ ///////////////////////////////////////////////////////////////////////
+ createSaveResetButtons();
+
+ /////////////////////////////////////////////////////////////////////////
+ // Create a Group for the header include declarations
+ /////////////////////////////////////////////////////////////////////////
+ headerDocument = createDocumentC();
+ headerGroup = createGroup(
+ this
+ , "Header include declarations"
+ , buttonSave
+ , null
+ , true
+ , 50
+ , 0
+ , false);
+ // Use CDT CEditor coloration
+ headerViewer = createViewerC(headerDocument, headerGroup);
+ /////////////////////////////////////////////////////////////////////////
+ // Create a Group for the body include declarations
+ /////////////////////////////////////////////////////////////////////////
+ bodyDocument = createDocumentC();
+ bodyGroup = createGroup(
+ this
+ , "Body include declarations"
+ , headerGroup
+ , null
+ , true
+ , 0
+ , 0
+ , true);
+ // Use CDT CEditor coloration
+ bodyViewer = createViewerC(bodyDocument, bodyGroup);
+
+ /////////////////////////////////////////////////////////////////////////
+
+ return this;
+ }
+
+ /**
+ * Saves the include declarations for a '<code>Class</code>'
+ */
+ public void save()
+ {
+ if(selectedClass == null) {
+ /* Log.debug("saveBody : selectedOperation is null"); */
+ } else {
+ CommandSupport.exec("C++ header/body save", new Runnable() {
+
+ public void run() {
+ if(headerDocument.get().equals("")
+ && bodyDocument.get().equals("")) {
+ StUtils.unapply(selectedClass, CppInclude.class);
+ } else {
+ CppInclude cppInclude = StUtils.applyApp(selectedClass, CppInclude.class);
+ cppInclude.setHeader(headerDocument.get());
+ cppInclude.setBody(bodyDocument.get());
+ }
+ }
+ });
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#entryAction()
+ */
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#checkModifications()
+ */
+ @Override
+ public boolean checkModifications() {
+ String headerInModel = "";
+ String bodyInModel = "";
+
+ CppInclude cppInclude = StUtils.getApplication(selectedClass, CppInclude.class);
+ if(cppInclude != null) {
+ headerInModel = cppInclude.getHeader();
+ bodyInModel = cppInclude.getBody();
+ }
+
+ boolean headerChanged = !headerDocument.get().equals(headerInModel);
+ boolean bodyChanged = !bodyDocument.get().equals(bodyInModel);
+
+ return (headerChanged | bodyChanged);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#refreshPanel()
+ */
+ @Override
+ protected void refreshPanel() {
+ if(selectedClass == null) {
+ }
+ else {
+ CppInclude cppInclude = StUtils.getApplication(selectedClass, CppInclude.class);
+ if(cppInclude != null) {
+ // get the text in the tagged value
+ String currentHI = cppInclude.getHeader();
+ headerDocument.set(currentHI);
+ String currentBI = cppInclude.getBody();
+ bodyDocument.set(currentBI);
+ } else {
+ headerDocument.set("");
+ bodyDocument.set("");
+ }
+ }
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppDefaultPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppDefaultPanel.java
new file mode 100644
index 00000000000..7a32e84f23b
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppDefaultPanel.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.papyrus.views.cpp.Activator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.uml2.uml.Element;
+
+
+/**
+ * Default panel when selection is not relevant.
+ */
+public class CppDefaultPanel extends CppAbstractPanel {
+
+ /** Label used to display text */
+ private Label label;
+
+ /**
+ * Constructs a new instance of this class given its parent and a style
+ * value describing its behavior and appearance.
+ * @param parent the composite parent of this element
+ * @param style the style for this panel
+ * @see SWT
+ */
+ public CppDefaultPanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /* (non-Javadoc)
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#createContent()
+ */
+ @Override
+ public Control createContent() {
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ this.setLayout(layout);
+
+ label = new Label(this, SWT.NONE);
+ label.setText(Activator.getResourceString("panel.default.text"));
+ GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+ gridData.horizontalSpan = 2;
+ label.setLayoutData(gridData);
+
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#save()
+ */
+ @Override
+ public void save() {
+ }
+
+ /* (non-Javadoc)
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public Element getSelectedElement() {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(org.eclipse.uml2.uml.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ }
+
+ @Override
+ public boolean checkModifications() {
+ return false;
+ }
+
+ @Override
+ protected void refreshPanel() {
+
+ }
+} \ No newline at end of file
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppGeneralizationPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppGeneralizationPanel.java
new file mode 100644
index 00000000000..6f386980326
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppGeneralizationPanel.java
@@ -0,0 +1,254 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.views.cpp.Activator;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Generalization;
+
+import Cpp.CppVisibility;
+
+
+/**
+ * Panel displayed when a Generalization is selected
+ */
+public class CppGeneralizationPanel extends CppAbstractPanel {
+
+ /** Combo box to display visibility */
+ private Combo vPropCombo;
+
+ /** current selected generalization */
+ private Generalization selectedGeneralization;
+
+ public CppGeneralizationPanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public Generalization getSelectedElement() {
+ return selectedGeneralization;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(org.eclipse.uml2.uml.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof Generalization) {
+ this.selectedGeneralization = (Generalization)newElement;
+ } else
+ throw new RuntimeException("bad selection: " + newElement + " should be a UML2 generalization");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContent()
+ */
+ public Control createContent()
+ {
+ // creates a composite
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 1;
+ this.setLayout(gridLayout);
+
+ // Contains checkboxes associated to stereotypes
+ Group qualifierGroup = new Group(this, 0);
+ qualifierGroup.setLayout(new RowLayout());
+ qualifierGroup.setText("Generalization visibility");
+
+ // Visibility properties combo box
+ vPropCombo = new Combo(qualifierGroup, SWT.DROP_DOWN | SWT.READ_ONLY);
+ String items[] = { "public", "protected", "private" };
+ vPropCombo.setItems(items);
+ vPropCombo.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent event) {
+ checkVirtual();
+ }
+ });
+
+ this.pack();
+ return this;
+ }
+
+ /**
+ * Called when the visibility qualifier is modified
+ */
+ public void checkVirtual()
+ {
+ // Treat the generalization
+ int comboSelected = vPropCombo.getSelectionIndex();
+
+ final String visibilityVal;
+ switch(comboSelected) {
+ case 0: /* public */
+ visibilityVal = "public";
+ break;
+ case 1: /* protected */
+ visibilityVal = "protected";
+ break;
+ case 2: /* private */
+ visibilityVal = "private";
+ break;
+ default: /* public */
+ visibilityVal = "public";
+ break;
+ }
+ final CppVisibility visibility = StUtils.getApplication(selectedGeneralization, CppVisibility.class);
+ if(visibility != null) {
+ String vis = visibility.getValue();
+ if(!vis.equals(visibilityVal)) {
+ CommandSupport.exec("Set visibility for generalization", new Runnable() {
+
+ public void run() {
+ visibility.setValue(visibilityVal);
+ }
+ });
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#entryAction()
+ */
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ // Required by super class
+ public void save() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#checkModifications()
+ */
+ @Override
+ public boolean checkModifications() {
+ // no specific stereotypes tagged value to save
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#refreshPanel()
+ */
+ @Override
+ protected void refreshPanel()
+ {
+ if(selectedGeneralization != null) {
+ final CppVisibility visibility = StUtils.getApplication(selectedGeneralization, CppVisibility.class);
+ if(visibility != null) {
+ String vis = visibility.getValue();
+
+ if(vis.equals("public")) {
+ vPropCombo.select(0);
+ } else if(vis.equals("protected")) {
+ vPropCombo.select(1);
+ } else if(vis.equals("private")) {
+ vPropCombo.select(2);
+ } else {
+ Activator.log(new RuntimeException("Generalization: should never happen, model should be corrected before"));
+ vPropCombo.select(0);
+ }
+ } else {
+ Activator.log(new RuntimeException("Generalization: should never happened, model should be corrected before"));
+ vPropCombo.select(0);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#isModelValid()
+ */
+ @Override
+ protected boolean isModelValid()
+ {
+ if(selectedGeneralization == null) {
+ return true;
+ }
+
+ final CppVisibility visibility = StUtils.getApplication(selectedGeneralization, CppVisibility.class);
+ if(visibility != null) {
+ String vis = visibility.getValue();
+
+ if(!(vis.equals("public")) || !(vis.equals("protected")) || !(vis.equals("private"))) {
+ return false;
+ }
+ else {
+ return true;
+ }
+ }
+ else {
+ return false;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#updateModel()
+ */
+ @Override
+ protected void updateModel() {
+ super.updateModel();
+ if(selectedGeneralization == null) {
+ return;
+ }
+
+ final CppVisibility visibility = StUtils.getApplication(selectedGeneralization, CppVisibility.class);
+ if(visibility != null) {
+ String vis = visibility.getValue();
+ if(!(vis.equals("public")) || !(vis.equals("protected")) || !(vis.equals("private"))) {
+ CommandSupport.exec("Correct illegal visibility value", new Runnable() {
+
+ public void run() {
+ visibility.setValue("public");
+ }
+ });
+ }
+ }
+ else {
+ // good idea? apply value, even if visibility unspecified
+ // GenUtils.setStereotype (selectedGeneralization, CppVisibility.class, true);
+ // GenUtils.setTaggedValue (selectedGeneralization, CppVisibility.class, "value", "public");
+ }
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppOperationPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppOperationPanel.java
new file mode 100644
index 00000000000..3f0c33604f8
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppOperationPanel.java
@@ -0,0 +1,627 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.cpp.profile.StdStereo;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import Cpp.CppConst;
+import Cpp.CppConstInit;
+import Cpp.CppFriend;
+import Cpp.CppInline;
+import Cpp.CppVirtual;
+
+
+/**
+ * Panel displayed when an Operation is selected
+ *
+ * TODO: instead of keeping isAbstract and pureVirtual Stereotype synchronized, pure virtual
+ * could be removed from the panel
+ */
+public class CppOperationPanel extends CppAbstractPanel {
+
+ @SuppressWarnings("unused")
+ private ISourceViewer viewerBody;
+
+ @SuppressWarnings("unused")
+ private ISourceViewer viewerConstInit;
+
+ private Group groupBody;
+
+ private Group groupCInit;
+
+ // document used by the viewer
+ private IDocument docBody;
+
+ private IDocument docConstInit;
+
+ private Button isStatic;
+
+ private Button isInline;
+
+ private Button isConst;
+
+ private Button isFriend;
+
+ private Button isCreate;
+
+ private Button isDestroy;
+
+ private Combo vPropCombo;
+
+ private Operation selectedOperation;
+
+ Element selectedEOwner;
+
+ public CppOperationPanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public Operation getSelectedElement() {
+ return selectedOperation;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(java.lang.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof Operation) {
+ this.selectedOperation = (Operation)newElement;
+ // Retrieve the owner
+ this.selectedEOwner = selectedOperation.getOwner();
+ }
+ else {
+ throw new RuntimeException("bad selection: " + newElement + " should be an uml2 Operation");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContent()
+ */
+ @Override
+ public Control createContent()
+ {
+ ///////////////////////////////////////////////////////////////////////
+ // Create checkboxes
+ ///////////////////////////////////////////////////////////////////////
+ isStatic = createButton("isStatic", this, null);
+ isInline = createButton("isInline", this, isStatic);
+ isConst = createButton("isConst", this, isInline);
+ isFriend = createButton("isFriend", this, isConst);
+ isCreate = createButton("isCreate", this, isFriend);
+ isDestroy = createButton("isDestroy", this, isCreate);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Add checkboxes listeners
+ ///////////////////////////////////////////////////////////////////////
+ isStatic.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ CommandSupport.exec("C++ operation save", new Runnable() {
+
+ public void run() {
+ updateModel();
+ }
+ });
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ addStereotypeSelectionListener(isInline, "CppInline");
+ addStereotypeSelectionListener(isConst, "CppConst");
+ addStereotypeSelectionListener(isFriend, "CppFriend");
+ addStereotypeSelectionListener(isCreate, "Create");
+ addStereotypeSelectionListener(isDestroy, "Destroy");
+
+ ///////////////////////////////////////////////////////////////////////
+ // Virtual properties combo box
+ ///////////////////////////////////////////////////////////////////////
+ vPropCombo = new Combo(this, SWT.DROP_DOWN | SWT.READ_ONLY);
+ String items[] = { "not virtual", "virtual", "pure virtual" };
+ vPropCombo.setItems(items);
+ vPropCombo.setText("Virtual operation qualifiers");
+ vPropCombo.addSelectionListener(
+ new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent event) {
+ checkVirtual();
+ reset();
+ }
+ });
+
+ FormData data = new FormData();
+ data.left = new FormAttachment(isDestroy, H_SPACE);
+ data.top = new FormAttachment(0, H_SPACE);
+ vPropCombo.setLayoutData(data);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Create save reset buttons with superclass method
+ ///////////////////////////////////////////////////////////////////////
+ createSaveResetButtons();
+
+ ///////////////////////////////////////////////////////////////////////
+ // Constructor init list
+ ///////////////////////////////////////////////////////////////////////
+ docConstInit = createDocument();
+ groupCInit = createGroup(
+ this
+ , "Constructor initialisation list"
+ , isStatic
+ , null
+ , true
+ , 0
+ , 0
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerConstInit = createViewer(docConstInit, groupCInit);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Body
+ ///////////////////////////////////////////////////////////////////////
+
+ docBody = createDocumentC();
+ groupBody = createGroup(
+ this
+ , "Method body"
+ , groupCInit
+ , null
+ , true
+ , 0
+ , 0
+ , true);
+ // Use CDT CEditor coloration
+ viewerBody = createViewerC(docBody, groupBody);
+
+ ///////////////////////////////////////////////////////////////////////
+
+ return this;
+ }
+
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#save()
+ */
+ @Override
+ public void save()
+ {
+ if(selectedOperation == null) {
+ /* Log.debug("saveBody : selectedOperation is null"); */
+ } else {
+ CommandSupport.exec("C++ operation save", new Runnable() {
+
+ public void run() {
+ String newConstInit = docConstInit.get();
+ if(newConstInit.equals("")) {
+ StUtils.unapply(selectedOperation, CppConstInit.class);
+ } else {
+ CppConstInit cppConstInit =
+ StUtils.applyApp(selectedOperation, CppConstInit.class);
+ cppConstInit.setInitialisation(newConstInit);
+ }
+
+ // Body
+ setCppBody(selectedOperation, docBody.get());
+ }
+ });
+ }
+
+ }
+
+ public static String getCppBody(Operation operation)
+ {
+ // get the body of the operation
+ for(Behavior behavior : operation.getMethods()) {
+ if(behavior instanceof OpaqueBehavior) {
+ OpaqueBehavior ob = (OpaqueBehavior)behavior;
+ int i = 0;
+ for(String language : ob.getLanguages()) {
+ if(language.equals(CPP_ID)) {
+ return ob.getBodies().get(i);
+ }
+ i++;
+ }
+ }
+ }
+ return "";
+ }
+
+ public static void setCppBody(Operation operation, String body)
+ {
+ boolean done = false;
+ for(Behavior behavior : operation.getMethods()) {
+ if(behavior instanceof OpaqueBehavior) {
+ OpaqueBehavior ob = (OpaqueBehavior)behavior;
+ int i = 0;
+ for(String language : ob.getLanguages()) {
+ if(language.equals(CPP_ID)) {
+ done = true;
+ ob.getBodies().set(i, body);
+ break;
+ }
+ i++;
+ }
+ }
+ if(done) {
+ break;
+ }
+ }
+ if(!done) {
+ OpaqueBehavior ob = (OpaqueBehavior)
+ operation.getClass_().createOwnedBehavior(operation.getName(), UMLPackage.eINSTANCE.getOpaqueBehavior());
+ ob.getLanguages().add(CPP_ID);
+ ob.getBodies().add(body);
+ ob.setSpecification(operation);
+ }
+
+ }
+
+ /**
+ * Called when the static checkbox is modified
+ */
+ protected void checkStatic()
+ {
+ boolean boxState = isStatic.getSelection();
+
+ selectedOperation.setIsStatic(boxState);
+ }
+
+ /**
+ * Called when the inline checkbox is modified
+ */
+ protected void checkInline() {
+ // get the text in the activity
+ boolean boxState = isInline.getSelection();
+
+ if(boxState != StUtils.isApplied(selectedOperation, CppInline.class)) {
+ if(boxState) {
+ StUtils.apply(selectedOperation, CppInline.class);
+ }
+ else {
+ StUtils.unapply(selectedOperation, CppInline.class);
+ }
+ }
+ }
+
+ /**
+ * Called when the const checkbox is modified
+ */
+ protected void checkConst() {
+
+ boolean boxState = isConst.getSelection();
+
+ if(boxState != StUtils.isApplied(selectedOperation, CppConst.class)) {
+ if(boxState) {
+ StUtils.apply(selectedOperation, CppConst.class);
+ }
+ else {
+ StUtils.unapply(selectedOperation, CppConst.class);
+ }
+ }
+ }
+
+ /**
+ * Called when the friend checkbox is modified
+ */
+ protected void checkFriend() {
+
+ boolean boxState = isFriend.getSelection();
+
+ if(boxState != StUtils.isApplied(selectedOperation, CppFriend.class)) {
+ if(boxState) {
+ StUtils.apply(selectedOperation, CppFriend.class);
+ }
+ else {
+ StUtils.unapply(selectedOperation, CppFriend.class);
+ }
+ }
+ }
+
+ /**
+ * Called when the create checkbox is modified
+ */
+ protected void checkCreate() {
+ // get the text in the activity
+ boolean boxState = isCreate.getSelection();
+
+ if(boxState) {
+ StUtils.apply(selectedOperation, "Standard::Create");
+ }
+ else {
+ StUtils.unapply(selectedOperation, CppConstInit.class);
+ StUtils.unapply(selectedOperation, "Standard::Create");
+ }
+
+ groupCInit.setEnabled(boxState);
+ }
+
+ /**
+ * Called when the destroy checkbox is modified
+ */
+ protected void checkDestroy() {
+ // get the text in the activity
+ boolean boxState = isDestroy.getSelection();
+
+ if(boxState) {
+ StUtils.apply(selectedOperation, "Standard::Destroy");
+ }
+ else {
+ StUtils.unapply(selectedOperation, "Standard::Destroy");
+ }
+ }
+
+ /**
+ * Called when the virtual qualifier is modified
+ */
+ protected void checkVirtual() {
+
+ // Treat the operation
+ int comboSelected = 2;
+
+ // If owner is a class
+ if(selectedEOwner instanceof org.eclipse.uml2.uml.Class) {
+ comboSelected = vPropCombo.getSelectionIndex();
+ } else {
+ // Assume this is an interface
+ comboSelected = 2;
+ }
+
+ if(comboSelected == 0 /* not virtual */) {
+
+ selectedOperation.setIsAbstract(false);
+ StUtils.unapply(selectedOperation, CppVirtual.class);
+ }
+ else if(comboSelected == 1 /* virtual */) {
+
+ selectedOperation.setIsAbstract(false);
+ StUtils.apply(selectedOperation, CppVirtual.class);
+ }
+ else if(comboSelected == 2 /* pure virtual */) {
+
+ selectedOperation.setIsAbstract(true);
+ StUtils.apply(selectedOperation, CppVirtual.class);
+ }
+
+ // Treat the owner class
+ if(selectedEOwner instanceof Class) {
+ Class ownerCl = (Class)selectedEOwner;
+
+ ownerCl.setIsAbstract(ownerCl.isAbstract());
+ } // else nothing
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#entryAction()
+ */
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#exitAction()
+ */
+ public void exitAction() {
+ // do exit action, only if the owner is a class
+ if(selectedEOwner instanceof Class) {
+ super.exitAction();
+ }
+ }
+
+ @Override
+ public boolean checkModifications() {
+ // check if ConstInit has changed
+ String valueConstInit = "";
+ CppConstInit constInit = StUtils.getApplication(selectedOperation, CppConstInit.class);
+ if(constInit != null) {
+ valueConstInit = constInit.getInitialisation();
+ }
+ if(!docConstInit.get().equals(valueConstInit)) {
+ return true;
+ }
+
+ String methodBody = getCppBody(selectedOperation);
+
+ if(!(docBody.get().equals(methodBody))) {
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ protected void refreshPanel() {
+ if(selectedOperation == null) {
+ /* Log.debug("resetBody : selectedOperation is null"); */
+ } else {
+
+ // get the text in the activity if parent is a class
+ if(selectedEOwner instanceof Class) {
+
+ // This part is done for a class only
+ CppConstInit constInit = StUtils.getApplication(selectedOperation, CppConstInit.class);
+ if(constInit != null) {
+ docConstInit.set(constInit.getInitialisation());
+ }
+
+ // Don't show this unless the operation is a constructor
+ if(isCreate.getSelection()) {
+ groupCInit.setEnabled(true);
+ } else {
+ docConstInit.set("");
+ groupCInit.setEnabled(false);
+ }
+
+ String body = getCppBody(selectedOperation);
+ docBody.set(body);
+
+ // Combo Box
+ if(selectedOperation.isAbstract()) {
+ vPropCombo.select(2);
+ // Nothing in body and body unavailable
+ docBody.set("");
+ groupBody.setEnabled(false);
+ }
+ else {
+ if(StUtils.isApplied(selectedOperation, CppVirtual.class)) {
+ vPropCombo.select(1);
+ groupBody.setEnabled(true);
+ }
+ else {
+ vPropCombo.select(0);
+ groupBody.setEnabled(true);
+ }
+ }
+
+ // Inline
+ if(StUtils.isApplied(selectedOperation, CppInline.class)) {
+ isInline.setSelection(true);
+ }
+
+ }
+ else {
+ // Don't show text areas nor buttons
+ groupBody.setVisible(false);
+ buttonSave.setVisible(false);
+ buttonCancel.setVisible(false);
+
+ // Methods are virtual pure
+ vPropCombo.select(2);
+ vPropCombo.setEnabled(false);
+
+ // Inline not visible
+ isInline.setVisible(false);
+ }
+
+ isStatic.setSelection(selectedOperation.isStatic());
+ isConst.setSelection(StUtils.isApplied(selectedOperation, CppConst.class));
+ isFriend.setSelection(StUtils.isApplied(selectedOperation, CppFriend.class));
+ isCreate.setSelection(StUtils.isApplied(selectedOperation, StdStereo.create));
+ isDestroy.setSelection(StUtils.isApplied(selectedOperation, StdStereo.destroy));
+ }
+ }
+
+ @Override
+ protected boolean isModelValid() {
+ if(selectedOperation == null) {
+ return true;
+ }
+ if(selectedEOwner instanceof Class) {
+
+ if(selectedOperation.isAbstract()) {
+ if(!StUtils.isApplied(selectedOperation, CppVirtual.class)) {
+ return false;
+ }
+ }
+ } else {
+ // owner is interface
+ if(!selectedOperation.isAbstract()) {
+ return false;
+ }
+ if(StUtils.isApplied(selectedOperation, CppVirtual.class)) {
+ return false;
+ }
+ }
+ return true;
+
+ }
+
+ @Override
+ protected void updateModel()
+ {
+ CommandSupport.exec("C++ operation save", new Runnable() {
+
+ public void run()
+ {
+ // Check button changes
+ checkStatic();
+ checkConst();
+ checkCreate();
+ checkDestroy();
+ checkInline();
+ checkFriend();
+
+ if(selectedOperation == null) {
+ return;
+ }
+ if(selectedEOwner instanceof Class) {
+ // toggle Stereotypes pure virtual if element is abstract
+ if(selectedOperation.isAbstract()) {
+ if(!StUtils.isApplied(selectedOperation, CppVirtual.class)) {
+ // selectedOperation.toggleStereotype("CppVirtualPure", true);
+ // selectedOperation.toggleStereotype("CppVirtual", false);
+ } else {
+ // selectedOperation.toggleStereotype("CppVirtual", false);
+ }
+ }
+
+ // if element is abstract and has CppVirtualPure, set to Virtual only
+ if(!selectedOperation.isAbstract()) {
+ if(StUtils.isApplied(selectedOperation, CppVirtual.class)) {
+ // selectedOperation.toggleStereotype("CppVirtualPure", false);
+ // selectedOperation.toggleStereotype("CppVirtual", true);
+ } else {
+ // selectedOperation.toggleStereotype("CppVirtualPure", false);
+ // selectedOperation.toggleStereotype("CppVirtual", false);
+ }
+ }
+ }
+ else {
+ selectedOperation.setIsAbstract(true);
+ // selectedOperation.toggleStereotype("CppVirtual", false);
+ // selectedOperation.toggleStereotype("CppVirtualPure", true);
+ }
+ }
+ });
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPackagePanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPackagePanel.java
new file mode 100644
index 00000000000..d0ee532bcd0
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPackagePanel.java
@@ -0,0 +1,177 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Package;
+
+import Cpp.CppInclude;
+
+
+/**
+ * Panel displayed when a Package is selected
+ */
+public class CppPackagePanel extends CppAbstractPanel {
+
+ // document used by the viewer for header include
+ private IDocument headerDocument;
+
+ // private SourceViewer headerViewer;
+ private Group headerGroup;
+
+ // Current selection
+ private Package selectedPackage;
+
+ /**
+ * Default constructor
+ *
+ * @param parent
+ * the composite parent of this panel
+ * @param style
+ * the SWT style of this panel
+ */
+ public CppPackagePanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public org.eclipse.uml2.uml.Package getSelectedElement() {
+ return selectedPackage;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(java.lang.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof Package) {
+ this.selectedPackage = (Package)newElement;
+ }
+ else {
+ throw new RuntimeException("bad selection: " + newElement + " should be an uml2 Package");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContentHI()
+ */
+ public Control createContent() {
+
+ ///////////////////////////////////////////////////////////////////////
+ // Create a composite that contain the "Save/Cancel" buttons
+ ///////////////////////////////////////////////////////////////////////
+ createSaveResetButtons();
+
+ ///////////////////////////////////////////////////////////////////////
+ // Package header declaration
+ ///////////////////////////////////////////////////////////////////////
+ headerDocument = createDocumentC();
+ headerGroup = createGroup(
+ this
+ , "Header include declarations"
+ , buttonSave
+ , null
+ , true
+ , 0
+ , 0
+ , true);
+ // Use CDT CEditor coloration
+ // headerViewer
+ createViewerC(headerDocument, headerGroup);
+
+ ///////////////////////////////////////////////////////////////////////
+ return this;
+ }
+
+ /**
+ * Saves the include declarations for a '<code>Package</code>'
+ */
+ public void save()
+ {
+ if(selectedPackage == null) {
+ /* Log.debug("saveBody : selectedPackage is null"); */
+ }
+ else {
+ CommandSupport.exec("C++ package save", new Runnable() {
+
+ public void run()
+ {
+ if(headerDocument.get().equals("")) {
+ StUtils.unapply(selectedPackage, CppInclude.class);
+ } else {
+ CppInclude cppInclude = StUtils.applyApp(selectedPackage, CppInclude.class);
+ cppInclude.setHeader(headerDocument.get());
+ }
+ }
+ });
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#refreshPanel()
+ */
+ @Override
+ protected void refreshPanel() {
+ if(selectedPackage != null) {
+ CppInclude cppInclude = StUtils.getApplication(selectedPackage, CppInclude.class);
+ if(cppInclude != null) {
+ headerDocument.set(cppInclude.getHeader());
+ }
+ else {
+ headerDocument.set("");
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#entryAction()
+ */
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#checkModifications()
+ */
+ @Override
+ public boolean checkModifications() {
+ String headerInModel = "";
+ CppInclude cppInclude = StUtils.getApplication(selectedPackage, CppInclude.class);
+ if(cppInclude != null) {
+ headerInModel = cppInclude.getHeader();
+ }
+ return (!(headerDocument.get().equals(headerInModel)));
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppParameterPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppParameterPanel.java
new file mode 100644
index 00000000000..72602c81bfc
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppParameterPanel.java
@@ -0,0 +1,340 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Parameter;
+
+import Cpp.CppArray;
+import Cpp.CppConst;
+import Cpp.CppPtr;
+import Cpp.CppRef;
+
+
+/**
+ * Panel displayed when a Parameter is selected
+ */
+public class CppParameterPanel extends CppAbstractPanel {
+
+ private Button isConst;
+
+ private Parameter selectedParameter;
+
+ // document used by the viewer
+ private IDocument docPtr;
+
+ private IDocument docRef;
+
+ private IDocument docArray;
+
+ private IDocument docDefault;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerPtr;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerRef;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerArray;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerDefault;
+
+ private Group groupPtr;
+
+ private Group groupRef;
+
+ private Group groupArray;
+
+ private Group groupDefault;
+
+ public CppParameterPanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public org.eclipse.uml2.uml.Parameter getSelectedElement() {
+ return selectedParameter;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(java.lang.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof Parameter) {
+ this.selectedParameter = (Parameter)newElement;
+ }
+ else {
+ throw new RuntimeException("bad selection: " + newElement + " should be an uml2 Parameter");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContent()
+ */
+ public Control createContent() {
+ ///////////////////////////////////////////////////////////////////////
+ // Create save reset buttons with superclass method
+ ///////////////////////////////////////////////////////////////////////
+ createSaveResetButtons();
+
+ ///////////////////////////////////////////////////////////////////////
+ // Create checkboxes
+ ///////////////////////////////////////////////////////////////////////
+ isConst = createButton("isConst", this, null);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Add checkboxes listeners
+ ///////////////////////////////////////////////////////////////////////
+ addStereotypeSelectionListener(isConst, "CppConst");
+
+ ///////////////////////////////////////////////////////////////////////
+ // Pointer declaration
+ ///////////////////////////////////////////////////////////////////////
+ docPtr = createDocument();
+ groupPtr = createGroup(
+ this
+ , "Pointer declaration"
+ , buttonSave
+ , null
+ , false
+ , 0
+ , 25
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerPtr = createViewer(docPtr, groupPtr);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Pointer declaration
+ ///////////////////////////////////////////////////////////////////////
+ docRef = createDocument();
+ groupRef = createGroup(
+ this
+ , "Reference declaration"
+ , buttonSave
+ , groupPtr
+ , false
+ , 0
+ , 50
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerRef = createViewer(docRef, groupRef);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Pointer declaration
+ ///////////////////////////////////////////////////////////////////////
+ docDefault = createDocument();
+ groupDefault = createGroup(
+ this
+ , "Default value"
+ , buttonSave
+ , groupRef
+ , false
+ , 0
+ , 75
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerDefault = createViewer(docDefault, groupDefault);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Pointer declaration
+ ///////////////////////////////////////////////////////////////////////
+ docArray = createDocument();
+ groupArray = createGroup(
+ this
+ , "Array value ([...])"
+ , buttonSave
+ , groupDefault
+ , true
+ , 0
+ , 0
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerArray = createViewer(docArray, groupArray);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Return control
+ ///////////////////////////////////////////////////////////////////////
+
+ return this;
+ }
+
+ /**
+ * Saves the body for an '<code>Parameter</code>'
+ */
+ public void save()
+ {
+ if(selectedParameter == null) {
+ /* Log.debug("saveBody : selectedParameter is null"); */
+ }
+ else {
+ CommandSupport.exec("C++ parameter save", new Runnable() {
+
+ public void run()
+ {
+ // Treat Pointer
+ String newPtr = docPtr.get();
+ if(newPtr.equals("")) {
+ StUtils.unapply(selectedParameter, CppPtr.class);
+ }
+ else {
+ StUtils.apply(selectedParameter, CppPtr.class);
+ }
+
+ // Treat Reference
+ String newRef = docRef.get();
+ if(newRef.equals("")) {
+ StUtils.unapply(selectedParameter, CppRef.class);
+ }
+ else {
+ StUtils.apply(selectedParameter, CppRef.class);
+ }
+
+ // Treat DefaultValue
+ // need common class for facilitating this
+ // selectedParameter.setDefaultValue(selectedParameter.createDefaultValue("default", selectedParameter.getType(), null);
+
+ // Treat Array
+ String newArray = docArray.get();
+ if(newArray.equals("")) {
+ StUtils.unapply(selectedParameter, CppArray.class);
+ }
+ else {
+ StUtils.apply(selectedParameter, CppArray.class);
+ // StUtils.setTaggedValue(selectedParameter, CppArray.class, "definition", newArray);
+ }
+ }
+ });
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#refreshPanel()
+ */
+ @Override
+ protected void refreshPanel() {
+ if(selectedParameter != null) {
+ // Const
+
+ isConst.setSelection(StUtils.isApplied(selectedParameter, CppConst.class));
+ // TODO: examine effect;
+ // isConst.setSelection(selectedParameter.getEffect?);
+
+ docPtr.set(StUtils.isApplied(selectedParameter, CppPtr.class) ? "*" : "");
+ docRef.set(StUtils.isApplied(selectedParameter, CppRef.class) ? "&" : "");
+ docDefault.set(selectedParameter.getDefault());
+ docArray.set(StUtils.isApplied(selectedParameter, CppArray.class) ? "[]" : "");
+ // need definition?
+ }
+ }
+
+ /**
+ * Called when the static checkbox is modified
+ */
+ protected void checkConst() {
+
+ boolean boxState = isConst.getSelection();
+
+ if(boxState) {
+ if(!StUtils.isApplied(selectedParameter, CppConst.class)) {
+ StUtils.apply(selectedParameter, CppConst.class);
+ }
+ } else {
+ if(StUtils.isApplied(selectedParameter, CppConst.class)) {
+ StUtils.unapply(selectedParameter, CppConst.class);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#entryAction()
+ */
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#checkModifications()
+ */
+ @Override
+ public boolean checkModifications() {
+ String ptrValue = StUtils.isApplied(selectedParameter, CppPtr.class) ? "*" : "";
+ if(!docPtr.get().equals(ptrValue)) {
+ return true;
+ }
+
+ String refValue = StUtils.isApplied(selectedParameter, CppRef.class) ? "&" : "";
+ if(!docRef.get().equals(refValue)) {
+ return true;
+ }
+
+ String defaultValue = selectedParameter.getDefault();
+ if(defaultValue == null) {
+ if(!docDefault.get().equals("")) {
+ return true;
+ }
+ }
+ else if(!docDefault.get().equals(defaultValue)) {
+ return true;
+ }
+
+ String arrayValue = StUtils.isApplied(selectedParameter, CppArray.class) ? "[]" : "";
+ if(!docArray.get().equals(arrayValue)) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected void updateModel() {
+
+ // Check button changes
+ CommandSupport.exec("C++ parameter update", new Runnable() {
+
+ public void run()
+ {
+ checkConst();
+ }
+ });
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPrimitiveTypePanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPrimitiveTypePanel.java
new file mode 100644
index 00000000000..83140d59b1f
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPrimitiveTypePanel.java
@@ -0,0 +1,161 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.PrimitiveType;
+
+import Cpp.CppType;
+
+
+/**
+ * Panel displayed when a PrimitiveType is selected
+ */
+public class CppPrimitiveTypePanel extends CppAbstractPanel {
+
+ // document used by the viewer for definition of the type
+ @SuppressWarnings("unused")
+ private SourceViewer typeViewer;
+
+ private Group typeGroup;
+
+ private IDocument typeDocument;
+
+ // Current selection
+ private PrimitiveType selectedPType;
+
+ public CppPrimitiveTypePanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public PrimitiveType getSelectedElement() {
+ return selectedPType;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(java.lang.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof PrimitiveType) {
+ this.selectedPType = (PrimitiveType)newElement;
+ }
+ else {
+ throw new RuntimeException("bad selection: " + newElement + " should be an uml2 PrimitiveType");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContentHI()
+ */
+ public Control createContent() {
+
+ ///////////////////////////////////////////////////////////////////////
+ // Create save reset buttons with superclass method
+ ///////////////////////////////////////////////////////////////////////
+ createSaveResetButtons();
+
+ ///////////////////////////////////////////////////////////////////////
+ // Type definition text area
+ ///////////////////////////////////////////////////////////////////////
+
+ typeDocument = createDocumentC();
+ typeGroup = createGroup(this, "Type definition", buttonSave, null, true, 0, 0, true);
+ // Use CDT CEditor coloration
+ typeViewer = createViewerC(typeDocument, typeGroup);
+
+ ///////////////////////////////////////////////////////////////////////
+
+ return this;
+ }
+
+ /**
+ * Saves the include declarations for a '<code>PrimitiveType</code>'
+ */
+ public void save() {
+ if(selectedPType == null) {
+ /* Log.debug("saveBody : selectedOperation is null"); */
+ }
+ else {
+ CommandSupport.exec("C++ primitive type save", new Runnable() {
+
+ public void run()
+ {
+ if(typeDocument.get().equals("")) {
+ StUtils.unapply(selectedPType, CppType.class);
+ }
+ else {
+ CppType cppType = StUtils.applyApp(selectedPType, CppType.class);
+ cppType.setDefinition(typeDocument.get());
+ }
+ }
+ });
+ }
+ }
+
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#refreshPanel()
+ */
+ @Override
+ protected void refreshPanel() {
+ if(selectedPType != null) {
+ CppType cppType = StUtils.getApplication(selectedPType, CppType.class);
+ typeDocument.set(cppType != null ? cppType.getDefinition() : "");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#entryAction()
+ */
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#checkModifications()
+ */
+ @Override
+ public boolean checkModifications() {
+ CppType cppType = StUtils.getApplication(selectedPType, CppType.class);
+ String typeInModel = cppType != null ? cppType.getDefinition() : "";
+ if(!typeDocument.get().equals(typeInModel)) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPropertyPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPropertyPanel.java
new file mode 100644
index 00000000000..d2177317a31
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppPropertyPanel.java
@@ -0,0 +1,375 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+
+import Cpp.CppArray;
+import Cpp.CppConst;
+import Cpp.CppPtr;
+import Cpp.CppRef;
+
+
+/**
+ * Panel displayed when a Property is selected
+ */
+public class CppPropertyPanel extends CppAbstractPanel {
+
+ private Button isStatic;
+
+ private Button isConst;
+
+ private Property selectedProperty;
+
+ // document used by the viewer
+ private IDocument docPtr;
+
+ private IDocument docRef;
+
+ private IDocument docArray;
+
+ private IDocument docDefault;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerPtr;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerRef;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerArray;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerDefault;
+
+ private Group groupPtr;
+
+ private Group groupRef;
+
+ private Group groupArray;
+
+ private Group groupDefault;
+
+ public CppPropertyPanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public Property getSelectedElement() {
+ return selectedProperty;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(java.lang.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof Property) {
+ this.selectedProperty = (Property)newElement;
+ }
+ else {
+ throw new RuntimeException("bad selection: " + newElement + " should be an uml2 Property");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContent()
+ */
+ @Override
+ public Control createContent() {
+ ///////////////////////////////////////////////////////////////////////
+ // Create save reset buttons with superclass method
+ ///////////////////////////////////////////////////////////////////////
+ createSaveResetButtons();
+
+ ///////////////////////////////////////////////////////////////////////
+ // Create checkboxes
+ ///////////////////////////////////////////////////////////////////////
+ isStatic = createButton("isStatic", this, null);
+ isConst = createButton("isConst", this, isStatic);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Add checkboxes listeners
+ ///////////////////////////////////////////////////////////////////////
+ isStatic.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ updateModel();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+ addStereotypeSelectionListener(isConst, "CppConst");
+
+ ///////////////////////////////////////////////////////////////////////
+ // Pointer declaration
+ ///////////////////////////////////////////////////////////////////////
+ docPtr = createDocument();
+ groupPtr = createGroup(
+ this
+ , "Pointer declaration"
+ , buttonSave
+ , null
+ , false
+ , 0
+ , 25
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerPtr = createViewer(docPtr, groupPtr);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Pointer declaration
+ ///////////////////////////////////////////////////////////////////////
+ docRef = createDocument();
+ groupRef = createGroup(
+ this
+ , "Reference declaration"
+ , buttonSave
+ , groupPtr
+ , false
+ , 0
+ , 50
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerRef = createViewer(docRef, groupRef);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Pointer declaration
+ ///////////////////////////////////////////////////////////////////////
+ docDefault = createDocument();
+ groupDefault = createGroup(
+ this
+ , "Default value"
+ , buttonSave
+ , groupRef
+ , false
+ , 0
+ , 75
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerDefault = createViewer(docDefault, groupDefault);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Pointer declaration
+ ///////////////////////////////////////////////////////////////////////
+ docArray = createDocument();
+ groupArray = createGroup(
+ this
+ , "Array value ([...])"
+ , buttonSave
+ , groupDefault
+ , true
+ , 0
+ , 0
+ , false);
+
+ // Use CDT CEditor coloration
+ viewerArray = createViewer(docArray, groupArray);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Return control
+ ///////////////////////////////////////////////////////////////////////
+
+ return this;
+ }
+
+ /**
+ * Saves the body for an '<code>Property</code>'
+ */
+ public void save()
+ {
+ if(selectedProperty == null) {
+ /* Log.debug("saveBody : selectedProperty is null"); */
+ }
+ else {
+ CommandSupport.exec("C++ package save", new Runnable() {
+
+ public void run()
+ {
+ // Treat Pointer
+ String newPtr = docPtr.get();
+ if(newPtr.equals("")) {
+ StUtils.unapply(selectedProperty, CppPtr.class);
+ }
+ else {
+ StUtils.apply(selectedProperty, CppPtr.class);
+ }
+
+ // Treat Reference
+ String newRef = docRef.get();
+ if(newRef.equals("")) {
+ StUtils.unapply(selectedProperty, CppRef.class);
+ }
+ else {
+ StUtils.apply(selectedProperty, CppRef.class);
+ }
+
+ // Treat DefaultValue
+ // need common class for facilitating this
+ // selectedParameter.setDefaultValue(selectedParameter.createDefaultValue("default", selectedParameter.getType(), null);
+
+ // Treat Array
+ String newArray = docArray.get();
+ if(newArray.equals("")) {
+ StUtils.unapply(selectedProperty, CppArray.class);
+ }
+ else {
+ StUtils.apply(selectedProperty, CppArray.class);
+ }
+ }
+ });
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#refreshPanel()
+ */
+ @Override
+ protected void refreshPanel() {
+ if(selectedProperty == null) {
+ /* Log.debug("resetBody : selectedProperty is null"); */
+ }
+ else {
+ isStatic.setSelection(selectedProperty.isStatic());
+ isConst.setSelection(StUtils.isApplied(selectedProperty, CppConst.class));
+ docPtr.set(StUtils.isApplied(selectedProperty, CppPtr.class) ? "*" : "");
+ docRef.set(StUtils.isApplied(selectedProperty, CppRef.class) ? "&" : "");
+ docDefault.set(selectedProperty.getDefault());
+ docArray.set(StUtils.isApplied(selectedProperty, CppArray.class) ? "[]" : "");
+ }
+ }
+
+ /**
+ * Called when the static checkbox is modified
+ */
+ protected void checkStatic() {
+
+ boolean boxState = isStatic.getSelection();
+
+ selectedProperty.setIsStatic(boxState);
+ }
+
+ /**
+ * Called when the const checkbox is modified
+ */
+ protected void checkConst() {
+ boolean boxState = isConst.getSelection();
+
+ if(StUtils.isApplied(selectedProperty, CppConst.class) != boxState) {
+ if(boxState) {
+ StUtils.apply(selectedProperty, CppConst.class);
+ }
+ else {
+ StUtils.unapply(selectedProperty, CppConst.class);
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#entryAction()
+ */
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#exitAction()
+ */
+ public void exitAction() {
+ super.exitAction();
+ }
+
+ /**
+ * Checks if the content of the panel is different to the model
+ * <p>
+ * This is a read only operation
+ *
+ * @return <code>true</code> if one of the element of the model is not up-to-date
+ * with the content of the panel
+ */
+ public boolean checkModifications() {
+ String ptrValue = StUtils.isApplied(selectedProperty, CppPtr.class) ? "*" : "";
+ if(!docPtr.get().equals(ptrValue)) {
+ return true;
+ }
+
+ String refValue = StUtils.isApplied(selectedProperty, CppRef.class) ? "&" : "";
+ if(!docRef.get().equals(refValue)) {
+ return true;
+ }
+
+ String defaultValue = selectedProperty.getDefault();
+ if(defaultValue == null) {
+ if(!docDefault.get().equals("")) {
+ return true;
+ }
+ }
+ else if(!docDefault.get().equals(defaultValue)) {
+ return true;
+ }
+
+ String arrayValue = StUtils.isApplied(selectedProperty, CppArray.class) ? "[]" : "";
+ if(!docArray.get().equals(arrayValue)) {
+ return true;
+ }
+ return false;
+
+ }
+
+
+ @Override
+ protected void updateModel()
+ {
+ CommandSupport.exec("C++ property save", new Runnable() {
+
+ public void run()
+ {
+ // Check button changes
+ checkStatic();
+ checkConst();
+
+ }
+ });
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppTemplateBindingPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppTemplateBindingPanel.java
new file mode 100644
index 00000000000..2d66fedd2e2
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppTemplateBindingPanel.java
@@ -0,0 +1,174 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.TemplateBinding;
+
+import Cpp.CppTemplateBinding;
+
+
+/**
+ * Panel displayed when a TemplateBinding is selected
+ */
+public class CppTemplateBindingPanel extends CppAbstractPanel {
+
+ private TemplateBinding selectedTB;
+
+ // document used by the viewer
+ private IDocument docBinding;
+
+ @SuppressWarnings("unused")
+ private SourceViewer viewerBinding;
+
+ private Group groupBinding;
+
+ public CppTemplateBindingPanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public TemplateBinding getSelectedElement() {
+ return selectedTB;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(java.lang.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof TemplateBinding) {
+ this.selectedTB = (TemplateBinding)newElement;
+ }
+ else {
+ throw new RuntimeException("bad selection: " + newElement + " should be an uml2 TemplateBinding");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContent()
+ */
+ public Control createContent() {
+
+ ///////////////////////////////////////////////////////////////////////
+ // Create save reset buttons with superclass method
+ ///////////////////////////////////////////////////////////////////////
+ createSaveResetButtons();
+
+ ///////////////////////////////////////////////////////////////////////
+ // Body
+ ///////////////////////////////////////////////////////////////////////
+
+ docBinding = createDocumentC();
+ groupBinding = createGroup(
+ this
+ , "Binding declaration (<...>)"
+ , groupBinding
+ , null
+ , true
+ , 0
+ , 0
+ , true);
+ // Use CDT CEditor coloration
+ viewerBinding = createViewerC(docBinding, groupBinding);
+
+ ///////////////////////////////////////////////////////////////////////
+
+ return this;
+ }
+
+ /**
+ * Saves the body for an '<code>TemplateBinding</code>'
+ */
+ public void save()
+ {
+ if(selectedTB == null) {
+ /* Log.debug("saveBody : selectedTemplateBinding is null"); */
+ }
+ else {
+ CommandSupport.exec("C++ template binding save", new Runnable() {
+
+ public void run()
+ {
+ // Treat Pointer
+ String newB = docBinding.get();
+ if(newB.equals("")) {
+ StUtils.unapply(selectedTB, CppTemplateBinding.class);
+ } else {
+ CppTemplateBinding templateBinding = StUtils.applyApp(selectedTB, CppTemplateBinding.class);
+ // TODO: use UML template bindings?
+ templateBinding.setBinding(newB);
+ }
+ }
+ });
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#refreshPanel()
+ */
+ @Override
+ protected void refreshPanel() {
+ if(selectedTB != null) {
+ CppTemplateBinding templateBinding = StUtils.getApplication(selectedTB, CppTemplateBinding.class);
+ // TODO: use UML template bindings?
+ docBinding.set(templateBinding != null ? templateBinding.getBinding() : "");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#entryAction()
+ */
+ @Override
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#checkModifications()
+ */
+ @Override
+ public boolean checkModifications() {
+ CppTemplateBinding templateBinding = StUtils.getApplication(selectedTB, CppTemplateBinding.class);
+ // TODO: use UML template bindings?
+ String bindingValue = templateBinding != null ? templateBinding.getBinding() : "";
+ if(!docBinding.get().equals(bindingValue)) {
+ return true;
+ }
+ return false;
+
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppTemplateParameterPanel.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppTemplateParameterPanel.java
new file mode 100644
index 00000000000..997f13494a5
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/CppTemplateParameterPanel.java
@@ -0,0 +1,176 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.source.SourceViewer;
+import org.eclipse.papyrus.cpp.profile.StUtils;
+import org.eclipse.papyrus.views.cpp.CommandSupport;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.TemplateParameter;
+
+import Cpp.CppTemplateParameter;
+
+
+/**
+ * Panel displayed when a TemplateParameter is selected
+ */
+public class CppTemplateParameterPanel extends CppAbstractPanel {
+
+ private TemplateParameter selectedTP;
+
+ // document used by the viewer
+ @SuppressWarnings("unused")
+ private SourceViewer viewerParameter;
+
+ private Group groupParameter;
+
+ private IDocument docParameter;
+
+ public CppTemplateParameterPanel(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#getSelectedElement()
+ */
+ @Override
+ public TemplateParameter getSelectedElement() {
+ return selectedTP;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#setSelectedElement(java.lang.Element)
+ */
+ @Override
+ public void setSelectedElement(Element newElement) {
+ super.setSelectedElement(newElement);
+ if(newElement instanceof TemplateParameter) {
+ this.selectedTP = (TemplateParameter)newElement;
+ }
+ else {
+ throw new RuntimeException("bad selection: " + newElement + " should be an uml2 TemplateParameter");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accorduml.ui.views.panels.AccordUMLAbstractPanel#createContent()
+ */
+ public Control createContent() {
+
+ ///////////////////////////////////////////////////////////////////////
+ // Create save reset buttons with superclass method
+ ///////////////////////////////////////////////////////////////////////
+ createSaveResetButtons();
+
+ ///////////////////////////////////////////////////////////////////////
+ // TemplateParameter declaration
+ ///////////////////////////////////////////////////////////////////////
+ docParameter = createDocumentC();
+ groupParameter = createGroup(
+ this
+ , "Parameter name"
+ , buttonSave
+ , null
+ , true
+ , 0
+ , 0
+ , true);
+ // Use CDT CEditor coloration
+ viewerParameter = createViewerC(docParameter, groupParameter);
+
+ ///////////////////////////////////////////////////////////////////////
+ // Return control on this composite
+ ///////////////////////////////////////////////////////////////////////
+
+ return this;
+ }
+
+ /**
+ * Saves the body for an '<code>Property</code>'
+ */
+ public void save()
+ {
+ if(selectedTP == null) {
+ /* Log.debug("saveBody : selectedProperty is null"); */
+ }
+ else {
+ CommandSupport.exec("C++ template parameter save", new Runnable() {
+
+ public void run()
+ {
+ // Treat Parameter name
+ String newB = docParameter.get();
+ if(newB.equals("")) {
+ StUtils.unapply(selectedTP, CppTemplateParameter.class);
+ }
+ else {
+ CppTemplateParameter templateParameter = StUtils.applyApp(selectedTP, CppTemplateParameter.class);
+ templateParameter.setName(newB);
+ }
+ }
+ });
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#refreshPanel()
+ */
+ @Override
+ protected void refreshPanel() {
+ if(selectedTP == null) {
+ /* Log.debug("resetBody : selectedProperty is null"); */
+ } else {
+
+ CppTemplateParameter templateParameter = StUtils.getApplication(selectedTP, CppTemplateParameter.class);
+ String parameterName = templateParameter != null ? templateParameter.getName() : "";
+ docParameter.set(parameterName);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#entryAction()
+ */
+ public void entryAction() {
+ super.entryAction();
+ reset();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.accordcpp.core.ui.panels.AccordCppAbstractPanel#checkModifications()
+ */
+ @Override
+ public boolean checkModifications() {
+ CppTemplateParameter templateParameter = StUtils.getApplication(selectedTP, CppTemplateParameter.class);
+ // TODO: use UML template bindings?
+ String parameterName = templateParameter != null ? templateParameter.getName() : "";
+ if(!docParameter.get().equals(parameterName)) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/PanelFactory.java b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/PanelFactory.java
new file mode 100644
index 00000000000..4dad3b32e64
--- /dev/null
+++ b/extraplugins/cpp-codegen/org.eclipse.papyrus.views.cpp/src/org/eclipse/papyrus/views/panels/PanelFactory.java
@@ -0,0 +1,133 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2007 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.views.panels;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.UMLPackage;
+
+
+/**
+ * Factory that creates panel given element type.
+ */
+public class PanelFactory {
+
+ /** Singleton instance for this factory */
+ public static PanelFactory eINSTANCE = new PanelFactory();
+
+ /**
+ * Default constructor (private visibility for singleton pattern)
+ */
+ protected PanelFactory() {
+ }
+
+ /**
+ * Creates a panel for the given object. The object should be an {@link Element}. If not,
+ * it returns a default panel.
+ *
+ * @param parent
+ * the composite parent for the new panel
+ * @param style
+ * the SWT style of the panel
+ * @param object
+ * the object for which the panel is created
+ * @return the newly created panel
+ */
+ public CppAbstractPanel createPanel(Composite parent, int style, Object object) {
+ CppAbstractPanel panel;
+ if(object instanceof Element) {
+ panel = createPanel(parent, style, (Element)object);
+ } else {
+ panel = createPanel(parent, style, null);
+ }
+ return panel;
+ }
+
+ /**
+ * Creates a panel for the given element.
+ *
+ * @param parent
+ * the composite parent for the new panel
+ * @param style
+ * the SWT style of the panel
+ * @param element
+ * the UML2 element for which the panel is created
+ * @return the newly created panel
+ */
+ public CppAbstractPanel createPanel(Composite parent, int style, Element element) {
+ CppAbstractPanel panel = null;
+ int metaclassID = -1; // -1 => default case
+ if(element instanceof Behavior) {
+ // navigate from behavior to specification
+ element = ((Behavior)element).getSpecification();
+ }
+ if(element != null) {
+ metaclassID = element.eClass().getClassifierID();
+ }
+
+ switch(metaclassID) {
+
+ case UMLPackage.OPERATION:
+ panel = new CppOperationPanel(parent, style);
+ break;
+
+ case UMLPackage.CLASS:
+ panel = new CppClassPanel(parent, style);
+ break;
+
+ case UMLPackage.PACKAGE:
+ panel = new CppPackagePanel(parent, style);
+ break;
+
+ case UMLPackage.MODEL:
+ panel = new CppPackagePanel(parent, style);
+ break;
+
+ case UMLPackage.PRIMITIVE_TYPE:
+ panel = new CppPrimitiveTypePanel(parent, style);
+ break;
+
+ // same panel for property and its child elements
+ case UMLPackage.PROPERTY:
+ case UMLPackage.EXTENSION_END:
+ case UMLPackage.PORT:
+ panel = new CppPropertyPanel(parent, style);
+ break;
+
+ case UMLPackage.PARAMETER:
+ panel = new CppParameterPanel(parent, style);
+ break;
+
+ case UMLPackage.TEMPLATE_PARAMETER:
+ panel = new CppTemplateParameterPanel(parent, style);
+ break;
+
+ case UMLPackage.TEMPLATE_BINDING:
+ panel = new CppTemplateBindingPanel(parent, style);
+ break;
+
+ case UMLPackage.GENERALIZATION:
+ panel = new CppGeneralizationPanel(parent, style);
+ break;
+
+ default:
+ panel = new CppDefaultPanel(parent, style);
+ break;
+ }
+
+ panel.createContent();
+ panel.setSelectedElement(element);
+ return panel;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath
new file mode 100644
index 00000000000..304e86186aa
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.project
new file mode 100644
index 00000000000..856e4c4cd85
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.fcm.profile</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..1ee64eac90b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.fcm.profile;singleton:=true
+Bundle-Version: 0.9.2.vqualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: FCM,
+ FCM.impl,
+ FCM.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.uml2.uml,
+ org.eclipse.emf.transaction;bundle-version="1.4.0",
+ org.eclipse.papyrus.infra.core;bundle-version="0.9.2",
+ org.eclipse.gmf.runtime.common.core;bundle-version="1.4.1",
+ org.eclipse.gmf.runtime.emf.commands.core;bundle-version="1.4.0",
+ org.eclipse.papyrus.uml.diagram.common;bundle-version="0.9.2"
+Bundle-ActivationPolicy: lazy
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/build.properties
new file mode 100644
index 00000000000..5348e5d6f39
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/build.properties
@@ -0,0 +1,21 @@
+
+# <copyright>
+# </copyright>
+#
+# $Id$
+
+bin.includes = .,\
+ model/,\
+ META-INF/,\
+ plugin.xml,\
+ plugin.properties,\
+ icons/,\
+ palettes/,\
+ about.html,\
+ schema/
+jars.compile.order = .
+source.. = src/
+output.. = bin/
+bin.excludes = model/uml.ecore,\
+ model/ecore.ecore
+src.includes = about.html
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/connector.png b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/connector.png
new file mode 100644
index 00000000000..975629baeaa
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/connector.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/connector.svg b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/connector.svg
new file mode 100644
index 00000000000..c56fadbf37d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/connector.svg
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ width="10"
+ height="9"
+ sodipodi:docname="InOut.svg">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1160"
+ inkscape:window-height="598"
+ id="namedview4"
+ showgrid="true"
+ inkscape:zoom="32"
+ inkscape:cx="8.5069964"
+ inkscape:cy="7.0453804"
+ inkscape:window-x="582"
+ inkscape:window-y="33"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3773" />
+ </sodipodi:namedview>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 7,0 11,4 7,8"
+ id="path3035"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 0,8 -4,4 0,0"
+ id="path3035-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M -1,5 8,5"
+ id="path2985"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+ d="M -1,3 8,3"
+ id="path2985-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+</svg>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/deploy.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/deploy.gif
new file mode 100644
index 00000000000..7a7ced35f3d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/deploy.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/fcm.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/fcm.gif
new file mode 100644
index 00000000000..ec21c358e2f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/fcm.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/hires/connector.png b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/hires/connector.png
new file mode 100644
index 00000000000..e2be455d487
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/hires/connector.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/port.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/port.gif
new file mode 100644
index 00000000000..4aea611efe7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/port.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/target.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/target.gif
new file mode 100644
index 00000000000..92b10039973
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/icons/target.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.ecore b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.ecore
new file mode 100644
index 00000000000..51600d4b145
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.ecore
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="FCM" nsURI="http://papyrus/FCMProfile/1" nsPrefix="FCM">
+ <eClassifiers xsi:type="ecore:EClass" name="Template">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="The template parameters list defines the parameters that are passed to the Acceleo template. If empty, the formal parameter list of the package template is used."/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateParams" ordered="false"
+ unique="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Classifier"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Element" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Element"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" unique="false"
+ lowerBound="1" eType="#//TemplateKind"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="actualChoice" ordered="false"
+ unique="false" eType="#//ActualChoice"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TemplateKind">
+ <eLiterals name="PassFormal"/>
+ <eLiterals name="LoopOperations" value="1"/>
+ <eLiterals name="LoopProperty" value="2"/>
+ <eLiterals name="Accumulate" value="3"/>
+ <eLiterals name="LoopLiterals" value="4"/>
+ <eLiterals name="LateEvaluation" value="5">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="LateEvaluation is more a tempalte binding rather than a template definition. In"/>
+ </eAnnotations>
+ </eLiterals>
+ <eLiterals name="LoopPorts" value="6"/>
+ <eLiterals name="PassClassifier" value="7"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ActualChoice">
+ <eLiterals name="PassActual"/>
+ <eLiterals name="InterfaceOfPPort" value="1"/>
+ <eLiterals name="InterfaceOfRport" value="2"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConfigurationProperty">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="This stereotype indicuates that the attribute does not only store values but needs to be configured initially be the user. It corresponds to the automatic creation of an entry (slot+nstance specification) in the deployment plan "/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ImplementationGroup">
+ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+ <details key="documentation" value="A group of interaction components should apply both stereotypes. Each member of such a group must be an interaction component, but this is not enforced by the meta-model"/>
+ </eAnnotations>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RuleApplication">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="containerRule" ordered="false"
+ unique="false" upperBound="-1" eType="#//ContainerRule"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Package" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Package"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ContainerRule">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="forConfig" ordered="false"
+ upperBound="-1" eType="#//ConfigOption"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" ordered="false" lowerBound="1"
+ eType="#//ContainerRuleKind"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConfigOption">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="ContainerRuleKind">
+ <eLiterals name="ComponentRule"/>
+ <eLiterals name="LightWeightOORule" value="1"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Singleton">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InteractionComponent">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="forDistribution" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Boolean"
+ defaultValueLiteral="false"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connectionPattern" ordered="false"
+ unique="false" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Collaboration"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PortKind">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="providedInterface" ordered="false"
+ unique="false" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Interface"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="requiredInterface" ordered="false"
+ unique="false" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Interface"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="extendedPort" ordered="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Boolean"
+ changeable="false" volatile="true" transient="true" unsettable="true" derived="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//ConfigurableElementInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Port" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Port"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="kind" ordered="false" unique="false"
+ eType="#//PortKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="providedInterface" ordered="false"
+ unique="false" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Interface"
+ changeable="false" volatile="true" transient="true" unsettable="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="requiredInterface" ordered="false"
+ unique="false" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Interface"
+ changeable="false" volatile="true" transient="true" unsettable="true" derived="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="conjugated" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConfigurableElementInstance" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="configuration" ordered="false"
+ unique="false" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//InstanceSpecification"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Connector" eSuperTypes="#//ConfigurableElementInstance">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Connector" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Connector"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ic" ordered="false" unique="false"
+ eType="#//InteractionComponent"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DeploymentPlan">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mainInstance" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//InstanceSpecification"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Package" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Package"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="DerivedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Element" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Element"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Element"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CompImplTemplate">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="templateDefs" ordered="false"
+ unique="false" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="InterceptionKind">
+ <eLiterals name="InterceptSome"/>
+ <eLiterals name="InterceptAll" value="1"/>
+ <eLiterals name="InterceptAllOut" value="2"/>
+ <eLiterals name="InterceptAllIn" value="3"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CppLibrary" eSuperTypes="#//ExternalLibrary">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="macros" ordered="false"
+ unique="false" upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="libs" ordered="false" unique="false"
+ upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="libPaths" ordered="false"
+ unique="false" upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="includePaths" ordered="false"
+ unique="false" upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExternalLibrary">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Package" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Package"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="JavaLibrary" eSuperTypes="#//ExternalLibrary">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="classPath" ordered="false"
+ unique="false" upperBound="-1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ImplementationProperties">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeRAM" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="supportedOS" ordered="false"
+ unique="false" upperBound="-1" eType="#//OperatingSystem"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arch" ordered="false" unique="false"
+ upperBound="-1" eType="#//TargetArchitecture"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="sizeROM" ordered="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="supportedTargetArch" ordered="false"
+ lowerBound="1" eType="#//TargetArchitecture"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OperatingSystem">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TargetArchitecture">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ unique="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Configuration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="configOptions" ordered="false"
+ upperBound="-1" eType="#//ConfigOption"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="deploymentPlan" ordered="false"
+ lowerBound="1" eType="#//DeploymentPlan"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InterceptionRule">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="interceptionKind" ordered="false"
+ unique="false" lowerBound="1" eType="#//InterceptionKind"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="interceptionSet" ordered="false"
+ unique="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Feature"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Operation" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Operation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Target">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="targetArch" ordered="false"
+ lowerBound="1" eType="#//TargetArchitecture"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="options" ordered="false"
+ upperBound="-1" eType="#//ConfigOption"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Node" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Node"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="usedOS" ordered="false"
+ lowerBound="1" eType="#//OperatingSystem"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="availRAM" ordered="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="availROM" ordered="false"
+ lowerBound="1" eType="ecore:EDataType platform:/plugin/org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Part">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="colocateWithPort" ordered="false"
+ upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Port"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CopyAttributeValue">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="source" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AutoIndex">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Property" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AutoIndexPerNode" eSuperTypes="#//AutoIndex"/>
+ <eClassifiers xsi:type="ecore:EClass" name="InitPrecedence">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="invokeAfter" ordered="false"
+ unique="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="invokeBefore" ordered="false"
+ unique="false" upperBound="-1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConnectorConfiguration">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Slot" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Slot"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="connector" ordered="false"
+ lowerBound="1" eType="#//Connector"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ExtendedSignature">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_TemplateSignature"
+ ordered="false" lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//TemplateSignature"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="baseSignature" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//TemplateSignature"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ContainerPort" eSuperTypes="#//Port"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UseInstanceConfigurator">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="configurator" ordered="false"
+ lowerBound="1" eType="#//InstanceConfigurator"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="InstanceConfigurator">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.genmodel b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.genmodel
new file mode 100644
index 00000000000..424e6c51855
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.genmodel
@@ -0,0 +1,178 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.papyrus.fcm.profile/src" modelPluginID="org.eclipse.papyrus.fcm.profile"
+ modelName="FCM" importerID="org.eclipse.emf.importer.ecore" complianceLevel="5.0"
+ copyrightFields="false" usedGenPackages="platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore platform:/plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml platform:/plugin/org.eclipse.uml2.types/model/Types.genmodel#//types">
+ <foreignModel>FCM.ecore</foreignModel>
+ <genPackages prefix="FCM" resource="XML" disposableProviderFactory="true" ecorePackage="FCM.ecore#/">
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="FCM.ecore#//TemplateKind">
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//TemplateKind/PassFormal"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//TemplateKind/LoopOperations"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//TemplateKind/LoopProperty"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//TemplateKind/Accumulate"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//TemplateKind/LoopLiterals"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//TemplateKind/LateEvaluation"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//TemplateKind/LoopPorts"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//TemplateKind/PassClassifier"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="FCM.ecore#//ActualChoice">
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//ActualChoice/PassActual"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//ActualChoice/InterfaceOfPPort"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//ActualChoice/InterfaceOfRport"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="FCM.ecore#//ContainerRuleKind">
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//ContainerRuleKind/ComponentRule"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//ContainerRuleKind/LightWeightOORule"/>
+ </genEnums>
+ <genEnums typeSafeEnumCompatible="false" ecoreEnum="FCM.ecore#//InterceptionKind">
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//InterceptionKind/InterceptSome"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//InterceptionKind/InterceptAll"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//InterceptionKind/InterceptAllOut"/>
+ <genEnumLiterals ecoreEnumLiteral="FCM.ecore#//InterceptionKind/InterceptAllIn"/>
+ </genEnums>
+ <genClasses ecoreClass="FCM.ecore#//Template">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Template/templateParams"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Template/base_Element"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//Template/kind"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//Template/actualChoice"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ConfigurationProperty">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ConfigurationProperty/base_Property"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ImplementationGroup">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ImplementationGroup/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//RuleApplication">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//RuleApplication/base_Class"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//RuleApplication/containerRule"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//RuleApplication/base_Package"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ContainerRule">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ContainerRule/base_Class"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ContainerRule/forConfig"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//ContainerRule/kind"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ConfigOption">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ConfigOption/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//Singleton">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Singleton/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//InteractionComponent">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//InteractionComponent/forDistribution"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InteractionComponent/connectionPattern"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InteractionComponent/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//PortKind">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//PortKind/base_Class"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//PortKind/providedInterface"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//PortKind/requiredInterface"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//PortKind/extendedPort"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//Port">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Port/base_Port"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Port/kind"/>
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference FCM.ecore#//Port/providedInterface"/>
+ <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference FCM.ecore#//Port/requiredInterface"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//Port/conjugated"/>
+ </genClasses>
+ <genClasses image="false" ecoreClass="FCM.ecore#//ConfigurableElementInstance">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ConfigurableElementInstance/configuration"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//Connector">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Connector/base_Connector"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Connector/ic"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Connector/base_Property"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//DeploymentPlan">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//DeploymentPlan/mainInstance"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//DeploymentPlan/base_Package"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//DerivedElement">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//DerivedElement/base_Element"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//DerivedElement/source"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//CompImplTemplate">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//CompImplTemplate/templateDefs"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//CompImplTemplate/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//CppLibrary">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//CppLibrary/macros"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//CppLibrary/libs"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//CppLibrary/libPaths"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//CppLibrary/includePaths"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ExternalLibrary">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ExternalLibrary/base_Package"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//JavaLibrary">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//JavaLibrary/classPath"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ImplementationProperties">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//ImplementationProperties/sizeRAM"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ImplementationProperties/supportedOS"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ImplementationProperties/arch"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ImplementationProperties/base_Class"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//ImplementationProperties/sizeROM"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ImplementationProperties/supportedTargetArch"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//OperatingSystem">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//OperatingSystem/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//TargetArchitecture">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//TargetArchitecture/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//Configuration">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Configuration/base_Class"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Configuration/configOptions"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Configuration/deploymentPlan"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//InterceptionRule">
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//InterceptionRule/interceptionKind"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InterceptionRule/interceptionSet"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InterceptionRule/base_Property"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InterceptionRule/base_Operation"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//Target">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Target/targetArch"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Target/options"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Target/base_Node"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Target/usedOS"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//Target/availRAM"/>
+ <genFeatures createChild="false" ecoreFeature="ecore:EAttribute FCM.ecore#//Target/availROM"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//Part">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Part/base_Property"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//Part/colocateWithPort"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//CopyAttributeValue">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//CopyAttributeValue/source"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//CopyAttributeValue/base_Property"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//AutoIndex">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//AutoIndex/base_Property"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//AutoIndexPerNode"/>
+ <genClasses ecoreClass="FCM.ecore#//InitPrecedence">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InitPrecedence/invokeAfter"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InitPrecedence/invokeBefore"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InitPrecedence/base_Class"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ConnectorConfiguration">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ConnectorConfiguration/base_Slot"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ConnectorConfiguration/connector"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ExtendedSignature">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ExtendedSignature/base_TemplateSignature"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//ExtendedSignature/baseSignature"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//ContainerPort"/>
+ <genClasses ecoreClass="FCM.ecore#//UseInstanceConfigurator">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//UseInstanceConfigurator/base_Class"/>
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//UseInstanceConfigurator/configurator"/>
+ </genClasses>
+ <genClasses ecoreClass="FCM.ecore#//InstanceConfigurator">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference FCM.ecore#//InstanceConfigurator/base_Class"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.di b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.di
new file mode 100644
index 00000000000..11253fe1b4c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.di
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmlns:history="http://www.eclipse.org/papyrus/0.7.0/controlmode">
+ <di:SashWindowsMngr>
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="FCM.profile.notation#_Va74cGE3Ed-1rN74nkR_XQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="FCM.profile.notation#_AypCoHiMEd-iNcV8QPhhiQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="FCM.profile.notation#_uxB-EIKhEd-aI_x8ivV7vQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="FCM.profile.notation#_2t0Q4JMoEd-I9dVdNhZAGQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="FCM.profile.notation#_UBBU8JWJEd-xqrYFQVL_qg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="FCM.profile.notation#_1hRXQObEEd-oHsJhS1620Q"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="FCM.profile.notation#_w-KvwMniEeCWXsgs0yuyKQ"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="/0/@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="FCM.profile.notation#_Va74cGE3Ed-1rN74nkR_XQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="FCM.profile.notation#_AypCoHiMEd-iNcV8QPhhiQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="FCM.profile.notation#_uxB-EIKhEd-aI_x8ivV7vQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="FCM.profile.notation#_UBBU8JWJEd-xqrYFQVL_qg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="FCM.profile.notation#_1hRXQObEEd-oHsJhS1620Q"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="FCM.profile.notation#_w-KvwMniEeCWXsgs0yuyKQ"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+ </di:SashWindowsMngr>
+ <history:ControledResource/>
+ <history:ControledResource/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation
new file mode 100644
index 00000000000..db696352d9c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation
@@ -0,0 +1,1726 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_Va74cGE3Ed-1rN74nkR_XQ" type="PapyrusUMLProfileDiagram" name="Components" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_iXBUYGE3Ed-1rN74nkR_XQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8yLrAE2lEeG8L5eAOYvthg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8yMSEE2lEeG8L5eAOYvthg" key="QualifiedNameDepth" value="1"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iXEXsGE3Ed-1rN74nkR_XQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iXGz8GE3Ed-1rN74nkR_XQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_r2pUYJD2Ed-I9dVdNhZAGQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_r2VLUJD2Ed-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_r2pUYZD2Ed-I9dVdNhZAGQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JPrWULSvEeCkWIpjYqarzg" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_JN_7ULSvEeCkWIpjYqarzg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JPrWUbSvEeCkWIpjYqarzg"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iXGz8WE3Ed-1rN74nkR_XQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iXGz8mE3Ed-1rN74nkR_XQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iXGz82E3Ed-1rN74nkR_XQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iXGz9GE3Ed-1rN74nkR_XQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_iXGz9WE3Ed-1rN74nkR_XQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_iXGz9mE3Ed-1rN74nkR_XQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iXGz92E3Ed-1rN74nkR_XQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_iXB7cGE3Ed-1rN74nkR_XQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_te7YAMtkEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iXB7cWE3Ed-1rN74nkR_XQ" x="576" y="162" width="226" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jArVYGE3Ed-1rN74nkR_XQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-FWjEE2lEeG8L5eAOYvthg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-FWjEU2lEeG8L5eAOYvthg" key="QualifiedNameDepth" value="1"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jAr8cGE3Ed-1rN74nkR_XQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jAr8cWE3Ed-1rN74nkR_XQ" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jAr8cmE3Ed-1rN74nkR_XQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jAr8c2E3Ed-1rN74nkR_XQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAr8dGE3Ed-1rN74nkR_XQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jAr8dWE3Ed-1rN74nkR_XQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jAr8dmE3Ed-1rN74nkR_XQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jAr8d2E3Ed-1rN74nkR_XQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jAr8eGE3Ed-1rN74nkR_XQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_jArVYWE3Ed-1rN74nkR_XQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_zjaC8MtkEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jArVYmE3Ed-1rN74nkR_XQ" x="9" y="162" width="181" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nvDwEGE3Ed-1rN74nkR_XQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nvEXIGE3Ed-1rN74nkR_XQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nvEXIWE3Ed-1rN74nkR_XQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_souBQEzuEeG_JK8KIEXPxQ" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_zhkAEMewEd6zpahAtGCOkA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_souBQUzuEeG_JK8KIEXPxQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tTdAUEzuEeG_JK8KIEXPxQ" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_X4RqMFaaEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tTdAUUzuEeG_JK8KIEXPxQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nvEXImE3Ed-1rN74nkR_XQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nvEXI2E3Ed-1rN74nkR_XQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nvEXJGE3Ed-1rN74nkR_XQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nvEXJWE3Ed-1rN74nkR_XQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nvEXJmE3Ed-1rN74nkR_XQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nvEXJ2E3Ed-1rN74nkR_XQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nvEXKGE3Ed-1rN74nkR_XQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_nvDwEWE3Ed-1rN74nkR_XQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_Z1W68MtlEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nvDwEmE3Ed-1rN74nkR_XQ" x="9" y="405" width="154" height="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kOCSoG1nEd-XwOGM-uryhg" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_kOC5sW1nEd-XwOGM-uryhg" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kOC5sG1nEd-XwOGM-uryhg" x="9" y="306" width="415"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6kgFYJD1Ed-I9dVdNhZAGQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6kgscJD1Ed-I9dVdNhZAGQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6kgscZD1Ed-I9dVdNhZAGQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6kgscpD1Ed-I9dVdNhZAGQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6kgsc5D1Ed-I9dVdNhZAGQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6kgsdJD1Ed-I9dVdNhZAGQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6kgsdZD1Ed-I9dVdNhZAGQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6kgsdpD1Ed-I9dVdNhZAGQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6kgsd5D1Ed-I9dVdNhZAGQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_OIPlUKFeEd-Ow8yfE2PGoA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_lznjEMttEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OIPlUaFeEd-Ow8yfE2PGoA" x="139" y="19"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6kgseJD1Ed-I9dVdNhZAGQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6kgseZD1Ed-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6kgsepD1Ed-I9dVdNhZAGQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6kgse5D1Ed-I9dVdNhZAGQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6kgsfJD1Ed-I9dVdNhZAGQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6kgsfZD1Ed-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6kgsfpD1Ed-I9dVdNhZAGQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_6kgFYZD1Ed-I9dVdNhZAGQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_JWD9UMttEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6kgFYpD1Ed-I9dVdNhZAGQ" x="489" y="405" width="205" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6lF7QJD1Ed-I9dVdNhZAGQ" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6lF7QpD1Ed-I9dVdNhZAGQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6lF7Q5D1Ed-I9dVdNhZAGQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6lF7RJD1Ed-I9dVdNhZAGQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6lF7RZD1Ed-I9dVdNhZAGQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6lF7RpD1Ed-I9dVdNhZAGQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6lF7R5D1Ed-I9dVdNhZAGQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6lF7SJD1Ed-I9dVdNhZAGQ" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6lF7QZD1Ed-I9dVdNhZAGQ" x="489" y="306" width="91" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__1h6IJD1Ed-I9dVdNhZAGQ" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1h6IpD1Ed-I9dVdNhZAGQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1h6I5D1Ed-I9dVdNhZAGQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1h6JJD1Ed-I9dVdNhZAGQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1h6JZD1Ed-I9dVdNhZAGQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1h6JpD1Ed-I9dVdNhZAGQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1h6J5D1Ed-I9dVdNhZAGQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__1h6KJD1Ed-I9dVdNhZAGQ" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1h6IZD1Ed-I9dVdNhZAGQ" x="603" y="306" width="91" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kBqtgKFPEd-Ow8yfE2PGoA" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kB1soKFPEd-Ow8yfE2PGoA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kB2TsKFPEd-Ow8yfE2PGoA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kB2TsaFPEd-Ow8yfE2PGoA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kB2TsqFPEd-Ow8yfE2PGoA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kB26wKFPEd-Ow8yfE2PGoA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kB26waFPEd-Ow8yfE2PGoA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kB26wqFPEd-Ow8yfE2PGoA" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kB3h0KFPEd-Ow8yfE2PGoA" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kB3h0aFPEd-Ow8yfE2PGoA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kB3h0qFPEd-Ow8yfE2PGoA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kB3h06FPEd-Ow8yfE2PGoA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kB3h1KFPEd-Ow8yfE2PGoA" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kB3h1aFPEd-Ow8yfE2PGoA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kB3h1qFPEd-Ow8yfE2PGoA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kB3h16FPEd-Ow8yfE2PGoA"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_aQTf0FSdEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kBqtgaFPEd-Ow8yfE2PGoA" x="243" y="405" width="181" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0iP5wMGiEd-BXcifqN3Y_A" type="1002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0iP5wsGiEd-BXcifqN3Y_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0iP5w8GiEd-BXcifqN3Y_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0iP5xMGiEd-BXcifqN3Y_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0iP5xcGiEd-BXcifqN3Y_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0iP5xsGiEd-BXcifqN3Y_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0iP5x8GiEd-BXcifqN3Y_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0iQg0MGiEd-BXcifqN3Y_A" type="3"/>
+ <element xmi:type="uml:Comment" href="FCM.profile.uml#_0h1qEMGiEd-BXcifqN3Y_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0iP5wcGiEd-BXcifqN3Y_A" x="216" y="504" width="199"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_be7EsEZ0EeCLCJBkU67iDQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_be7EskZ0EeCLCJBkU67iDQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_be7rwEZ0EeCLCJBkU67iDQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_be7rwUZ0EeCLCJBkU67iDQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_be7rwkZ0EeCLCJBkU67iDQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_be7rw0Z0EeCLCJBkU67iDQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_be7rxEZ0EeCLCJBkU67iDQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_be7rxUZ0EeCLCJBkU67iDQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_be7rxkZ0EeCLCJBkU67iDQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_vl72QEZ0EeCLCJBkU67iDQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_vkwxkEZ0EeCLCJBkU67iDQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vl72QUZ0EeCLCJBkU67iDQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_be7rx0Z0EeCLCJBkU67iDQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_be7ryEZ0EeCLCJBkU67iDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_be7ryUZ0EeCLCJBkU67iDQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_be7rykZ0EeCLCJBkU67iDQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_be7ry0Z0EeCLCJBkU67iDQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_be7rzEZ0EeCLCJBkU67iDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_be7rzUZ0EeCLCJBkU67iDQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_beqmAEZ0EeCLCJBkU67iDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_be7EsUZ0EeCLCJBkU67iDQ" x="207" y="162" width="181" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dMdkkEZ0EeCLCJBkU67iDQ" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dMeLoEZ0EeCLCJBkU67iDQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dMeLoUZ0EeCLCJBkU67iDQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dMeLokZ0EeCLCJBkU67iDQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dMeLo0Z0EeCLCJBkU67iDQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dMeLpEZ0EeCLCJBkU67iDQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dMeLpUZ0EeCLCJBkU67iDQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dNQ10EZ0EeCLCJBkU67iDQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eJwp0MogEeGKstsYRuxdvw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eJwp0cogEeGKstsYRuxdvw" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eJwp0sogEeGKstsYRuxdvw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eJwp08ogEeGKstsYRuxdvw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eJwp1MogEeGKstsYRuxdvw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dMeLpkZ0EeCLCJBkU67iDQ" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dMdkkUZ0EeCLCJBkU67iDQ" x="9" y="63" width="631"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kDz24EZ0EeCLCJBkU67iDQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kD0d8EZ0EeCLCJBkU67iDQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kD0d8UZ0EeCLCJBkU67iDQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kD0d8kZ0EeCLCJBkU67iDQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kD0d80Z0EeCLCJBkU67iDQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kD0d9EZ0EeCLCJBkU67iDQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kD0d9UZ0EeCLCJBkU67iDQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kD0d9kZ0EeCLCJBkU67iDQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kD1FAEZ0EeCLCJBkU67iDQ" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kD1FAUZ0EeCLCJBkU67iDQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kD1FAkZ0EeCLCJBkU67iDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kD1FA0Z0EeCLCJBkU67iDQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kD1FBEZ0EeCLCJBkU67iDQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kD1FBUZ0EeCLCJBkU67iDQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kD1FBkZ0EeCLCJBkU67iDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kD1FB0Z0EeCLCJBkU67iDQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_kDGFMEZ0EeCLCJBkU67iDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kDz24UZ0EeCLCJBkU67iDQ" x="406" y="162" width="144" height="94"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9NfIoCNZEeKGuM7MKNu-KA" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9Q1-oCNZEeKGuM7MKNu-KA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q2lsCNZEeKGuM7MKNu-KA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9Q2lsSNZEeKGuM7MKNu-KA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q2lsiNZEeKGuM7MKNu-KA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9Q2lsyNZEeKGuM7MKNu-KA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q2ltCNZEeKGuM7MKNu-KA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9Q3MwCNZEeKGuM7MKNu-KA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z0CNZEeKGuM7MKNu-KA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z0SNZEeKGuM7MKNu-KA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z0iNZEeKGuM7MKNu-KA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z0yNZEeKGuM7MKNu-KA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z1CNZEeKGuM7MKNu-KA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9Q2ltSNZEeKGuM7MKNu-KA" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Q2ltiNZEeKGuM7MKNu-KA" x="666" y="63" width="136"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jMzJwCNgEeKGuM7MKNu-KA" type="1002" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jMzw0CNgEeKGuM7MKNu-KA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jMzw0SNgEeKGuM7MKNu-KA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jMzw0iNgEeKGuM7MKNu-KA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jMzw0yNgEeKGuM7MKNu-KA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jMzw1CNgEeKGuM7MKNu-KA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jMzw1SNgEeKGuM7MKNu-KA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jMzw1iNgEeKGuM7MKNu-KA" type="3"/>
+ <element xmi:type="uml:Comment" href="FCM.profile.uml#_jJohACNgEeKGuM7MKNu-KA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jMzJwSNgEeKGuM7MKNu-KA" x="845" y="116" width="164"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Va74cWE3Ed-1rN74nkR_XQ"/>
+ <element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_5ScnoJD1Ed-I9dVdNhZAGQ" type="1013" source="_iXBUYGE3Ed-1rN74nkR_XQ" target="_dMdkkEZ0EeCLCJBkU67iDQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_5ScnoZD1Ed-I9dVdNhZAGQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_8QuYYMtkEd2H_o0jIC6qDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5ScnopD1Ed-I9dVdNhZAGQ" points="[66, 24, -344, -125]$[343, 124, -67, -25]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EHqFcCNaEeKGuM7MKNu-KA" id="(0.11065573770491803,0.06593406593406594)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Pe59AEzvEeG_JK8KIEXPxQ" id="(0.9524564183835182,0.98)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_6lsYMJD1Ed-I9dVdNhZAGQ" type="1013" source="_6kgFYJD1Ed-I9dVdNhZAGQ" target="_6lF7QJD1Ed-I9dVdNhZAGQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_6lsYMZD1Ed-I9dVdNhZAGQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_jDoHsMttEd2H_o0jIC6qDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6lsYMpD1Ed-I9dVdNhZAGQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SfEiYEzvEeG_JK8KIEXPxQ" id="(0.25510204081632654,0.07)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__2KzUJD1Ed-I9dVdNhZAGQ" type="1013" source="_6kgFYJD1Ed-I9dVdNhZAGQ" target="__1h6IJD1Ed-I9dVdNhZAGQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="__2KzUZD1Ed-I9dVdNhZAGQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_F_vFQMtuEd2H_o0jIC6qDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__2KzUpD1Ed-I9dVdNhZAGQ" points="[-37, -50, 400, 550]$[-437, -600, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S2kcYEzvEeG_JK8KIEXPxQ" id="(0.7653061224489796,0.11)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ekK-YEZ0EeCLCJBkU67iDQ" type="1013" source="_be7EsEZ0EeCLCJBkU67iDQ" target="_dMdkkEZ0EeCLCJBkU67iDQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ekK-YUZ0EeCLCJBkU67iDQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_ejj6YEZ0EeCLCJBkU67iDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ekK-YkZ0EeCLCJBkU67iDQ" points="[0, -3, -11, 61]$[11, -55, 0, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ek1swEZ0EeCLCJBkU67iDQ" id="(0.5193370165745856,0.01904761904761905)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iLtgMCNgEeKGuM7MKNu-KA" id="(0.4548335974643423,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_rspQgEZ0EeCLCJBkU67iDQ" type="1013" source="_kDz24EZ0EeCLCJBkU67iDQ" target="_dMdkkEZ0EeCLCJBkU67iDQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rspQgUZ0EeCLCJBkU67iDQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_rsCMgUZ0EeCLCJBkU67iDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rspQgkZ0EeCLCJBkU67iDQ" points="[0, 0, -84, 61]$[68, -49, -16, 12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rtXpQEZ0EeCLCJBkU67iDQ" id="(0.5208333333333334,0.010638297872340425)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rtYQUEZ0EeCLCJBkU67iDQ" id="(0.751188589540412,0.98)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_f_WF8EzuEeG_JK8KIEXPxQ" type="1013" source="_nvDwEGE3Ed-1rN74nkR_XQ" target="_kOCSoG1nEd-XwOGM-uryhg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_f_WF8UzuEeG_JK8KIEXPxQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_f-DsgEzuEeG_JK8KIEXPxQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f_WF8kzuEeG_JK8KIEXPxQ" points="[0, 0, 18, 410]$[-59, -400, -41, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gBFyYEzuEeG_JK8KIEXPxQ" id="(0.525974025974026,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gBGZcEzuEeG_JK8KIEXPxQ" id="(0.21204819277108433,0.78)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5PIvMEzuEeG_JK8KIEXPxQ" type="1013" source="_kBqtgKFPEd-Ow8yfE2PGoA" target="_kOCSoG1nEd-XwOGM-uryhg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_5PIvMUzuEeG_JK8KIEXPxQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_5OkugEzuEeG_JK8KIEXPxQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5PIvMkzuEeG_JK8KIEXPxQ" points="[2, -3, -54, 62]$[45, -52, -11, 13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5P3H8EzuEeG_JK8KIEXPxQ" id="(0.5027624309392266,0.13414634146341464)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5P3H8UzuEeG_JK8KIEXPxQ" id="(0.8024096385542169,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_BpcCAEzvEeG_JK8KIEXPxQ" type="1013" source="_jArVYGE3Ed-1rN74nkR_XQ" target="_dMdkkEZ0EeCLCJBkU67iDQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_BpcCAUzvEeG_JK8KIEXPxQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_Bo7rsUzvEeG_JK8KIEXPxQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BpcCAkzvEeG_JK8KIEXPxQ" points="[-4, -5, 0, 213]$[33, -210, 37, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Br45EEzvEeG_JK8KIEXPxQ" id="(0.5524861878453039,0.03296703296703297)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Br45EUzvEeG_JK8KIEXPxQ" id="(0.16225165562913907,0.84)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_PYYxIE2mEeG8L5eAOYvthg" type="1022" source="_0iP5wMGiEd-BXcifqN3Y_A" target="_kBqtgKFPEd-Ow8yfE2PGoA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_PYYxIU2mEeG8L5eAOYvthg" fontName=""/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PYYxIk2mEeG8L5eAOYvthg" points="[9, -28, 0, 48]$[-10, -74, -19, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PYmzkE2mEeG8L5eAOYvthg" id="(0.18592964824120603,0.3888888888888889)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PYmzkU2mEeG8L5eAOYvthg" id="(0.10497237569060773,0.6219512195121951)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_DafdcCNaEeKGuM7MKNu-KA" type="1013" source="_iXBUYGE3Ed-1rN74nkR_XQ" target="_9NfIoCNZEeKGuM7MKNu-KA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_DafdcSNaEeKGuM7MKNu-KA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_DaA8UCNaEeKGuM7MKNu-KA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DafdciNaEeKGuM7MKNu-KA" points="[1, -2, 0, 65]$[29, -60, 28, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Dak9ACNaEeKGuM7MKNu-KA" id="(0.6885245901639344,0.12087912087912088)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Dak9ASNaEeKGuM7MKNu-KA" id="(0.5441176470588235,0.88)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kjblgCNgEeKGuM7MKNu-KA" type="1022" source="_jMzJwCNgEeKGuM7MKNu-KA" target="_DafdcCNaEeKGuM7MKNu-KA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kjblgSNgEeKGuM7MKNu-KA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kjblgiNgEeKGuM7MKNu-KA" points="[-8, 9, 105, 1]$[-113, 8, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kkKlUCNgEeKGuM7MKNu-KA" id="(0.08,0.23333333333333334)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kkKlUSNgEeKGuM7MKNu-KA" id="(0.41025641025641024,0.5125)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_AypCoHiMEd-iNcV8QPhhiQ" type="PapyrusUMLProfileDiagram" name="Container" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_GNycsHiMEd-iNcV8QPhhiQ" type="2006" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GNycs3iMEd-iNcV8QPhhiQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GNzDwHiMEd-iNcV8QPhhiQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GNzDwXiMEd-iNcV8QPhhiQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GNzDwniMEd-iNcV8QPhhiQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GNzDw3iMEd-iNcV8QPhhiQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GNzDxHiMEd-iNcV8QPhhiQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GNzDxXiMEd-iNcV8QPhhiQ" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GNzDxniMEd-iNcV8QPhhiQ" type="1063">
+ <children xmi:type="notation:Shape" xmi:id="_JiegkHiMEd-iNcV8QPhhiQ" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_ABWh8AAiEd-0dMgailnZgA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JiegkXiMEd-iNcV8QPhhiQ" x="51" y="25"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KJOXgHiMEd-iNcV8QPhhiQ" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#__5IaEAAhEd-0dMgailnZgA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KJOXgXiMEd-iNcV8QPhhiQ" x="45" y="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ubAdoJDtEd-I9dVdNhZAGQ" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_uah8gJDtEd-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ubAdoZDtEd-I9dVdNhZAGQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_w6qW8JDtEd-I9dVdNhZAGQ" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_w6U_wJDtEd-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_w6qW8ZDtEd-I9dVdNhZAGQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GNzDx3iMEd-iNcV8QPhhiQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GNzDyHiMEd-iNcV8QPhhiQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GNzDyXiMEd-iNcV8QPhhiQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_GNycsXiMEd-iNcV8QPhhiQ"/>
+ <element xmi:type="uml:Enumeration" href="FCM.profile.uml#_-ZqycAAhEd-0dMgailnZgA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GNycsniMEd-iNcV8QPhhiQ" x="306" y="252" width="163" height="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Gw80IHiMEd-iNcV8QPhhiQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gw9bMHiMEd-iNcV8QPhhiQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gw9bMXiMEd-iNcV8QPhhiQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gw9bMniMEd-iNcV8QPhhiQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gw9bM3iMEd-iNcV8QPhhiQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gw9bNHiMEd-iNcV8QPhhiQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gw9bNXiMEd-iNcV8QPhhiQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Gw9bNniMEd-iNcV8QPhhiQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Gw9bN3iMEd-iNcV8QPhhiQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_TlRsIHiVEd-owss_ACqnJA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_fqiIwHPqEd-XO5WB9B_TDA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TlRsIXiVEd-owss_ACqnJA" x="58" y="35"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BwRJcCm_EeKgOdm6HirHfA" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_BvGEwCm_EeKgOdm6HirHfA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BwRJcSm_EeKgOdm6HirHfA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Gw9bOHiMEd-iNcV8QPhhiQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Gw9bOXiMEd-iNcV8QPhhiQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gw9bOniMEd-iNcV8QPhhiQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Gw9bO3iMEd-iNcV8QPhhiQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Gw9bPHiMEd-iNcV8QPhhiQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Gw9bPXiMEd-iNcV8QPhhiQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gw9bPniMEd-iNcV8QPhhiQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Gw80IXiMEd-iNcV8QPhhiQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_5SI38AAhEd-0dMgailnZgA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gw80IniMEd-iNcV8QPhhiQ" x="198" y="126" width="191" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cwV04HiSEd-iNcV8QPhhiQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cwV043iSEd-iNcV8QPhhiQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cwV05HiSEd-iNcV8QPhhiQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cwV05XiSEd-iNcV8QPhhiQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cwV05niSEd-iNcV8QPhhiQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cwV053iSEd-iNcV8QPhhiQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cwV06HiSEd-iNcV8QPhhiQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cwV06XiSEd-iNcV8QPhhiQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cwWb8HiSEd-iNcV8QPhhiQ" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cwWb8XiSEd-iNcV8QPhhiQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cwWb8niSEd-iNcV8QPhhiQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cwWb83iSEd-iNcV8QPhhiQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cwWb9HiSEd-iNcV8QPhhiQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cwWb9XiSEd-iNcV8QPhhiQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cwWb9niSEd-iNcV8QPhhiQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cwWb93iSEd-iNcV8QPhhiQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_cwV04XiSEd-iNcV8QPhhiQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_JSKpIHiLEd-iNcV8QPhhiQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cwV04niSEd-iNcV8QPhhiQ" x="18" y="126" width="134" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kTGUUHiVEd-owss_ACqnJA" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kQCyoCq3EeKWMcuhL1C5sA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCyoSq3EeKWMcuhL1C5sA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCyoiq3EeKWMcuhL1C5sA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCyoyq3EeKWMcuhL1C5sA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCypCq3EeKWMcuhL1C5sA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCypSq3EeKWMcuhL1C5sA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kTGUUXiVEd-owss_ACqnJA" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kTGUUniVEd-owss_ACqnJA" x="18" y="19" width="577"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JXHXYJDxEd-I9dVdNhZAGQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JXH-cJDxEd-I9dVdNhZAGQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JXH-cZDxEd-I9dVdNhZAGQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JXH-cpDxEd-I9dVdNhZAGQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JXH-c5DxEd-I9dVdNhZAGQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JXH-dJDxEd-I9dVdNhZAGQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JXH-dZDxEd-I9dVdNhZAGQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JXH-dpDxEd-I9dVdNhZAGQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JXH-d5DxEd-I9dVdNhZAGQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_SyoHMHiVEd-owss_ACqnJA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_JZaBAAAjEd-0dMgailnZgA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SyoHMXiVEd-owss_ACqnJA" x="56" y="18"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XMpbcHiVEd-owss_ACqnJA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_3SMAIAAmEd-0dMgailnZgA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XMpbcXiVEd-owss_ACqnJA" x="137" y="74"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JXH-eJDxEd-I9dVdNhZAGQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JXH-eZDxEd-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JXH-epDxEd-I9dVdNhZAGQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JXH-e5DxEd-I9dVdNhZAGQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_JXH-fJDxEd-I9dVdNhZAGQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_JXH-fZDxEd-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JXH-fpDxEd-I9dVdNhZAGQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JXHXYZDxEd-I9dVdNhZAGQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_JWyAMJDxEd-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JXHXYpDxEd-I9dVdNhZAGQ" x="18" y="342" width="235" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9aAYUPS2EeCLI_ythlfGJw" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9aC0kPS2EeCLI_ythlfGJw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9aC0kfS2EeCLI_ythlfGJw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9aC0kvS2EeCLI_ythlfGJw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9aC0k_S2EeCLI_ythlfGJw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9aC0lPS2EeCLI_ythlfGJw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9aDboPS2EeCLI_ythlfGJw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9aECsPS2EeCLI_ythlfGJw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUCdYCq3EeKWMcuhL1C5sA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUDEcCq3EeKWMcuhL1C5sA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUDEcSq3EeKWMcuhL1C5sA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUDEciq3EeKWMcuhL1C5sA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUDEcyq3EeKWMcuhL1C5sA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9aDbofS2EeCLI_ythlfGJw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9aDbovS2EeCLI_ythlfGJw" x="18" y="252" width="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FFzh4Cm_EeKgOdm6HirHfA" type="2006" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FF3zUCm_EeKgOdm6HirHfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FF3zUSm_EeKgOdm6HirHfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FF4aYCm_EeKgOdm6HirHfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FF4aYSm_EeKgOdm6HirHfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FF4aYim_EeKgOdm6HirHfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FF4aYym_EeKgOdm6HirHfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FF4aZCm_EeKgOdm6HirHfA" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FF4aZSm_EeKgOdm6HirHfA" type="1063">
+ <children xmi:type="notation:Shape" xmi:id="_GMT28Cm_EeKgOdm6HirHfA" type="1037" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_GMSBwCm_EeKgOdm6HirHfA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GMT28Sm_EeKgOdm6HirHfA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HsKgICm_EeKgOdm6HirHfA" type="1037" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_HsIq8Cm_EeKgOdm6HirHfA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HsKgISm_EeKgOdm6HirHfA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FF4aZim_EeKgOdm6HirHfA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FF4aZym_EeKgOdm6HirHfA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FF4aaCm_EeKgOdm6HirHfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FF4aaSm_EeKgOdm6HirHfA"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="FCM.profile.uml#_FFvQcCm_EeKgOdm6HirHfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FFzh4Sm_EeKgOdm6HirHfA" x="513" y="252"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bc1QkCq3EeKWMcuhL1C5sA" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc3s0Cq3EeKWMcuhL1C5sA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc4T4Cq3EeKWMcuhL1C5sA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc4T4Sq3EeKWMcuhL1C5sA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc4T4iq3EeKWMcuhL1C5sA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc4T4yq3EeKWMcuhL1C5sA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc4T5Cq3EeKWMcuhL1C5sA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc5iACq3EeKWMcuhL1C5sA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iASq3EeKWMcuhL1C5sA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iAiq3EeKWMcuhL1C5sA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iAyq3EeKWMcuhL1C5sA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iBCq3EeKWMcuhL1C5sA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iBSq3EeKWMcuhL1C5sA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bc4T5Sq3EeKWMcuhL1C5sA" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bc468Cq3EeKWMcuhL1C5sA" x="153" y="252"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_AypCoXiMEd-iNcV8QPhhiQ"/>
+ <element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_b63wAHiTEd-iNcV8QPhhiQ" type="1013" source="_cwV04HiSEd-iNcV8QPhhiQ" target="_kTGUUHiVEd-owss_ACqnJA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_b63wAXiTEd-iNcV8QPhhiQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_b6cSMHiTEd-iNcV8QPhhiQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_b63wAniTEd-iNcV8QPhhiQ" points="[1, -9, -12, 71]$[10, -73, -3, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b7jFcHiTEd-iNcV8QPhhiQ" id="(0.5149253731343284,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b7jFcXiTEd-iNcV8QPhhiQ" id="(0.11611785095320624,0.94)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kVwYMHjAEd-be4c-807k2A" type="1013" source="_Gw80IHiMEd-iNcV8QPhhiQ" target="_kTGUUHiVEd-owss_ACqnJA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kVwYMXjAEd-be4c-807k2A" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_s6giAAAjEd-0dMgailnZgA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kVwYMnjAEd-be4c-807k2A" points="[-95, 39, 123, -52]$[-158, 66, 60, -25]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Qnfg4PS3EeCLI_ythlfGJw" type="1013" source="_JXHXYJDxEd-I9dVdNhZAGQ" target="_9aAYUPS2EeCLI_ythlfGJw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Qnfg4fS3EeCLI_ythlfGJw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_Qnb2gPS3EeCLI_ythlfGJw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Qnfg4vS3EeCLI_ythlfGJw" points="[-7, -15, 74, 167]$[-75, -157, 6, 25]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QnhWEPS3EeCLI_ythlfGJw" id="(0.2936170212765957,0.03296703296703297)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e4KvACq3EeKWMcuhL1C5sA" id="(0.576271186440678,0.84)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gFVswCq3EeKWMcuhL1C5sA" type="1013" source="_JXHXYJDxEd-I9dVdNhZAGQ" target="_bc1QkCq3EeKWMcuhL1C5sA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_gFVswSq3EeKWMcuhL1C5sA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_gEFvkCq3EeKWMcuhL1C5sA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gFVswiq3EeKWMcuhL1C5sA" points="[0, -2, -2, 65]$[0, -42, -2, 25]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gFdokCq3EeKWMcuhL1C5sA" id="(0.7787234042553192,0.02197802197802198)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_uxB-EIKhEd-aI_x8ivV7vQ" type="PapyrusUMLProfileDiagram" name="Libraries" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_v857UIKhEd-aI_x8ivV7vQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v87JcIKhEd-aI_x8ivV7vQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v87JcYKhEd-aI_x8ivV7vQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v87JcoKhEd-aI_x8ivV7vQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v87Jc4KhEd-aI_x8ivV7vQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v87JdIKhEd-aI_x8ivV7vQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v87JdYKhEd-aI_x8ivV7vQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_v87JdoKhEd-aI_x8ivV7vQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_v87Jd4KhEd-aI_x8ivV7vQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_71Lw4IKhEd-aI_x8ivV7vQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_x9PIQFaXEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_71Lw4YKhEd-aI_x8ivV7vQ" x="79" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_714UcIKhEd-aI_x8ivV7vQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_t06A8FaXEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_714UcYKhEd-aI_x8ivV7vQ" x="79" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_72exYIKhEd-aI_x8ivV7vQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_xMx7sFaXEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_72exYYKhEd-aI_x8ivV7vQ" x="79" y="4"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GdoocJWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_GcLP4JWJEd-xqrYFQVL_qg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GdoocZWJEd-xqrYFQVL_qg"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_v87JeIKhEd-aI_x8ivV7vQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_v87JeYKhEd-aI_x8ivV7vQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v87JeoKhEd-aI_x8ivV7vQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_v87Je4KhEd-aI_x8ivV7vQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_v87JfIKhEd-aI_x8ivV7vQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_v87JfYKhEd-aI_x8ivV7vQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v87JfoKhEd-aI_x8ivV7vQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_v857UYKhEd-aI_x8ivV7vQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_LXr4ICI8Ed-Vp7msgJA8uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v857UoKhEd-aI_x8ivV7vQ" x="75" y="195" width="193" height="136"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_x-3zEIKhEd-aI_x8ivV7vQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_x-4aIIKhEd-aI_x8ivV7vQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_x-4aIYKhEd-aI_x8ivV7vQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_x-4aIoKhEd-aI_x8ivV7vQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_x-4aI4KhEd-aI_x8ivV7vQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_x-4aJIKhEd-aI_x8ivV7vQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_x-4aJYKhEd-aI_x8ivV7vQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_x-4aJoKhEd-aI_x8ivV7vQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_x-4aJ4KhEd-aI_x8ivV7vQ" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_x-4aKIKhEd-aI_x8ivV7vQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_x-4aKYKhEd-aI_x8ivV7vQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x-4aKoKhEd-aI_x8ivV7vQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_x-4aK4KhEd-aI_x8ivV7vQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_x-4aLIKhEd-aI_x8ivV7vQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_x-4aLYKhEd-aI_x8ivV7vQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x-4aLoKhEd-aI_x8ivV7vQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_x-3zEYKhEd-aI_x8ivV7vQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_jTOK4FaXEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x-3zEoKhEd-aI_x8ivV7vQ" x="168" y="48" width="193" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1gsUAIKhEd-aI_x8ivV7vQ" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1gtiIIKhEd-aI_x8ivV7vQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1gtiIYKhEd-aI_x8ivV7vQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1gtiIoKhEd-aI_x8ivV7vQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1gtiI4KhEd-aI_x8ivV7vQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1gtiJIKhEd-aI_x8ivV7vQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1gtiJYKhEd-aI_x8ivV7vQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1gtiJoKhEd-aI_x8ivV7vQ" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1gsUAYKhEd-aI_x8ivV7vQ" x="168" y="-48" width="193" height="49"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zA9tAJMaEd-I9dVdNhZAGQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zA9tA5MaEd-I9dVdNhZAGQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zA9tBJMaEd-I9dVdNhZAGQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zA9tBZMaEd-I9dVdNhZAGQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zA9tBpMaEd-I9dVdNhZAGQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zA9tB5MaEd-I9dVdNhZAGQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zA9tCJMaEd-I9dVdNhZAGQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zA9tCZMaEd-I9dVdNhZAGQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zA9tCpMaEd-I9dVdNhZAGQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_1TX0gJMaEd-I9dVdNhZAGQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_0dFO0FaXEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1TX0gZMaEd-I9dVdNhZAGQ" x="91" y="10"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zA9tC5MaEd-I9dVdNhZAGQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zA9tDJMaEd-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zA9tDZMaEd-I9dVdNhZAGQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zA9tDpMaEd-I9dVdNhZAGQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zA9tD5MaEd-I9dVdNhZAGQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zA9tEJMaEd-I9dVdNhZAGQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zA9tEZMaEd-I9dVdNhZAGQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_zA9tAZMaEd-I9dVdNhZAGQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_r6WYwFaXEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zA9tApMaEd-I9dVdNhZAGQ" x="285" y="195" width="166" height="121"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_uxB-EYKhEd-aI_x8ivV7vQ"/>
+ <element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_yAZdEIKhEd-aI_x8ivV7vQ" type="4002" source="_v857UIKhEd-aI_x8ivV7vQ" target="_x-3zEIKhEd-aI_x8ivV7vQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_yAaEIIKhEd-aI_x8ivV7vQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yAaEIYKhEd-aI_x8ivV7vQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_yAZdEYKhEd-aI_x8ivV7vQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="FCM.profile.uml#_qdW2UFaXEd-w9f5DG2hQCA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_yAZdEoKhEd-aI_x8ivV7vQ" points="[-50, -44, 223, 193]$[-273, -237, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_E4SJEIKiEd-aI_x8ivV7vQ" type="1013" source="_x-3zEIKhEd-aI_x8ivV7vQ" target="_1gsUAIKhEd-aI_x8ivV7vQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_E4SJEYKiEd-aI_x8ivV7vQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_pXBgYFaXEd-w9f5DG2hQCA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_E4SJEoKiEd-aI_x8ivV7vQ" points="[97, 9, -127, -12]$[174, 16, -50, -5]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3BAbAJMaEd-I9dVdNhZAGQ" type="4002" source="_zA9tAJMaEd-I9dVdNhZAGQ" target="_x-3zEIKhEd-aI_x8ivV7vQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3BAbA5MaEd-I9dVdNhZAGQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3BAbBJMaEd-I9dVdNhZAGQ" x="-26" y="36"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3BAbAZMaEd-I9dVdNhZAGQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="FCM.profile.uml#_FLQcUFaYEd-w9f5DG2hQCA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3BAbApMaEd-I9dVdNhZAGQ" points="[-57, -60, 99, 104]$[-115, -121, 41, 43]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_2t0Q4JMoEd-I9dVdNhZAGQ" type="PapyrusUMLProfileDiagram" name="Deployment" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_KNBf8JNHEd-KZJPU-tgoOQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KNDVIJNHEd-KZJPU-tgoOQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KNDVIZNHEd-KZJPU-tgoOQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KND8MJNHEd-KZJPU-tgoOQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KND8MZNHEd-KZJPU-tgoOQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KND8MpNHEd-KZJPU-tgoOQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KND8M5NHEd-KZJPU-tgoOQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KND8NJNHEd-KZJPU-tgoOQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KND8NZNHEd-KZJPU-tgoOQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_KCl74JPnEd-wZaz0yGzw_g" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_zqH8AH8UEd-oF-y8FyT5sA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KCl74ZPnEd-wZaz0yGzw_g" x="34" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FjOOwJQBEd-UMN59oR7XbA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_Fi5eoJQBEd-UMN59oR7XbA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FjO10JQBEd-UMN59oR7XbA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_KND8NpNHEd-KZJPU-tgoOQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_KND8N5NHEd-KZJPU-tgoOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KND8OJNHEd-KZJPU-tgoOQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KND8OZNHEd-KZJPU-tgoOQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_KND8OpNHEd-KZJPU-tgoOQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_KND8O5NHEd-KZJPU-tgoOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KND8PJNHEd-KZJPU-tgoOQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_KNBf8ZNHEd-KZJPU-tgoOQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_E0tzcGE_Ed-eArNXja7SuA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KNBf8pNHEd-KZJPU-tgoOQ" x="270" y="375" width="196"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LHDfQJNHEd-KZJPU-tgoOQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LHEGUJNHEd-KZJPU-tgoOQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LHEGUZNHEd-KZJPU-tgoOQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LHEGUpNHEd-KZJPU-tgoOQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LHEGU5NHEd-KZJPU-tgoOQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LHEGVJNHEd-KZJPU-tgoOQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LHEGVZNHEd-KZJPU-tgoOQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LHEGVpNHEd-KZJPU-tgoOQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LHEGV5NHEd-KZJPU-tgoOQ" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LHEGWJNHEd-KZJPU-tgoOQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LHEGWZNHEd-KZJPU-tgoOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LHEGWpNHEd-KZJPU-tgoOQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_LHEGW5NHEd-KZJPU-tgoOQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_LHEGXJNHEd-KZJPU-tgoOQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_LHEGXZNHEd-KZJPU-tgoOQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LHEGXpNHEd-KZJPU-tgoOQ"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_LHDfQZNHEd-KZJPU-tgoOQ"/>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_361C4FapEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LHDfQpNHEd-KZJPU-tgoOQ" x="285" y="165" width="136" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8u-IIJOCEd-5qPBhYeIVtw" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8u-IIpOCEd-5qPBhYeIVtw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8u-II5OCEd-5qPBhYeIVtw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8u-IJJOCEd-5qPBhYeIVtw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8u-IJZOCEd-5qPBhYeIVtw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8u-IJpOCEd-5qPBhYeIVtw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8u-IJ5OCEd-5qPBhYeIVtw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8u-IKJOCEd-5qPBhYeIVtw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8u-vMJOCEd-5qPBhYeIVtw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_hvyIYJODEd-5qPBhYeIVtw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_C5WBYGGLEd-yH9S4VNNbSQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hvyIYZODEd-5qPBhYeIVtw" x="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hwU68JODEd-5qPBhYeIVtw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#__5rAUGE_Ed-eArNXja7SuA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hwViAJODEd-5qPBhYeIVtw" x="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BZWsQJOGEd-5qPBhYeIVtw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_BZCjMJOGEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BZWsQZOGEd-5qPBhYeIVtw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_D_rLoJPxEd-UMN59oR7XbA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_D-cckJPxEd-UMN59oR7XbA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D_rLoZPxEd-UMN59oR7XbA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HtlAwJPxEd-UMN59oR7XbA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_HtMmQJPxEd-UMN59oR7XbA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_HtlAwZPxEd-UMN59oR7XbA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8u-vMZOCEd-5qPBhYeIVtw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8u-vMpOCEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8u-vM5OCEd-5qPBhYeIVtw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8u-vNJOCEd-5qPBhYeIVtw" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_8u-vNZOCEd-5qPBhYeIVtw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_8u-vNpOCEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8u-vN5OCEd-5qPBhYeIVtw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_0KEH0JOCEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8u-IIZOCEd-5qPBhYeIVtw" x="510" y="165" width="196" height="136"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RZl9EJODEd-5qPBhYeIVtw" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RZl9EpODEd-5qPBhYeIVtw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RZl9E5ODEd-5qPBhYeIVtw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RZl9FJODEd-5qPBhYeIVtw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RZmkIJODEd-5qPBhYeIVtw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RZmkIZODEd-5qPBhYeIVtw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RZmkIpODEd-5qPBhYeIVtw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RZmkI5ODEd-5qPBhYeIVtw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RZl9EZODEd-5qPBhYeIVtw" x="60" y="75" width="361"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZeN60JODEd-5qPBhYeIVtw" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZeOh4JODEd-5qPBhYeIVtw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZeOh4ZODEd-5qPBhYeIVtw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZeOh4pODEd-5qPBhYeIVtw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZeOh45ODEd-5qPBhYeIVtw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZeOh5JODEd-5qPBhYeIVtw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZeOh5ZODEd-5qPBhYeIVtw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZePI8JODEd-5qPBhYeIVtw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZePwAJODEd-5qPBhYeIVtw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZePwAZODEd-5qPBhYeIVtw" key="StereotypeList" value="Standard::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZePwApODEd-5qPBhYeIVtw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZePwA5ODEd-5qPBhYeIVtw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZePwBJODEd-5qPBhYeIVtw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZeOh5pODEd-5qPBhYeIVtw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Node"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZeOh55ODEd-5qPBhYeIVtw" x="510" y="75" width="196"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_oieSQJOFEd-5qPBhYeIVtw" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oie5UJOFEd-5qPBhYeIVtw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oie5UZOFEd-5qPBhYeIVtw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oie5UpOFEd-5qPBhYeIVtw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oie5U5OFEd-5qPBhYeIVtw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oie5VJOFEd-5qPBhYeIVtw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oie5VZOFEd-5qPBhYeIVtw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oie5VpOFEd-5qPBhYeIVtw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_oie5V5OFEd-5qPBhYeIVtw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_rP9zQJOFEd-5qPBhYeIVtw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_40nNwFatEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rP9zQZOFEd-5qPBhYeIVtw" x="69" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rQhM4JOFEd-5qPBhYeIVtw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_jmeY4FapEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rQhM4ZOFEd-5qPBhYeIVtw" x="69" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rRFNkJOFEd-5qPBhYeIVtw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_b5KH4FapEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rRFNkZOFEd-5qPBhYeIVtw" x="69" y="10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_MuVAcJOGEd-5qPBhYeIVtw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_Mt6wwJOGEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_MuVAcZOGEd-5qPBhYeIVtw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TJwLwJOGEd-5qPBhYeIVtw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_TJXKMJOGEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TJwLwZOGEd-5qPBhYeIVtw"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_oie5WJOFEd-5qPBhYeIVtw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_oie5WZOFEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oie5WpOFEd-5qPBhYeIVtw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_oie5W5OFEd-5qPBhYeIVtw" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_oie5XJOFEd-5qPBhYeIVtw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_oie5XZOFEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oie5XpOFEd-5qPBhYeIVtw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_ZF8ZYFapEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oieSQZOFEd-5qPBhYeIVtw" x="60" y="375" width="181" height="136"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2x2iEJOFEd-5qPBhYeIVtw" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2x3JIJOFEd-5qPBhYeIVtw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2x3JIZOFEd-5qPBhYeIVtw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2x3JIpOFEd-5qPBhYeIVtw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2x3JI5OFEd-5qPBhYeIVtw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2x3JJJOFEd-5qPBhYeIVtw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2x3JJZOFEd-5qPBhYeIVtw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2x3JJpOFEd-5qPBhYeIVtw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_2x3JJ5OFEd-5qPBhYeIVtw" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_2x3JKJOFEd-5qPBhYeIVtw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_2x3JKZOFEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2x3JKpOFEd-5qPBhYeIVtw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_2x3JK5OFEd-5qPBhYeIVtw" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_2x3JLJOFEd-5qPBhYeIVtw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_2x3JLZOFEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2x3JLpOFEd-5qPBhYeIVtw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_1rKtYFapEd-w9f5DG2hQCA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2x2iEZOFEd-5qPBhYeIVtw" x="60" y="165" width="116" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FHbocJPyEd-UMN59oR7XbA" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FHcPgJPyEd-UMN59oR7XbA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FHc2kJPyEd-UMN59oR7XbA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FHc2kZPyEd-UMN59oR7XbA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FHc2kpPyEd-UMN59oR7XbA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FHc2k5PyEd-UMN59oR7XbA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FHc2lJPyEd-UMN59oR7XbA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FHc2lZPyEd-UMN59oR7XbA" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FHbocZPyEd-UMN59oR7XbA" x="60" y="285" width="406"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mc4zgLCJEd-D5aqfqbr7IQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mc720LCJEd-D5aqfqbr7IQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mc720bCJEd-D5aqfqbr7IQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mc8d4LCJEd-D5aqfqbr7IQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mc8d4bCJEd-D5aqfqbr7IQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mc9E8LCJEd-D5aqfqbr7IQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mc9E8bCJEd-D5aqfqbr7IQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mc9E8rCJEd-D5aqfqbr7IQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mc9E87CJEd-D5aqfqbr7IQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_7fGCALCJEd-D5aqfqbr7IQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_7dGd8LCJEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7fGpELCJEd-D5aqfqbr7IQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mc9E9LCJEd-D5aqfqbr7IQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mc9E9bCJEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mc9E9rCJEd-D5aqfqbr7IQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mc9E97CJEd-D5aqfqbr7IQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mc9E-LCJEd-D5aqfqbr7IQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mc9E-bCJEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mc9E-rCJEd-D5aqfqbr7IQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_maLdwLCJEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mc4zgbCJEd-D5aqfqbr7IQ" x="60" y="612" width="181" height="76"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2iiocLCJEd-D5aqfqbr7IQ" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ij2kLCJEd-D5aqfqbr7IQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ikdoLCJEd-D5aqfqbr7IQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ikdobCJEd-D5aqfqbr7IQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ikdorCJEd-D5aqfqbr7IQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ikdo7CJEd-D5aqfqbr7IQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ikdpLCJEd-D5aqfqbr7IQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2ikdpbCJEd-D5aqfqbr7IQ" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ijPgLCJEd-D5aqfqbr7IQ" x="60" y="540" width="526" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QjZFwLCLEd-D5aqfqbr7IQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QjaT4LCLEd-D5aqfqbr7IQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QjaT4bCLEd-D5aqfqbr7IQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QjaT4rCLEd-D5aqfqbr7IQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QjaT47CLEd-D5aqfqbr7IQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qja68LCLEd-D5aqfqbr7IQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qja68bCLEd-D5aqfqbr7IQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qja68rCLEd-D5aqfqbr7IQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Qja687CLEd-D5aqfqbr7IQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_fC4OILCLEd-D5aqfqbr7IQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_fBzQELCLEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fC4OIbCLEd-D5aqfqbr7IQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Qja69LCLEd-D5aqfqbr7IQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Qja69bCLEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qja69rCLEd-D5aqfqbr7IQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Qja697CLEd-D5aqfqbr7IQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_QjbiALCLEd-D5aqfqbr7IQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_QjbiAbCLEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QjbiArCLEd-D5aqfqbr7IQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_QiSSgLCLEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QjZFwbCLEd-D5aqfqbr7IQ" x="396" y="612" width="166" height="76"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7yGgsLFREd-D5aqfqbr7IQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7yHHwLFREd-D5aqfqbr7IQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7yHHwbFREd-D5aqfqbr7IQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7yHu0LFREd-D5aqfqbr7IQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7yHu0bFREd-D5aqfqbr7IQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7yHu0rFREd-D5aqfqbr7IQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7yHu07FREd-D5aqfqbr7IQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7yHu1LFREd-D5aqfqbr7IQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7yHu1bFREd-D5aqfqbr7IQ" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7yHu1rFREd-D5aqfqbr7IQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7yHu17FREd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7yHu2LFREd-D5aqfqbr7IQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7yIV4LFREd-D5aqfqbr7IQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_7yIV4bFREd-D5aqfqbr7IQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_7yIV4rFREd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7yIV47FREd-D5aqfqbr7IQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_7yDdYLFREd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7yGgsbFREd-D5aqfqbr7IQ" x="252" y="612" width="121" height="75"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CREvQLFSEd-D5aqfqbr7IQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CRFWULFSEd-D5aqfqbr7IQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CRFWUbFSEd-D5aqfqbr7IQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CRFWUrFSEd-D5aqfqbr7IQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CRFWU7FSEd-D5aqfqbr7IQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CRFWVLFSEd-D5aqfqbr7IQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CRFWVbFSEd-D5aqfqbr7IQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CRF9YLFSEd-D5aqfqbr7IQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CRF9YbFSEd-D5aqfqbr7IQ" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CRF9YrFSEd-D5aqfqbr7IQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CRF9Y7FSEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CRF9ZLFSEd-D5aqfqbr7IQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_CRF9ZbFSEd-D5aqfqbr7IQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_CRF9ZrFSEd-D5aqfqbr7IQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_CRF9Z7FSEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CRF9aLFSEd-D5aqfqbr7IQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_CRCTALFSEd-D5aqfqbr7IQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CREvQbFSEd-D5aqfqbr7IQ" x="252" y="756" width="121" height="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kMWzMLTaEd-jOpA9YHRXqw" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kMXaQLTaEd-jOpA9YHRXqw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kMXaQbTaEd-jOpA9YHRXqw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kMXaQrTaEd-jOpA9YHRXqw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kMXaQ7TaEd-jOpA9YHRXqw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kMXaRLTaEd-jOpA9YHRXqw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kMXaRbTaEd-jOpA9YHRXqw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kMogALTaEd-jOpA9YHRXqw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kMogAbTaEd-jOpA9YHRXqw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kMogArTaEd-jOpA9YHRXqw" key="StereotypeList" value="Standard::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kMogA7TaEd-jOpA9YHRXqw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kMogBLTaEd-jOpA9YHRXqw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kMogBbTaEd-jOpA9YHRXqw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kMXaRrTaEd-jOpA9YHRXqw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Abstraction"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kMn48LTaEd-jOpA9YHRXqw" x="510" y="330" width="196"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9L630Lc6Ed-kAZ42Z8lTBg" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9L8F8Lc6Ed-kAZ42Z8lTBg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9L8F8bc6Ed-kAZ42Z8lTBg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9L8tALc6Ed-kAZ42Z8lTBg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9L8tAbc6Ed-kAZ42Z8lTBg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9L8tArc6Ed-kAZ42Z8lTBg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9L8tA7c6Ed-kAZ42Z8lTBg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9L8tBLc6Ed-kAZ42Z8lTBg" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9L8tBbc6Ed-kAZ42Z8lTBg" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_JZ9iALc7Ed-kAZ42Z8lTBg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_JZGmYLc7Ed-kAZ42Z8lTBg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JZ9iAbc7Ed-kAZ42Z8lTBg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SX-l4Lc7Ed-kAZ42Z8lTBg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_SX8JoLc7Ed-kAZ42Z8lTBg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SX-l4bc7Ed-kAZ42Z8lTBg"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9L8tBrc6Ed-kAZ42Z8lTBg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9L8tB7c6Ed-kAZ42Z8lTBg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9L8tCLc6Ed-kAZ42Z8lTBg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9L8tCbc6Ed-kAZ42Z8lTBg" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9L8tCrc6Ed-kAZ42Z8lTBg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9L8tC7c6Ed-kAZ42Z8lTBg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9L8tDLc6Ed-kAZ42Z8lTBg"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_8t77ULc6Ed-kAZ42Z8lTBg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9L630bc6Ed-kAZ42Z8lTBg" x="630" y="615" width="181" height="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6ykokLc_Ed-kAZ42Z8lTBg" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6ykokbc_Ed-kAZ42Z8lTBg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6ykokrc_Ed-kAZ42Z8lTBg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6ykok7c_Ed-kAZ42Z8lTBg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6ykolLc_Ed-kAZ42Z8lTBg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6ykolbc_Ed-kAZ42Z8lTBg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6ykolrc_Ed-kAZ42Z8lTBg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6ykol7c_Ed-kAZ42Z8lTBg" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6ykomLc_Ed-kAZ42Z8lTBg" x="630" y="540" width="181" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_egUlkLy-Ed-9GLEvRgvEyg" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_egVzsLy-Ed-9GLEvRgvEyg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_egVzsby-Ed-9GLEvRgvEyg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_egWawLy-Ed-9GLEvRgvEyg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_egWawby-Ed-9GLEvRgvEyg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_egWawry-Ed-9GLEvRgvEyg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_egWaw7y-Ed-9GLEvRgvEyg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_egWaxLy-Ed-9GLEvRgvEyg" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_egqj0Ly-Ed-9GLEvRgvEyg" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_egqj0by-Ed-9GLEvRgvEyg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_egqj0ry-Ed-9GLEvRgvEyg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_egqj07y-Ed-9GLEvRgvEyg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_egqj1Ly-Ed-9GLEvRgvEyg" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_egqj1by-Ed-9GLEvRgvEyg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_egqj1ry-Ed-9GLEvRgvEyg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_egqj17y-Ed-9GLEvRgvEyg"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_L8b3wMtvEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_egUlkby-Ed-9GLEvRgvEyg" x="504" y="720" width="136"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tSCtcLy-Ed-9GLEvRgvEyg" type="1002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tSDUgLy-Ed-9GLEvRgvEyg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tSD7kLy-Ed-9GLEvRgvEyg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tSD7kby-Ed-9GLEvRgvEyg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tSD7kry-Ed-9GLEvRgvEyg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tSD7k7y-Ed-9GLEvRgvEyg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tSD7lLy-Ed-9GLEvRgvEyg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tSD7lby-Ed-9GLEvRgvEyg" type="3"/>
+ <element xmi:type="uml:Comment" href="FCM.profile.uml#_tP3jMLy-Ed-9GLEvRgvEyg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tSCtcby-Ed-9GLEvRgvEyg" x="660" y="768" width="367"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mqJloNXnEd-CUqOXH3INsw" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mqKzwNXnEd-CUqOXH3INsw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mqKzwdXnEd-CUqOXH3INsw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mqLa0NXnEd-CUqOXH3INsw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mqLa0dXnEd-CUqOXH3INsw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mqLa0tXnEd-CUqOXH3INsw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mqLa09XnEd-CUqOXH3INsw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mqLa1NXnEd-CUqOXH3INsw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mqLa1dXnEd-CUqOXH3INsw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_2H_dkNXwEd-CUqOXH3INsw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_16-VQNXwEd-CUqOXH3INsw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2H_dkdXwEd-CUqOXH3INsw"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mqLa1tXnEd-CUqOXH3INsw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mqLa19XnEd-CUqOXH3INsw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqLa2NXnEd-CUqOXH3INsw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mqLa2dXnEd-CUqOXH3INsw" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mqLa2tXnEd-CUqOXH3INsw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mqLa29XnEd-CUqOXH3INsw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqLa3NXnEd-CUqOXH3INsw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_mditANXnEd-CUqOXH3INsw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqJlodXnEd-CUqOXH3INsw" x="60" y="936" width="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1FcKgNXnEd-CUqOXH3INsw" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1FcKgtXnEd-CUqOXH3INsw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1FcxkNXnEd-CUqOXH3INsw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1FcxkdXnEd-CUqOXH3INsw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1FcxktXnEd-CUqOXH3INsw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1Fcxk9XnEd-CUqOXH3INsw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1FcxlNXnEd-CUqOXH3INsw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1FdYoNXnEd-CUqOXH3INsw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Fd_sNXnEd-CUqOXH3INsw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Fd_sdXnEd-CUqOXH3INsw" key="StereotypeList" value="Standard::Metaclass"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Fd_stXnEd-CUqOXH3INsw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Fd_s9XnEd-CUqOXH3INsw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Fd_tNXnEd-CUqOXH3INsw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1FcxldXnEd-CUqOXH3INsw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Slot"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1FcxltXnEd-CUqOXH3INsw" x="60" y="852" width="397"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_2t0Q4ZMoEd-I9dVdNhZAGQ"/>
+ <element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_bi3TIJODEd-5qPBhYeIVtw" type="1013" source="_8u-IIJOCEd-5qPBhYeIVtw" target="_ZeN60JODEd-5qPBhYeIVtw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_bi3TIZODEd-5qPBhYeIVtw" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_biaAIJODEd-5qPBhYeIVtw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bi3TIpODEd-5qPBhYeIVtw" points="[50, -22, -103, 40]$[103, -54, -50, 8]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_mggFYJODEd-5qPBhYeIVtw" type="1013" source="_LHDfQJNHEd-KZJPU-tgoOQ" target="_RZl9EJODEd-5qPBhYeIVtw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_mggFYZODEd-5qPBhYeIVtw" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_-jKo0FapEd-w9f5DG2hQCA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mggFYpODEd-5qPBhYeIVtw" points="[-2, -50, 8, 185]$[-9, -210, 1, 25]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3xJHUJPyEd-UMN59oR7XbA" id="(0.8227146814404432,0.84)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kygnoJOFEd-5qPBhYeIVtw" type="1013" source="_KNBf8JNHEd-KZJPU-tgoOQ" target="_FHbocJPyEd-UMN59oR7XbA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kygnoZOFEd-5qPBhYeIVtw" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_bkIWUHWmEd-EI-xpxehsbA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kygnopOFEd-5qPBhYeIVtw" points="[-33, -50, 137, 210]$[-170, -260, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9zQ3QJPxEd-UMN59oR7XbA" id="(0.7586206896551724,0.96)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ojBr4JOFEd-5qPBhYeIVtw" type="1013" source="_oieSQJOFEd-5qPBhYeIVtw" target="_FHbocJPyEd-UMN59oR7XbA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ojBr4ZOFEd-5qPBhYeIVtw" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_4mq4YFatEd-w9f5DG2hQCA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ojBr4pOFEd-5qPBhYeIVtw" points="[0, 0, -480, -130]$[420, 113, -60, -17]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GjevsJPyEd-UMN59oR7XbA" id="(0.22660098522167488,0.72)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4PryAJOFEd-5qPBhYeIVtw" type="1013" source="_2x2iEJOFEd-5qPBhYeIVtw" target="_RZl9EJODEd-5qPBhYeIVtw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_4PryAZOFEd-5qPBhYeIVtw" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_7yep4FapEd-w9f5DG2hQCA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4PryApOFEd-5qPBhYeIVtw" points="[51, -21, -253, 102]$[244, -99, -60, 24]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-c6JQJOFEd-5qPBhYeIVtw" id="(0.5517241379310345,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4sNBYJPyEd-UMN59oR7XbA" id="(0.18282548476454294,0.98)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_5ToQALCJEd-D5aqfqbr7IQ" type="1013" source="_mc4zgLCJEd-D5aqfqbr7IQ" target="_2iiocLCJEd-D5aqfqbr7IQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_5ToQAbCJEd-D5aqfqbr7IQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_5QfccLCJEd-D5aqfqbr7IQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5To3ELCJEd-D5aqfqbr7IQ" points="[0, -9, -4, 53]$[2, -34, -2, 28]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5XdAELCJEd-D5aqfqbr7IQ" id="(0.5193370165745856,0.05952380952380952)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5XdAEbCJEd-D5aqfqbr7IQ" id="(0.18250950570342206,0.9142857142857143)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_j4FCgLCLEd-D5aqfqbr7IQ" type="1013" source="_QjZFwLCLEd-D5aqfqbr7IQ" target="_2iiocLCJEd-D5aqfqbr7IQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_j4FCgbCLEd-D5aqfqbr7IQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_j0vaoLCLEd-D5aqfqbr7IQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_j4FCgrCLEd-D5aqfqbr7IQ" points="[2, -13, 0, 33]$[85, -39, 83, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_j7nesLCLEd-D5aqfqbr7IQ" id="(0.4879518072289157,0.13)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_j7nesbCLEd-D5aqfqbr7IQ" id="(0.7870722433460076,0.8260869565217391)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_EmYZwLFSEd-D5aqfqbr7IQ" type="4002" source="_CREvQLFSEd-D5aqfqbr7IQ" target="_7yGgsLFREd-D5aqfqbr7IQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EmZn4LFSEd-D5aqfqbr7IQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EmZn4bFSEd-D5aqfqbr7IQ" x="4" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_EmZA0LFSEd-D5aqfqbr7IQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="FCM.profile.uml#_ElzyALFSEd-D5aqfqbr7IQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EmZA0bFSEd-D5aqfqbr7IQ" points="[-2, -13, 3, 51]$[-6, -49, -1, 15]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EmfHcLFSEd-D5aqfqbr7IQ" id="(0.5206611570247934,0.058823529411764705)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EmfugLFSEd-D5aqfqbr7IQ" id="(0.49586776859504134,0.8214285714285714)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_IpUqwLFSEd-D5aqfqbr7IQ" type="1013" source="_7yGgsLFREd-D5aqfqbr7IQ" target="_2iiocLCJEd-D5aqfqbr7IQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_IpUqwbFSEd-D5aqfqbr7IQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_IpRncLFSEd-D5aqfqbr7IQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IpUqwrFSEd-D5aqfqbr7IQ" points="[-1, -5, 0, 38]$[57, -42, 58, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IpaKULFSEd-D5aqfqbr7IQ" id="(0.5289256198347108,0.05952380952380952)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IpaKUbFSEd-D5aqfqbr7IQ" id="(0.4847908745247148,0.9565217391304348)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_s1EvwLc7Ed-kAZ42Z8lTBg" type="1013" source="_9L630Lc6Ed-kAZ42Z8lTBg" target="_6ykokLc_Ed-kAZ42Z8lTBg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_s1Evwbc7Ed-kAZ42Z8lTBg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_szqagLc7Ed-kAZ42Z8lTBg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s1Evwrc7Ed-kAZ42Z8lTBg" points="[0, -1, 0, 31]$[0, -26, 0, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s2UF4Lc7Ed-kAZ42Z8lTBg" id="(0.5027624309392266,0.011764705882352941)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s2UF4bc7Ed-kAZ42Z8lTBg" id="(0.5027624309392266,0.8913043478260869)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_g3kJwLy-Ed-9GLEvRgvEyg" type="1013" source="_egUlkLy-Ed-9GLEvRgvEyg" target="_2iiocLCJEd-D5aqfqbr7IQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_g3kJwby-Ed-9GLEvRgvEyg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_Sn9UkMtvEd2H_o0jIC6qDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g3kJwry-Ed-9GLEvRgvEyg" points="[27, -50, -100, 182]$[114, -209, -13, 23]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_X8ujYNXxEd-CUqOXH3INsw" id="(0.5294117647058824,0.01)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jJrWULy-Ed-9GLEvRgvEyg" id="(0.9828897338403042,0.9565217391304348)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HGuMcLy_Ed-9GLEvRgvEyg" type="1022" source="_tSCtcLy-Ed-9GLEvRgvEyg" target="_egUlkLy-Ed-9GLEvRgvEyg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_HGuMcby_Ed-9GLEvRgvEyg" fontName="Sans Serif" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HGuMcry_Ed-9GLEvRgvEyg" points="[0, 0, 112, 25]$[-96, -35, 16, -10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HKYkcLy_Ed-9GLEvRgvEyg" id="(0.12534059945504086,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HKYkcby_Ed-9GLEvRgvEyg" id="(0.8709677419354839,0.24)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ZsP1sNXwEd-CUqOXH3INsw" type="1013" source="_mqJloNXnEd-CUqOXH3INsw" target="_1FcKgNXnEd-CUqOXH3INsw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZsP1sdXwEd-CUqOXH3INsw" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_ZfRJoNXwEd-CUqOXH3INsw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZsP1stXwEd-CUqOXH3INsw" points="[2, -3, 0, 40]$[431, -87, 429, -44]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aG7mkNXwEd-CUqOXH3INsw" id="(0.5027624309392266,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aG7mkdXwEd-CUqOXH3INsw" id="(0.23425692695214106,0.96)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_UBBU8JWJEd-xqrYFQVL_qg" type="PapyrusUMLProfileDiagram" name="Ports" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VSgyAJWJEd-xqrYFQVL_qg" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VSgyApWJEd-xqrYFQVL_qg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VSgyA5WJEd-xqrYFQVL_qg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VSgyBJWJEd-xqrYFQVL_qg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VSgyBZWJEd-xqrYFQVL_qg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VSgyBpWJEd-xqrYFQVL_qg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VSgyB5WJEd-xqrYFQVL_qg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VShZEJWJEd-xqrYFQVL_qg" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VShZEZWJEd-xqrYFQVL_qg" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_gQNOoJWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_xdmfIMuHEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gQNOoZWJEd-xqrYFQVL_qg" x="65" y="5"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gQxPUJWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_wa_yoMuHEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gQxPUZWJEd-xqrYFQVL_qg" x="65" y="5"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nk5xkOSBEeCPMMwBhvVAnA" type="3002" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yicdMOSBEeCPMMwBhvVAnA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yidEQOSBEeCPMMwBhvVAnA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yidrUOSBEeCPMMwBhvVAnA" key="StereotypeList" value="Ecore::EAttribute"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yidrUeSBEeCPMMwBhvVAnA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yidrUuSBEeCPMMwBhvVAnA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yidrU-SBEeCPMMwBhvVAnA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_nkb3gOSBEeCPMMwBhvVAnA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nk6YoOSBEeCPMMwBhvVAnA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VShZEpWJEd-xqrYFQVL_qg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VShZE5WJEd-xqrYFQVL_qg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VShZFJWJEd-xqrYFQVL_qg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VShZFZWJEd-xqrYFQVL_qg" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VShZFpWJEd-xqrYFQVL_qg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VShZF5WJEd-xqrYFQVL_qg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VShZGJWJEd-xqrYFQVL_qg"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_tBRZYMtpEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSgyAZWJEd-xqrYFQVL_qg" x="450" y="165" width="235"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_V3iKoJWJEd-xqrYFQVL_qg" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V3ixsJWJEd-xqrYFQVL_qg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V3ixsZWJEd-xqrYFQVL_qg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V3ixspWJEd-xqrYFQVL_qg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V3ixs5WJEd-xqrYFQVL_qg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V3ixtJWJEd-xqrYFQVL_qg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V3ixtZWJEd-xqrYFQVL_qg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V3ixtpWJEd-xqrYFQVL_qg" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V3ixt5WJEd-xqrYFQVL_qg" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_ZDvA4JWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VMJbgJjPEd-YabZhJFlJ9g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFn5MJjPEd-YabZhJFlJ9g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFn5MZjPEd-YabZhJFlJ9g" key="StereotypeList" value="Ecore::EReference"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFn5MpjPEd-YabZhJFlJ9g" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFn5M5jPEd-YabZhJFlJ9g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFn5NJjPEd-YabZhJFlJ9g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_nZNicMweEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZDvA4ZWJEd-xqrYFQVL_qg" x="48" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZEVd0JWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZThgkJjPEd-YabZhJFlJ9g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cjNvsJjPEd-YabZhJFlJ9g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cjNvsZjPEd-YabZhJFlJ9g" key="StereotypeList" value="Ecore::EReference"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cjOWwJjPEd-YabZhJFlJ9g" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cjOWwZjPEd-YabZhJFlJ9g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cjOWwpjPEd-YabZhJFlJ9g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_ml85gMweEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZEVd0ZWJEd-xqrYFQVL_qg" x="48" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFG54JWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_AorBUMtrEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFG54ZWJEd-xqrYFQVL_qg" x="48" y="12"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZGCuAJWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_rPkp8FD6Ed66Asc5WgWosA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZGCuAZWJEd-xqrYFQVL_qg" x="48" y="12"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V3ixuJWJEd-xqrYFQVL_qg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V3ixuZWJEd-xqrYFQVL_qg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V3ixupWJEd-xqrYFQVL_qg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V3ixu5WJEd-xqrYFQVL_qg" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V3ixvJWJEd-xqrYFQVL_qg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V3ixvZWJEd-xqrYFQVL_qg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V3ixvpWJEd-xqrYFQVL_qg"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_pP-ckMtqEd2H_o0jIC6qDQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V3iKoZWJEd-xqrYFQVL_qg" x="144" y="165" width="226" height="126"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iw1YUJWJEd-xqrYFQVL_qg" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iw1YUpWJEd-xqrYFQVL_qg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iw1YU5WJEd-xqrYFQVL_qg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iw1_YJWJEd-xqrYFQVL_qg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iw1_YZWJEd-xqrYFQVL_qg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iw1_YpWJEd-xqrYFQVL_qg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iw1_Y5WJEd-xqrYFQVL_qg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iw1_ZJWJEd-xqrYFQVL_qg" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Port"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iw1YUZWJEd-xqrYFQVL_qg" x="144" y="60" width="226"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jWfqIJWJEd-xqrYFQVL_qg" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jWfqIpWJEd-xqrYFQVL_qg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jWfqI5WJEd-xqrYFQVL_qg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jWfqJJWJEd-xqrYFQVL_qg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jWfqJZWJEd-xqrYFQVL_qg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jWfqJpWJEd-xqrYFQVL_qg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jWfqJ5WJEd-xqrYFQVL_qg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jWgRMJWJEd-xqrYFQVL_qg" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jWfqIZWJEd-xqrYFQVL_qg" x="450" y="60" width="235"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KCSSsDyEEeCYGtteoBz6vQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KCV9EDyEEeCYGtteoBz6vQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KCV9ETyEEeCYGtteoBz6vQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KCV9EjyEEeCYGtteoBz6vQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KCV9EzyEEeCYGtteoBz6vQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KCWkIDyEEeCYGtteoBz6vQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KCWkITyEEeCYGtteoBz6vQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KCWkIjyEEeCYGtteoBz6vQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KCWkIzyEEeCYGtteoBz6vQ" type="1071">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_KCWkJDyEEeCYGtteoBz6vQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_KCWkJTyEEeCYGtteoBz6vQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KCWkJjyEEeCYGtteoBz6vQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KCWkJzyEEeCYGtteoBz6vQ" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_KCWkKDyEEeCYGtteoBz6vQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_KCWkKTyEEeCYGtteoBz6vQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KCWkKjyEEeCYGtteoBz6vQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_KBrOsDyEEeCYGtteoBz6vQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KCSSsTyEEeCYGtteoBz6vQ" x="144" y="337" width="227"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_UBBU8ZWJEd-xqrYFQVL_qg"/>
+ <element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ixb1QJWJEd-xqrYFQVL_qg" type="1013" source="_V3iKoJWJEd-xqrYFQVL_qg" target="_iw1YUJWJEd-xqrYFQVL_qg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ixb1QZWJEd-xqrYFQVL_qg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_y0ITYMtqEd2H_o0jIC6qDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ixb1QpWJEd-xqrYFQVL_qg" points="[-93, -85, 172, 160]$[-265, -245, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jXDq0JWJEd-xqrYFQVL_qg" type="1013" source="_VSgyAJWJEd-xqrYFQVL_qg" target="_jWfqIJWJEd-xqrYFQVL_qg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_jXDq0ZWJEd-xqrYFQVL_qg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_PlrooMtqEd2H_o0jIC6qDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jXDq0pWJEd-xqrYFQVL_qg" points="[-90, -42, 450, 203]$[-540, -245, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_OVP8sDyEEeCYGtteoBz6vQ" type="4002" source="_KCSSsDyEEeCYGtteoBz6vQ" target="_V3iKoJWJEd-xqrYFQVL_qg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OVQjwDyEEeCYGtteoBz6vQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OVQjwTyEEeCYGtteoBz6vQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OVP8sTyEEeCYGtteoBz6vQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="FCM.profile.uml#_OUdSgDyEEeCYGtteoBz6vQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVP8sjyEEeCYGtteoBz6vQ" points="[0, -1, -4, 109]$[6, -173, 2, -63]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVU1MDyEEeCYGtteoBz6vQ" id="(0.5022026431718062,0.05)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_1hRXQObEEd-oHsJhS1620Q" type="PapyrusUMLProfileDiagram" name="Templates" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3dcwEObEEd-oHsJhS1620Q" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3delQObEEd-oHsJhS1620Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3delQebEEd-oHsJhS1620Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3delQubEEd-oHsJhS1620Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3delQ-bEEd-oHsJhS1620Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3delRObEEd-oHsJhS1620Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3delRebEEd-oHsJhS1620Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3dfMUObEEd-oHsJhS1620Q" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3dfMUebEEd-oHsJhS1620Q" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_OXaKYObFEd-oHsJhS1620Q" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_aPnHoAswEd-UGs2QNFrwPw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OXaKYebFEd-oHsJhS1620Q" x="52" y="6"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_PAY18ObFEd-oHsJhS1620Q" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_W5NH0FLpEd6rYflXebIz1g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PAY18ebFEd-oHsJhS1620Q" x="56" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AICWEObPEd-oHsJhS1620Q" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_AAI-UObPEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AICWEebPEd-oHsJhS1620Q"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3dfMUubEEd-oHsJhS1620Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3dfMU-bEEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3dfMVObEEd-oHsJhS1620Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3dfMVebEEd-oHsJhS1620Q" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3dfMVubEEd-oHsJhS1620Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3dfMV-bEEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3dfMWObEEd-oHsJhS1620Q"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_BOnDoFLpEd6rYflXebIz1g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3dcwEebEEd-oHsJhS1620Q" x="72" y="162" width="253" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6YkdYObEEd-oHsJhS1620Q" type="2006" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6YlEcObEEd-oHsJhS1620Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6YmSkObEEd-oHsJhS1620Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6YmSkebEEd-oHsJhS1620Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6YmSkubEEd-oHsJhS1620Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6YmSk-bEEd-oHsJhS1620Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6YmSlObEEd-oHsJhS1620Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6YmSlebEEd-oHsJhS1620Q" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6YmSlubEEd-oHsJhS1620Q" type="1063">
+ <children xmi:type="notation:Shape" xmi:id="_KNw0cObFEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_T3PQUAswEd-UGs2QNFrwPw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KNw0cebFEd-oHsJhS1620Q" x="47" y="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KcJ1wObFEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_Mn7J8AswEd-UGs2QNFrwPw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KcJ1webFEd-oHsJhS1620Q" x="47" y="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KpsigObFEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_zZEPQDR4Ed-aL8GNXYXa-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KpsigebFEd-oHsJhS1620Q" x="47" y="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_K3OBIObFEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_3YQuwDNyEd-l9qP5D2-iXA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_K3OBIebFEd-oHsJhS1620Q" x="47" y="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LF-O0ObFEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_NRzNYAswEd-UGs2QNFrwPw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LF-O0ebFEd-oHsJhS1620Q" x="47" y="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LTP10ObFEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_Ub5RUDNYEd-t359GOtEoBQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LTP10ebFEd-oHsJhS1620Q" x="47" y="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_p-k4kOhjEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_p-jDYOhjEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p-k4kehjEd-oHsJhS1620Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8oZEwDWzEeKiyvmIR-KbrA" type="1037" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_8n-OADWzEeKiyvmIR-KbrA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8oZEwTWzEeKiyvmIR-KbrA"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_6YmSl-bEEd-oHsJhS1620Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_6YmSmObEEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6YmSmebEEd-oHsJhS1620Q"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="FCM.profile.uml#_HSVlUAswEd-UGs2QNFrwPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6YkdYebEEd-oHsJhS1620Q" x="378" y="54" width="181" height="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jxAlMObFEd-oHsJhS1620Q" type="2006" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jxBMQObFEd-oHsJhS1620Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jxBMQebFEd-oHsJhS1620Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jxBMQubFEd-oHsJhS1620Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jxBMQ-bFEd-oHsJhS1620Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jxBMRObFEd-oHsJhS1620Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jxBMRebFEd-oHsJhS1620Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jxBMRubFEd-oHsJhS1620Q" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jxBMR-bFEd-oHsJhS1620Q" type="1063">
+ <children xmi:type="notation:Shape" xmi:id="_ukD4EObFEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_udxp4ObFEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ukD4EebFEd-oHsJhS1620Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vYpWsObFEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_vSnAIObFEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vYpWsebFEd-oHsJhS1620Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6wLgkObOEd-oHsJhS1620Q" type="1037" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="FCM.profile.uml#_6qjZsObOEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6wLgkebOEd-oHsJhS1620Q"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jxBMSObFEd-oHsJhS1620Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jxBMSebFEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxBMSubFEd-oHsJhS1620Q"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="FCM.profile.uml#_jnxwsObFEd-oHsJhS1620Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxAlMebFEd-oHsJhS1620Q" x="378" y="252" width="181" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Qwmu8PPBEd-Tz5tQ_F9baw" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qwn9EPPBEd-Tz5tQ_F9baw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qwn9EfPBEd-Tz5tQ_F9baw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qwn9EvPBEd-Tz5tQ_F9baw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qwn9E_PBEd-Tz5tQ_F9baw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qwn9FPPBEd-Tz5tQ_F9baw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qwn9FfPBEd-Tz5tQ_F9baw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qwn9FvPBEd-Tz5tQ_F9baw" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateSignature"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qwmu8fPBEd-Tz5tQ_F9baw" x="72" y="306" width="253" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UzxpcPPBEd-Tz5tQ_F9baw" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UzyQgPPBEd-Tz5tQ_F9baw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UzyQgfPBEd-Tz5tQ_F9baw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UzyQgvPBEd-Tz5tQ_F9baw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UzyQg_PBEd-Tz5tQ_F9baw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uzy3kPPBEd-Tz5tQ_F9baw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uzy3kfPBEd-Tz5tQ_F9baw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Uzy3kvPBEd-Tz5tQ_F9baw" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uzy3k_PBEd-Tz5tQ_F9baw" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_cyfzgPPBEd-Tz5tQ_F9baw" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_cqIhsPPBEd-Tz5tQ_F9baw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cyfzgfPBEd-Tz5tQ_F9baw"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uzy3lPPBEd-Tz5tQ_F9baw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uzy3lfPBEd-Tz5tQ_F9baw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uzy3lvPBEd-Tz5tQ_F9baw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uzy3l_PBEd-Tz5tQ_F9baw" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uzy3mPPBEd-Tz5tQ_F9baw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uzy3mfPBEd-Tz5tQ_F9baw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uzy3mvPBEd-Tz5tQ_F9baw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_UsmDYPPBEd-Tz5tQ_F9baw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UzxpcfPBEd-Tz5tQ_F9baw" x="69" y="392" width="256" height="77"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_1hRXQebEEd-oHsJhS1620Q"/>
+ <element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ZqDb4PPBEd-Tz5tQ_F9baw" type="1013" source="_UzxpcPPBEd-Tz5tQ_F9baw" target="_Qwmu8PPBEd-Tz5tQ_F9baw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ZqDb4fPBEd-Tz5tQ_F9baw" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_ZiRY4PPBEd-Tz5tQ_F9baw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZqDb4vPBEd-Tz5tQ_F9baw" points="[0, -7, 0, 37]$[-2, -93, -2, -49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Z3T0wPPBEd-Tz5tQ_F9baw" id="(0.5084033613445378,0.08333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Z3T0wfPBEd-Tz5tQ_F9baw" id="(0.502127659574468,0.8909090909090909)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_w-KvwMniEeCWXsgs0yuyKQ" type="PapyrusUMLProfileDiagram" name="Hardware" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_x935QMniEeCWXsgs0yuyKQ" type="1026" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_x95ucMniEeCWXsgs0yuyKQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_x95uccniEeCWXsgs0yuyKQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_x96VgMniEeCWXsgs0yuyKQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_x96VgcniEeCWXsgs0yuyKQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_x96VgsniEeCWXsgs0yuyKQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_x96Vg8niEeCWXsgs0yuyKQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_x96VhMniEeCWXsgs0yuyKQ" type="1034"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_x96VhcniEeCWXsgs0yuyKQ" type="1071">
+ <children xmi:type="notation:Shape" xmi:id="_Tn8lEEzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#__5rAUGE_Ed-eArNXja7SuA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Tn8lEUzmEeGSD5wnU7hiAw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Tn9zMEzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_C5WBYGGLEd-yH9S4VNNbSQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Tn9zMUzmEeGSD5wnU7hiAw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Tn_oYEzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_BZCjMJOGEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Tn_oYUzmEeGSD5wnU7hiAw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ToAPcEzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_D-cckJPxEd-UMN59oR7XbA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ToAPcUzmEeGSD5wnU7hiAw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ToAPckzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="FCM.profile.uml#_HtMmQJPxEd-UMN59oR7XbA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ToAPc0zmEeGSD5wnU7hiAw"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_x96VhsniEeCWXsgs0yuyKQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_x96Vh8niEeCWXsgs0yuyKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x96ViMniEeCWXsgs0yuyKQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_x96VicniEeCWXsgs0yuyKQ" visible="false" type="1019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_x968kMniEeCWXsgs0yuyKQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_x968kcniEeCWXsgs0yuyKQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x968ksniEeCWXsgs0yuyKQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="FCM.profile.uml#_0KEH0JOCEd-5qPBhYeIVtw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x935QcniEeCWXsgs0yuyKQ" x="111" y="253" width="187" height="135"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0A7WIMniEeCWXsgs0yuyKQ" type="1031" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0A7WIsniEeCWXsgs0yuyKQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0A79MMniEeCWXsgs0yuyKQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0A79McniEeCWXsgs0yuyKQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0A79MsniEeCWXsgs0yuyKQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0A79M8niEeCWXsgs0yuyKQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0A79NMniEeCWXsgs0yuyKQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0A79NcniEeCWXsgs0yuyKQ" type="1084"/>
+ <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Node"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0A7WIcniEeCWXsgs0yuyKQ" x="108" y="126" width="181"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_w-KvwcniEeCWXsgs0yuyKQ"/>
+ <element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_0CNvkMniEeCWXsgs0yuyKQ" type="1013" source="_x935QMniEeCWXsgs0yuyKQ" target="_0A7WIMniEeCWXsgs0yuyKQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_0CNvkcniEeCWXsgs0yuyKQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Extension" href="FCM.profile.uml#_biaAIJODEd-5qPBhYeIVtw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0CNvksniEeCWXsgs0yuyKQ" points="[-27, -50, 134, 253]$[-161, -303, 0, 0]"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml
new file mode 100644
index 00000000000..c5ee4f1b191
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml
@@ -0,0 +1,694 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Profile xmi:id="_5mvT0MtjEd2H_o0jIC6qDQ" name="FCM" metaclassReference="_NYUA4MtkEd2H_o0jIC6qDQ _pb8DsMtkEd2H_o0jIC6qDQ _WPBJkMtpEd2H_o0jIC6qDQ _WSSgAMtpEd2H_o0jIC6qDQ _4Sf2AMtpEd2H_o0jIC6qDQ _IDbl4MtvEd2H_o0jIC6qDQ _ofc4YMuHEd2H_o0jIC6qDQ _asQCAC5SEd6q9cO948d5Fw _5OunYGV9Ed6b6erIXzmEEA _nKCJAGu2Ed647PfocwT3eg _wo2GgMewEd6zpahAtGCOkA _9HS28MnvEd6fKfvcq7rbxA _Y3dP0DdMEd-Qn7_dAqT11Q _Zc-ksJODEd-5qPBhYeIVtw _wTDjYKvTEd-i17GN-GaZ6g _kK724LTaEd-jOpA9YHRXqw _03w64NXnEd-CUqOXH3INsw _eAlkcCm_EeKgOdm6HirHfA">
+ <ownedComment xmi:id="_D0js0O69Ed2rSKyRUaSRjw">
+ <body>The associations between PortKind and Operation simply denote the fact that we want to target something that encapsulates the definition of interface mapping rules (i.e. the rules that determine the interfaces that are provided/required on a port &#xD;
+of a particular PortKind). Further experiments are still needed to confirm that the Operation metaclass is the right metaclass to encapsulate this definition.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_dxcGcDTvEd-aL8GNXYXa-Q" annotatedElement="_BOnDoFLpEd6rYflXebIz1g">
+ <body>The template parameters list defines the parameters that are passed to the Acceleo template. If empty, the formal parameter list of the package template is used.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_2Lq5wDR4Ed-aL8GNXYXa-Q" annotatedElement="_zZEPQDR4Ed-aL8GNXYXa-Q">
+ <body>LateEvaluation is more a tempalte binding rather than a template definition. In</body>
+ </ownedComment>
+ <ownedComment xmi:id="_tP3jMLy-Ed-9GLEvRgvEyg" annotatedElement="_L8b3wMtvEd2H_o0jIC6qDQ">
+ <body>This stereotype indicuates that the attribute does not only store values but needs to be configured initially be the user. It corresponds to the automatic creation of an entry (slot+nstance specification) in the deployment plan </body>
+ </ownedComment>
+ <ownedComment xmi:id="_0h1qEMGiEd-BXcifqN3Y_A" annotatedElement="_aQTf0FSdEd-w9f5DG2hQCA">
+ <body>A group of interaction components should apply both stereotypes. Each member of such a group must be an interaction component, but this is not enforced by the meta-model</body>
+ </ownedComment>
+ <ownedComment xmi:id="_jJohACNgEeKGuM7MKNu-KA" annotatedElement="_DaA8UCNaEeKGuM7MKNu-KA">
+ <body>A rule that is applied to a package applies automatically to all elements that are contained within</body>
+ </ownedComment>
+ <elementImport xmi:id="_NYUA4MtkEd2H_o0jIC6qDQ" alias="Package">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </elementImport>
+ <elementImport xmi:id="_pb8DsMtkEd2H_o0jIC6qDQ" alias="Class">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </elementImport>
+ <elementImport xmi:id="_WPBJkMtpEd2H_o0jIC6qDQ" alias="Port">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Port"/>
+ </elementImport>
+ <elementImport xmi:id="_WSSgAMtpEd2H_o0jIC6qDQ" alias="Connector">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
+ </elementImport>
+ <elementImport xmi:id="_4Sf2AMtpEd2H_o0jIC6qDQ" alias="Operation">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </elementImport>
+ <elementImport xmi:id="_IDbl4MtvEd2H_o0jIC6qDQ" alias="Property">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </elementImport>
+ <elementImport xmi:id="_ofc4YMuHEd2H_o0jIC6qDQ" alias="Interface">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Interface"/>
+ </elementImport>
+ <elementImport xmi:id="_asQCAC5SEd6q9cO948d5Fw" alias="InstanceSpecification">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InstanceSpecification"/>
+ </elementImport>
+ <elementImport xmi:id="_5OunYGV9Ed6b6erIXzmEEA" alias="Element">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </elementImport>
+ <elementImport xmi:id="_nKCJAGu2Ed647PfocwT3eg" alias="Generalization">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Generalization"/>
+ </elementImport>
+ <elementImport xmi:id="_wo2GgMewEd6zpahAtGCOkA" alias="Collaboration">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Collaboration"/>
+ </elementImport>
+ <elementImport xmi:id="_9HS28MnvEd6fKfvcq7rbxA" alias="PrimitiveType">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </elementImport>
+ <elementImport xmi:id="_Y3dP0DdMEd-Qn7_dAqT11Q" alias="TemplateSignature">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateSignature"/>
+ </elementImport>
+ <elementImport xmi:id="_Zc-ksJODEd-5qPBhYeIVtw" alias="Node">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Node"/>
+ </elementImport>
+ <elementImport xmi:id="_wTDjYKvTEd-i17GN-GaZ6g" alias="Comment">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Comment"/>
+ </elementImport>
+ <elementImport xmi:id="_kK724LTaEd-jOpA9YHRXqw" alias="Abstraction">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Abstraction"/>
+ </elementImport>
+ <elementImport xmi:id="_03w64NXnEd-CUqOXH3INsw" alias="Slot">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Slot"/>
+ </elementImport>
+ <elementImport xmi:id="_eAlkcCm_EeKgOdm6HirHfA" alias="Feature">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
+ </elementImport>
+ <packageImport xmi:id="_5mvT0ctjEd2H_o0jIC6qDQ">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_te7YAMtkEd2H_o0jIC6qDQ" name="RuleApplication">
+ <ownedAttribute xmi:id="_8Rw6MctkEd2H_o0jIC6qDQ" name="base_Class" isUnique="false" association="_8QuYYMtkEd2H_o0jIC6qDQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_r2VLUJD2Ed-I9dVdNhZAGQ" name="containerRule" visibility="public" type="_5SI38AAhEd-0dMgailnZgA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zTT6QJD2Ed-I9dVdNhZAGQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zTVIYJD2Ed-I9dVdNhZAGQ" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_i5ZywO34EeCMv89l8IxFBg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_DZQuYCNaEeKGuM7MKNu-KA" name="base_Package" association="_DaA8UCNaEeKGuM7MKNu-KA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </ownedAttribute>
+ <icon xmi:id="_UvJO8PupEd6Ur5Lh7TH4tA" content="71%73%70%56%57%97%16%0%16%0%-29%12%0%20%30%100%29%39%109%39%49%119%40%50%120%49%59%-127%60%70%-116%80%90%-101%80%90%-100%120%-126%-70%120%-126%-69%-106%-96%-46%-76%-76%-76%-1%-1%-1%-1%-1%-1%-1%-1%-1%-1%-1%-1%33%-7%4%1%10%0%15%0%44%0%0%0%0%16%0%16%0%0%4%50%-16%-55%73%-21%92%56%107%76%-105%-19%-109%33%126%-110%39%25%-117%-15%108%-100%-7%-120%-22%5%-54%115%25%-114%-76%125%-90%-11%122%-57%-70%-96%-81%-25%26%-110%-118%69%11%-110%36%100%-79%-104%-52%8%0%59%">
+ <eAnnotations xmi:id="_VsSzsPupEd6Ur5Lh7TH4tA" source="image_papyrus">
+ <details xmi:id="_VsV3APupEd6Ur5Lh7TH4tA" key="image_kind_key" value="icon"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_zjaC8MtkEd2H_o0jIC6qDQ" name="Singleton">
+ <ownedAttribute xmi:id="_Bo7rsEzvEeG_JK8KIEXPxQ" name="base_Class" association="_Bo7rsUzvEeG_JK8KIEXPxQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <icon xmi:id="_lAeIYPupEd6Ur5Lh7TH4tA" content="71%73%70%56%57%97%16%0%16%0%-29%12%0%20%30%100%29%39%109%39%49%119%40%50%120%49%59%-127%60%70%-116%80%90%-101%80%90%-100%120%-126%-70%120%-126%-69%-106%-96%-46%-76%-76%-76%-1%-1%-1%-1%-1%-1%-1%-1%-1%-1%-1%-1%33%-7%4%1%10%0%15%0%44%0%0%0%0%16%0%16%0%0%4%52%-16%-55%73%-21%92%56%107%76%-105%-19%-109%33%126%-110%39%25%-117%113%113%101%56%94%32%28%-73%-25%75%-33%-88%42%-29%-10%99%-34%-66%-54%47%-72%-13%-79%-120%64%-53%112%-88%-20%108%-98%-92%-24%35%2%0%59%" format="" location="">
+ <eAnnotations xmi:id="_l07EIPupEd6Ur5Lh7TH4tA" source="image_papyrus">
+ <details xmi:id="_l08SQPupEd6Ur5Lh7TH4tA" key="image_kind_key" value="icon"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_8QuYYMtkEd2H_o0jIC6qDQ" name="E_RuleApplication_Class2" memberEnd="_8Rw6MMtkEd2H_o0jIC6qDQ _8Rw6MctkEd2H_o0jIC6qDQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_8Rw6MMtkEd2H_o0jIC6qDQ" name="extension_RuleApplication" type="_te7YAMtkEd2H_o0jIC6qDQ" aggregation="composite" association="_8QuYYMtkEd2H_o0jIC6qDQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Z1W68MtlEd2H_o0jIC6qDQ" name="InteractionComponent">
+ <ownedAttribute xmi:id="_X4RqMFaaEd-w9f5DG2hQCA" name="forDistribution" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_afN3QFaaEd-w9f5DG2hQCA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_agsd8FaaEd-w9f5DG2hQCA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="MultiplicityElement-isOrdered-_defaultValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zhkAEMewEd6zpahAtGCOkA" name="connectionPattern" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Collaboration"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zh5XQMewEd6zpahAtGCOkA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zh6lYMewEd6zpahAtGCOkA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_f-DFcEzuEeG_JK8KIEXPxQ" name="base_Class" association="_f-DsgEzuEeG_JK8KIEXPxQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_tBRZYMtpEd2H_o0jIC6qDQ" name="PortKind">
+ <ownedAttribute xmi:id="_PnUnYctqEd2H_o0jIC6qDQ" name="base_Class" isUnique="false" association="_PlrooMtqEd2H_o0jIC6qDQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_wa_yoMuHEd2H_o0jIC6qDQ" name="providedInterface" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Interface"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wbI8kMuHEd2H_o0jIC6qDQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wbI8kcuHEd2H_o0jIC6qDQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xdmfIMuHEd2H_o0jIC6qDQ" name="requiredInterface" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Interface"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xdwQIMuHEd2H_o0jIC6qDQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xdwQIcuHEd2H_o0jIC6qDQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_nkb3gOSBEeCPMMwBhvVAnA" name="extendedPort" visibility="public" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pHFWAOSBEeCPMMwBhvVAnA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pHLcoOSBEeCPMMwBhvVAnA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pHatMOSBEeCPMMwBhvVAnA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <icon xmi:id="_cCkwQDrYEeGmX53MUlt37g">
+ <eAnnotations xmi:id="_dgh8ADrYEeGmX53MUlt37g" source="image_papyrus">
+ <details xmi:id="_dgijEDrYEeGmX53MUlt37g" key="image_kind_key" value="icon"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_PlrooMtqEd2H_o0jIC6qDQ" name="Extension_FCM_PortKind" memberEnd="_PnUnYMtqEd2H_o0jIC6qDQ _PnUnYctqEd2H_o0jIC6qDQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_PnUnYMtqEd2H_o0jIC6qDQ" name="extension_FCM_PortKind" type="_tBRZYMtpEd2H_o0jIC6qDQ" aggregation="composite" association="_PlrooMtqEd2H_o0jIC6qDQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_pP-ckMtqEd2H_o0jIC6qDQ" name="Port">
+ <generalization xmi:id="_GAtDsMtwEd2H_o0jIC6qDQ" general="_d1T90MtvEd2H_o0jIC6qDQ"/>
+ <ownedAttribute xmi:id="_y3Zp0MtqEd2H_o0jIC6qDQ" name="base_Port" isUnique="false" association="_y0ITYMtqEd2H_o0jIC6qDQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Port"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AorBUMtrEd2H_o0jIC6qDQ" name="kind" type="_tBRZYMtpEd2H_o0jIC6qDQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G1nvUFRxEd6ckL6AwjSdEg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G1udAFRxEd6ckL6AwjSdEg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ml85gMweEd2H_o0jIC6qDQ" name="providedInterface" isUnique="false" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Interface"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mmGqgMweEd2H_o0jIC6qDQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mmGqgcweEd2H_o0jIC6qDQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_nZNicMweEd2H_o0jIC6qDQ" name="requiredInterface" isUnique="false" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Interface"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nZNiccweEd2H_o0jIC6qDQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nZNicsweEd2H_o0jIC6qDQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rPkp8FD6Ed66Asc5WgWosA" name="conjugated" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <icon xmi:id="_YSnssDrYEeGmX53MUlt37g">
+ <eAnnotations xmi:id="_aOu0EDrYEeGmX53MUlt37g" source="image_papyrus">
+ <details xmi:id="_aOvbIDrYEeGmX53MUlt37g" key="image_kind_key" value="icon"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_y0ITYMtqEd2H_o0jIC6qDQ" name="Extension_FCM_Port" memberEnd="_y3Qf4MtqEd2H_o0jIC6qDQ _y3Zp0MtqEd2H_o0jIC6qDQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_y3Qf4MtqEd2H_o0jIC6qDQ" name="extension_FCM_Port" type="_pP-ckMtqEd2H_o0jIC6qDQ" aggregation="composite" association="_y0ITYMtqEd2H_o0jIC6qDQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nURSAFD6Ed66Asc5WgWosA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-VQmYEzsEeG_JK8KIEXPxQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_JWD9UMttEd2H_o0jIC6qDQ" name="Connector">
+ <generalization xmi:id="_EfZpAMtwEd2H_o0jIC6qDQ" general="_d1T90MtvEd2H_o0jIC6qDQ"/>
+ <ownedAttribute xmi:id="_jHWxIcttEd2H_o0jIC6qDQ" name="base_Connector" isUnique="false" association="_jDoHsMttEd2H_o0jIC6qDQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_lznjEMttEd2H_o0jIC6qDQ" name="ic" visibility="public" type="_Z1W68MtlEd2H_o0jIC6qDQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9HGQoMttEd2H_o0jIC6qDQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9HQBoMttEd2H_o0jIC6qDQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_XdkcsEzvEeG_JK8KIEXPxQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_GEXGkMtuEd2H_o0jIC6qDQ" name="base_Property" isUnique="false" association="_F_vFQMtuEd2H_o0jIC6qDQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ <icon xmi:id="_TLgoYFyXEeGSFubOzJOnSg" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%20%0%0%0%12%8%0%0%0%0%71%103%-62%39%0%0%0%-85%73%68%65%84%8%-103%99%-8%15%4%91%61%94%-2%7%-125%57%-119%111%64%20%3%16%111%22%-13%-4%0%17%-36%40%28%-4%22%34%-72%85%-36%-27%49%68%-20%-1%-17%-123%66%-95%-17%64%-126%59%-60%44%54%-99%-127%-127%19%53%66%-31%-17%-2%51%-20%18%-77%-97%33%38%0%7%54%-45%4%35%-34%51%-56%40%63%124%-65%103%39%28%-100%-5%-35%-57%84%-49%16%-64%-65%-14%108%-80%47%28%84%62%13%18%-34%-64%-16%-50%91%-96%-36%-41%11%14%-94%-4%-124%22%3%45%122%-25%37%-72%-26%47%-44%-10%-1%-81%-62%4%23%-126%-99%-12%-42%67%112%29%84%-12%77%-104%-64%66%-88%-29%-33%-70%75%60%-123%8%-74%9%-52%-121%-7%-24%-1%-5%13%-33%33%-126%-41%15%-128%41%0%-105%3%-94%-119%-59%-55%85%100%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_TLgoYVyXEeGSFubOzJOnSg" source="image_papyrus">
+ <details xmi:id="_TLgoYlyXEeGSFubOzJOnSg" key="image_kind_key" value="icon"/>
+ <details xmi:id="_TLgoY1yXEeGSFubOzJOnSg" key="image_name_key" value="conn"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_jDoHsMttEd2H_o0jIC6qDQ" name="Extension_FCM_Connector" memberEnd="_jHWxIMttEd2H_o0jIC6qDQ _jHWxIcttEd2H_o0jIC6qDQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_jHWxIMttEd2H_o0jIC6qDQ" name="extension_FCM_Connector" type="_JWD9UMttEd2H_o0jIC6qDQ" aggregation="composite" association="_jDoHsMttEd2H_o0jIC6qDQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_F_vFQMtuEd2H_o0jIC6qDQ" name="Extension_FCM_Connector" memberEnd="_GENVkMtuEd2H_o0jIC6qDQ _GEXGkMtuEd2H_o0jIC6qDQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_GENVkMtuEd2H_o0jIC6qDQ" name="extension_FCM_Connector" type="_JWD9UMttEd2H_o0jIC6qDQ" aggregation="composite" association="_F_vFQMtuEd2H_o0jIC6qDQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_L8b3wMtvEd2H_o0jIC6qDQ" name="ConfigurationProperty">
+ <ownedAttribute xmi:id="_SrYcAMtvEd2H_o0jIC6qDQ" name="base_Property" isUnique="false" association="_Sn9UkMtvEd2H_o0jIC6qDQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Sn9UkMtvEd2H_o0jIC6qDQ" name="Extension_ConfigurationProperty" memberEnd="_SrOrAMtvEd2H_o0jIC6qDQ _SrYcAMtvEd2H_o0jIC6qDQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_SrOrAMtvEd2H_o0jIC6qDQ" name="extension_ConfigurationProperty" type="_L8b3wMtvEd2H_o0jIC6qDQ" aggregation="composite" association="_Sn9UkMtvEd2H_o0jIC6qDQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_d1T90MtvEd2H_o0jIC6qDQ" name="ConfigurableElementInstance" isAbstract="true">
+ <ownedAttribute xmi:id="_lARBIOLzEd2hC_i8ZB1Yiw" name="configuration" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InstanceSpecification"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_paWm0OLzEd2hC_i8ZB1Yiw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_paWm0eLzEd2hC_i8ZB1Yiw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_5XyRUFLoEd6rYflXebIz1g" name="DeploymentPlan">
+ <ownedAttribute xmi:id="_E2MOUFLpEd6rYflXebIz1g" name="mainInstance" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InstanceSpecification"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ecD1QFLpEd6rYflXebIz1g" name="base_Package" isUnique="false" association="_eamcsFLpEd6rYflXebIz1g">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_BOnDoFLpEd6rYflXebIz1g" name="Template">
+ <ownedAttribute xmi:id="_W5NH0FLpEd6rYflXebIz1g" name="templateParams" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZHrGADTvEd-aL8GNXYXa-Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZHzB0DTvEd-aL8GNXYXa-Q" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_hEi6cFLpEd6rYflXebIz1g" name="base_Element" isUnique="false" association="_hC4tkFLpEd6rYflXebIz1g">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_aPnHoAswEd-UGs2QNFrwPw" name="kind" visibility="public" type="_HSVlUAswEd-UGs2QNFrwPw" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fFnNQAswEd-UGs2QNFrwPw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fFt68AswEd-UGs2QNFrwPw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_fF1PsAswEd-UGs2QNFrwPw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_AAI-UObPEd-oHsJhS1620Q" name="actualChoice" visibility="public" type="_jnxwsObFEd-oHsJhS1620Q" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GdgDUObPEd-oHsJhS1620Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Gdh4gObPEd-oHsJhS1620Q" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_eamcsFLpEd6rYflXebIz1g" name="Extension_DeploymentPlan" memberEnd="_ecAK4FLpEd6rYflXebIz1g _ecD1QFLpEd6rYflXebIz1g">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ecAK4FLpEd6rYflXebIz1g" name="extension_DeploymentPlan" type="_5XyRUFLoEd6rYflXebIz1g" aggregation="composite" association="_eamcsFLpEd6rYflXebIz1g"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_hC4tkFLpEd6rYflXebIz1g" name="Extension_Operation" memberEnd="_hEf3IFLpEd6rYflXebIz1g _hEi6cFLpEd6rYflXebIz1g">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_hEf3IFLpEd6rYflXebIz1g" name="extension_Operation" type="_BOnDoFLpEd6rYflXebIz1g" aggregation="composite" association="_hC4tkFLpEd6rYflXebIz1g"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_6B80EGV9Ed6b6erIXzmEEA" name="DerivedElement">
+ <ownedAttribute xmi:id="_iIYhcGV-Ed6b6erIXzmEEA" name="base_Element" isUnique="false" association="_iAkpQGV-Ed6b6erIXzmEEA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_km8OkGV-Ed6b6erIXzmEEA" name="source" visibility="public" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_urcZYGV-Ed6b6erIXzmEEA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_urgDwGV-Ed6b6erIXzmEEA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_urljUGV-Ed6b6erIXzmEEA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_iAkpQGV-Ed6b6erIXzmEEA" name="Extension_DerivedElement" memberEnd="_iIRMsGV-Ed6b6erIXzmEEA _iIYhcGV-Ed6b6erIXzmEEA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_iIRMsGV-Ed6b6erIXzmEEA" name="extension_DerivedElement" type="_6B80EGV9Ed6b6erIXzmEEA" aggregation="composite" association="_iAkpQGV-Ed6b6erIXzmEEA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_2p6j0MnvEd6fKfvcq7rbxA" name="CompImplTemplate">
+ <ownedAttribute xmi:id="_BHXU4MrGEd6fKfvcq7rbxA" name="templateDefs" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BHXU4srGEd6fKfvcq7rbxA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BHXU4crGEd6fKfvcq7rbxA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_JA8kYM30Ed6fKfvcq7rbxA" name="base_Class" isUnique="false" association="_I4YeQM30Ed6fKfvcq7rbxA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_I4YeQM30Ed6fKfvcq7rbxA" name="Extension_CompImplTemplate" memberEnd="_JA46AM30Ed6fKfvcq7rbxA _JA8kYM30Ed6fKfvcq7rbxA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_JA46AM30Ed6fKfvcq7rbxA" name="extension_CompImplTemplate" type="_2p6j0MnvEd6fKfvcq7rbxA" aggregation="composite" association="_I4YeQM30Ed6fKfvcq7rbxA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_5SI38AAhEd-0dMgailnZgA" name="ContainerRule">
+ <ownedAttribute xmi:id="_s9dIUAAjEd-0dMgailnZgA" name="base_Class" isUnique="false" association="_s6giAAAjEd-0dMgailnZgA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_fqiIwHPqEd-XO5WB9B_TDA" name="forConfig" type="_JSKpIHiLEd-iNcV8QPhhiQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__IhDgHPzEd-J3uX_5f8M-A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__IqNcHPzEd-J3uX_5f8M-A" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_BvGEwCm_EeKgOdm6HirHfA" name="kind" visibility="public" type="_FFvQcCm_EeKgOdm6HirHfA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EJkjICm_EeKgOdm6HirHfA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EJnmcCm_EeKgOdm6HirHfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_EJuUICm_EeKgOdm6HirHfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_-ZqycAAhEd-0dMgailnZgA" name="InterceptionKind">
+ <ownedLiteral xmi:id="__5IaEAAhEd-0dMgailnZgA" name="InterceptSome"/>
+ <ownedLiteral xmi:id="_ABWh8AAiEd-0dMgailnZgA" name="InterceptAll"/>
+ <ownedLiteral xmi:id="_uah8gJDtEd-I9dVdNhZAGQ" name="InterceptAllOut"/>
+ <ownedLiteral xmi:id="_w6U_wJDtEd-I9dVdNhZAGQ" name="InterceptAllIn"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_s6giAAAjEd-0dMgailnZgA" name="E_ContainerRule_Class0" memberEnd="_s9YP0AAjEd-0dMgailnZgA _s9dIUAAjEd-0dMgailnZgA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_s9YP0AAjEd-0dMgailnZgA" name="extension_ContainerRule" type="_5SI38AAhEd-0dMgailnZgA" aggregation="composite" association="_s6giAAAjEd-0dMgailnZgA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_HSVlUAswEd-UGs2QNFrwPw" name="TemplateKind">
+ <ownedLiteral xmi:id="_Mn7J8AswEd-UGs2QNFrwPw" name="PassFormal"/>
+ <ownedLiteral xmi:id="_NRzNYAswEd-UGs2QNFrwPw" name="LoopOperations"/>
+ <ownedLiteral xmi:id="_T3PQUAswEd-UGs2QNFrwPw" name="LoopProperty"/>
+ <ownedLiteral xmi:id="_Ub5RUDNYEd-t359GOtEoBQ" name="Accumulate"/>
+ <ownedLiteral xmi:id="_3YQuwDNyEd-l9qP5D2-iXA" name="LoopLiterals"/>
+ <ownedLiteral xmi:id="_zZEPQDR4Ed-aL8GNXYXa-Q" name="LateEvaluation"/>
+ <ownedLiteral xmi:id="_p-jDYOhjEd-oHsJhS1620Q" name="LoopPorts"/>
+ <ownedLiteral xmi:id="_8n-OADWzEeKiyvmIR-KbrA" name="PassClassifier"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_LXr4ICI8Ed-Vp7msgJA8uw" name="CppLibrary">
+ <generalization xmi:id="_qdW2UFaXEd-w9f5DG2hQCA" general="_jTOK4FaXEd-w9f5DG2hQCA"/>
+ <ownedAttribute xmi:id="_t06A8FaXEd-w9f5DG2hQCA" name="macros" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3BtuwFaXEd-w9f5DG2hQCA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3B1qkFaXEd-w9f5DG2hQCA" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3CcukFaXEd-w9f5DG2hQCA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xMx7sFaXEd-w9f5DG2hQCA" name="libs" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6O5ccFaXEd-w9f5DG2hQCA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6PEbkFaXEd-w9f5DG2hQCA" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6PddIFaXEd-w9f5DG2hQCA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_x9PIQFaXEd-w9f5DG2hQCA" name="libPaths" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7g_WcFaXEd-w9f5DG2hQCA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7hNY4FaXEd-w9f5DG2hQCA" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_7hZmIFaXEd-w9f5DG2hQCA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_GcLP4JWJEd-xqrYFQVL_qg" name="includePaths" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JB6jEJWJEd-xqrYFQVL_qg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JCJzoJWJEd-xqrYFQVL_qg" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_JCLo0JWJEd-xqrYFQVL_qg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_aQTf0FSdEd-w9f5DG2hQCA" name="ImplementationGroup">
+ <ownedAttribute xmi:id="_5OkHcEzuEeG_JK8KIEXPxQ" name="base_Class" association="_5OkugEzuEeG_JK8KIEXPxQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_jTOK4FaXEd-w9f5DG2hQCA" name="ExternalLibrary">
+ <ownedAttribute xmi:id="_pe5qAFaXEd-w9f5DG2hQCA" name="base_Package" isUnique="false" association="_pXBgYFaXEd-w9f5DG2hQCA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_pXBgYFaXEd-w9f5DG2hQCA" name="Extension_ExtLibrary" memberEnd="_pe0xgFaXEd-w9f5DG2hQCA _pe5qAFaXEd-w9f5DG2hQCA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_pe0xgFaXEd-w9f5DG2hQCA" name="extension_ExtLibrary" type="_jTOK4FaXEd-w9f5DG2hQCA" aggregation="composite" association="_pXBgYFaXEd-w9f5DG2hQCA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_r6WYwFaXEd-w9f5DG2hQCA" name="JavaLibrary">
+ <generalization xmi:id="_FLQcUFaYEd-w9f5DG2hQCA" general="_jTOK4FaXEd-w9f5DG2hQCA"/>
+ <ownedAttribute xmi:id="_0dFO0FaXEd-w9f5DG2hQCA" name="classPath" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-f2UQFaXEd-w9f5DG2hQCA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-gDIkFaXEd-w9f5DG2hQCA" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-gM5kFaXEd-w9f5DG2hQCA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_ZF8ZYFapEd-w9f5DG2hQCA" name="ImplementationProperties">
+ <ownedAttribute xmi:id="_b5KH4FapEd-w9f5DG2hQCA" name="sizeRAM" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_jmeY4FapEd-w9f5DG2hQCA" name="supportedOS" type="_1rKtYFapEd-w9f5DG2hQCA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UskI4FaqEd-w9f5DG2hQCA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UswWIFaqEd-w9f5DG2hQCA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_o1UcUFapEd-w9f5DG2hQCA" name="arch" visibility="public" type="_361C4FapEd-w9f5DG2hQCA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VVslcFaqEd-w9f5DG2hQCA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VV4LoFaqEd-w9f5DG2hQCA" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_TstOYFaqEd-w9f5DG2hQCA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_40nNwFatEd-w9f5DG2hQCA" name="base_Class" isUnique="false" association="_4mq4YFatEd-w9f5DG2hQCA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Mt6wwJOGEd-5qPBhYeIVtw" name="sizeROM" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OdIEkJOGEd-5qPBhYeIVtw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OdNkIJOGEd-5qPBhYeIVtw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_OdUR0JOGEd-5qPBhYeIVtw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_TJXKMJOGEd-5qPBhYeIVtw" name="supportedTargetArch" visibility="public" type="_361C4FapEd-w9f5DG2hQCA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VGIY4JOGEd-5qPBhYeIVtw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VGYQgJOGEd-5qPBhYeIVtw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_VGdwEJOGEd-5qPBhYeIVtw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_SjDSoCI8Ed-Vp7msgJA8uw" name="Extension_CompilationReq" memberEnd="_Sl5yUCI8Ed-Vp7msgJA8uw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Sl5yUCI8Ed-Vp7msgJA8uw" name="extension_CompilationReq" type="_LXr4ICI8Ed-Vp7msgJA8uw" aggregation="composite" association="_SjDSoCI8Ed-Vp7msgJA8uw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_1rKtYFapEd-w9f5DG2hQCA" name="OperatingSystem">
+ <ownedAttribute xmi:id="_747QIFapEd-w9f5DG2hQCA" name="base_Class" isUnique="false" association="_7yep4FapEd-w9f5DG2hQCA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_361C4FapEd-w9f5DG2hQCA" name="TargetArchitecture">
+ <ownedAttribute xmi:id="_-qs0MFapEd-w9f5DG2hQCA" name="base_Class" isUnique="false" association="_-jKo0FapEd-w9f5DG2hQCA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_7yep4FapEd-w9f5DG2hQCA" name="Extension_OperatingSystem" memberEnd="_742-sFapEd-w9f5DG2hQCA _747QIFapEd-w9f5DG2hQCA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_742-sFapEd-w9f5DG2hQCA" name="extension_OperatingSystem" type="_1rKtYFapEd-w9f5DG2hQCA" aggregation="composite" association="_7yep4FapEd-w9f5DG2hQCA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_-jKo0FapEd-w9f5DG2hQCA" name="Extension_TargetArchitecture" memberEnd="_-qn7sFapEd-w9f5DG2hQCA _-qs0MFapEd-w9f5DG2hQCA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_-qn7sFapEd-w9f5DG2hQCA" name="extension_TargetArchitecture" type="_361C4FapEd-w9f5DG2hQCA" aggregation="composite" association="_-jKo0FapEd-w9f5DG2hQCA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_4mq4YFatEd-w9f5DG2hQCA" name="Extension_ImplementationProperties" memberEnd="_40hHIFatEd-w9f5DG2hQCA _40nNwFatEd-w9f5DG2hQCA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_40hHIFatEd-w9f5DG2hQCA" name="extension_ImplementationProperties" type="_ZF8ZYFapEd-w9f5DG2hQCA" aggregation="composite" association="_4mq4YFatEd-w9f5DG2hQCA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_E0tzcGE_Ed-eArNXja7SuA" name="Configuration">
+ <ownedAttribute xmi:id="_bkF6EHWmEd-EI-xpxehsbA" name="base_Class" association="_bkIWUHWmEd-EI-xpxehsbA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zqH8AH8UEd-oF-y8FyT5sA" name="configOptions" type="_JSKpIHiLEd-iNcV8QPhhiQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4507EH8UEd-oF-y8FyT5sA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_452wQH8UEd-oF-y8FyT5sA" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Fi5eoJQBEd-UMN59oR7XbA" name="deploymentPlan" visibility="public" type="_5XyRUFLoEd6rYflXebIz1g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IgppMJQBEd-UMN59oR7XbA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IgzaMJQBEd-UMN59oR7XbA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Ig3roJQBEd-UMN59oR7XbA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_bkIWUHWmEd-EI-xpxehsbA" name="Extension_Configuration" memberEnd="_bkIWUXWmEd-EI-xpxehsbA _bkF6EHWmEd-EI-xpxehsbA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_bkIWUXWmEd-EI-xpxehsbA" name="extension_Configuration" type="_E0tzcGE_Ed-eArNXja7SuA" aggregation="composite" association="_bkIWUHWmEd-EI-xpxehsbA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_JSKpIHiLEd-iNcV8QPhhiQ" name="ConfigOption">
+ <ownedAttribute xmi:id="_b6bEEHiTEd-iNcV8QPhhiQ" name="base_Class" association="_b6cSMHiTEd-iNcV8QPhhiQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_b6cSMHiTEd-iNcV8QPhhiQ" name="Extension_ConfigOption" memberEnd="_b6cSMXiTEd-iNcV8QPhhiQ _b6bEEHiTEd-iNcV8QPhhiQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_b6cSMXiTEd-iNcV8QPhhiQ" name="extension_ConfigOption" type="_JSKpIHiLEd-iNcV8QPhhiQ" aggregation="composite" association="_b6cSMHiTEd-iNcV8QPhhiQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_JWyAMJDxEd-I9dVdNhZAGQ" name="InterceptionRule">
+ <ownedAttribute xmi:id="_JZaBAAAjEd-0dMgailnZgA" name="interceptionKind" visibility="public" type="_-ZqycAAhEd-0dMgailnZgA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MIadkAAmEd-0dMgailnZgA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MIcSwAAmEd-0dMgailnZgA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_KFrZsPS3EeCLI_ythlfGJw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3SMAIAAmEd-0dMgailnZgA" name="interceptionSet" visibility="public" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uqZjkAApEd-0dMgailnZgA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uqkisAApEd-0dMgailnZgA" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_XpuwECm_EeKgOdm6HirHfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_QnaoYPS3EeCLI_ythlfGJw" name="base_Property" association="_Qnb2gPS3EeCLI_ythlfGJw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_gEEhcCq3EeKWMcuhL1C5sA" name="base_Operation" association="_gEFvkCq3EeKWMcuhL1C5sA">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_0KEH0JOCEd-5qPBhYeIVtw" name="Target">
+ <ownedAttribute xmi:id="__5rAUGE_Ed-eArNXja7SuA" name="targetArch" visibility="public" type="_361C4FapEd-w9f5DG2hQCA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Glq-QGFAEd-eArNXja7SuA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GlszcGFAEd-eArNXja7SuA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GltagGFAEd-eArNXja7SuA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_C5WBYGGLEd-yH9S4VNNbSQ" name="options" visibility="public" type="_JSKpIHiLEd-iNcV8QPhhiQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FGz-gGGLEd-yH9S4VNNbSQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FG1MoGGLEd-yH9S4VNNbSQ" value="*"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_FG1zsGGLEd-yH9S4VNNbSQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_biZZEJODEd-5qPBhYeIVtw" name="base_Node" association="_biaAIJODEd-5qPBhYeIVtw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Node"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_BZCjMJOGEd-5qPBhYeIVtw" name="usedOS" visibility="public" type="_1rKtYFapEd-w9f5DG2hQCA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E7f9UJOGEd-5qPBhYeIVtw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E7nSEJOGEd-5qPBhYeIVtw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_E7qVYJOGEd-5qPBhYeIVtw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_D-cckJPxEd-UMN59oR7XbA" name="availRAM" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GX4ZIJPxEd-UMN59oR7XbA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GX8DgJPxEd-UMN59oR7XbA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GX_G0JPxEd-UMN59oR7XbA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_HtMmQJPxEd-UMN59oR7XbA" name="availROM" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JzMpcJPxEd-UMN59oR7XbA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Jzar4JPxEd-UMN59oR7XbA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_JzeWQJPxEd-UMN59oR7XbA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_biaAIJODEd-5qPBhYeIVtw" name="E_Target_Node0" memberEnd="_biaAIZODEd-5qPBhYeIVtw _biZZEJODEd-5qPBhYeIVtw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_biaAIZODEd-5qPBhYeIVtw" name="extension_Target" type="_0KEH0JOCEd-5qPBhYeIVtw" aggregation="composite" association="_biaAIJODEd-5qPBhYeIVtw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_maLdwLCJEd-D5aqfqbr7IQ" name="Part">
+ <ownedAttribute xmi:id="_5QeOULCJEd-D5aqfqbr7IQ" name="base_Property" association="_5QfccLCJEd-D5aqfqbr7IQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_7dGd8LCJEd-D5aqfqbr7IQ" name="colocateWithPort" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Port"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8Xu6MLCJEd-D5aqfqbr7IQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8X2O8LCJEd-D5aqfqbr7IQ" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_5QfccLCJEd-D5aqfqbr7IQ" name="E_Part_Property0" memberEnd="_5QfccbCJEd-D5aqfqbr7IQ _5QeOULCJEd-D5aqfqbr7IQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_5QfccbCJEd-D5aqfqbr7IQ" name="extension_Part" type="_maLdwLCJEd-D5aqfqbr7IQ" aggregation="composite" association="_5QfccLCJEd-D5aqfqbr7IQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_QiSSgLCLEd-D5aqfqbr7IQ" name="CopyAttributeValue">
+ <ownedAttribute xmi:id="_fBzQELCLEd-D5aqfqbr7IQ" name="source" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fo4eMLCLEd-D5aqfqbr7IQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fpDdULCLEd-D5aqfqbr7IQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_j0uzkLCLEd-D5aqfqbr7IQ" name="base_Property" association="_j0vaoLCLEd-D5aqfqbr7IQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_j0vaoLCLEd-D5aqfqbr7IQ" name="E_CopyAttributeValue_Property0" memberEnd="_j0vaobCLEd-D5aqfqbr7IQ _j0uzkLCLEd-D5aqfqbr7IQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_j0vaobCLEd-D5aqfqbr7IQ" name="extension_CopyAttributeValue" type="_QiSSgLCLEd-D5aqfqbr7IQ" aggregation="composite" association="_j0vaoLCLEd-D5aqfqbr7IQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_7yDdYLFREd-D5aqfqbr7IQ" name="AutoIndex">
+ <ownedAttribute xmi:id="_IpRAYLFSEd-D5aqfqbr7IQ" name="base_Property" association="_IpRncLFSEd-D5aqfqbr7IQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_CRCTALFSEd-D5aqfqbr7IQ" name="AutoIndexPerNode">
+ <generalization xmi:id="_ElzyALFSEd-D5aqfqbr7IQ" general="_7yDdYLFREd-D5aqfqbr7IQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_IpRncLFSEd-D5aqfqbr7IQ" name="E_autoIndex_Property0" memberEnd="_IpRncbFSEd-D5aqfqbr7IQ _IpRAYLFSEd-D5aqfqbr7IQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_IpRncbFSEd-D5aqfqbr7IQ" name="extension_AutoIndex" type="_7yDdYLFREd-D5aqfqbr7IQ" aggregation="composite" association="_IpRncLFSEd-D5aqfqbr7IQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_8t77ULc6Ed-kAZ42Z8lTBg" name="InitPrecedence">
+ <ownedAttribute xmi:id="_JZGmYLc7Ed-kAZ42Z8lTBg" name="invokeAfter" visibility="public" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JsHB8Lc7Ed-kAZ42Z8lTBg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JsJeMLc7Ed-kAZ42Z8lTBg" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SX8JoLc7Ed-kAZ42Z8lTBg" name="invokeBefore" visibility="public" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VVT5sLc7Ed-kAZ42Z8lTBg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VXUE0Lc7Ed-kAZ42Z8lTBg" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_szpzcLc7Ed-kAZ42Z8lTBg" name="base_Class" association="_szqagLc7Ed-kAZ42Z8lTBg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_szqagLc7Ed-kAZ42Z8lTBg" name="E_Precedence_Port0" memberEnd="_szqagbc7Ed-kAZ42Z8lTBg _szpzcLc7Ed-kAZ42Z8lTBg">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_szqagbc7Ed-kAZ42Z8lTBg" name="extension_InitPrecedence" type="_8t77ULc6Ed-kAZ42Z8lTBg" aggregation="composite" association="_szqagLc7Ed-kAZ42Z8lTBg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_mditANXnEd-CUqOXH3INsw" name="ConnectorConfiguration">
+ <ownedAttribute xmi:id="_ZfQikNXwEd-CUqOXH3INsw" name="base_Slot" association="_ZfRJoNXwEd-CUqOXH3INsw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Slot"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_16-VQNXwEd-CUqOXH3INsw" name="connector" visibility="public" type="_JWD9UMttEd2H_o0jIC6qDQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_694OcNXwEd-CUqOXH3INsw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6-J7QNXwEd-CUqOXH3INsw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_ZfRJoNXwEd-CUqOXH3INsw" name="E_ConnectorConfiguration_Slot0" memberEnd="_ZfRJodXwEd-CUqOXH3INsw _ZfQikNXwEd-CUqOXH3INsw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ZfRJodXwEd-CUqOXH3INsw" name="extension_ConnectorConfiguration" type="_mditANXnEd-CUqOXH3INsw" aggregation="composite" association="_ZfRJoNXwEd-CUqOXH3INsw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_jnxwsObFEd-oHsJhS1620Q" name="ActualChoice">
+ <ownedLiteral xmi:id="_udxp4ObFEd-oHsJhS1620Q" name="PassActual"/>
+ <ownedLiteral xmi:id="_vSnAIObFEd-oHsJhS1620Q" name="InterfaceOfPPort"/>
+ <ownedLiteral xmi:id="_6qjZsObOEd-oHsJhS1620Q" name="InterfaceOfRport"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_UsmDYPPBEd-Tz5tQ_F9baw" name="ExtendedSignature">
+ <ownedAttribute xmi:id="_ZiQx0PPBEd-Tz5tQ_F9baw" name="base_TemplateSignature" association="_ZiRY4PPBEd-Tz5tQ_F9baw">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateSignature"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_cqIhsPPBEd-Tz5tQ_F9baw" name="baseSignature">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#TemplateSignature"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_ZiRY4PPBEd-Tz5tQ_F9baw" name="E_ExtendedSignature_TemplateSignature0" memberEnd="_ZiRY4fPBEd-Tz5tQ_F9baw _ZiQx0PPBEd-Tz5tQ_F9baw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ZiRY4fPBEd-Tz5tQ_F9baw" name="extension_ExtendedSignature" type="_UsmDYPPBEd-Tz5tQ_F9baw" aggregation="composite" association="_ZiRY4PPBEd-Tz5tQ_F9baw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_KBrOsDyEEeCYGtteoBz6vQ" name="ContainerPort">
+ <generalization xmi:id="_OUdSgDyEEeCYGtteoBz6vQ" general="_pP-ckMtqEd2H_o0jIC6qDQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_beqmAEZ0EeCLCJBkU67iDQ" name="UseInstanceConfigurator">
+ <ownedAttribute xmi:id="_ejisQEZ0EeCLCJBkU67iDQ" name="base_Class" association="_ejj6YEZ0EeCLCJBkU67iDQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_vkwxkEZ0EeCLCJBkU67iDQ" name="configurator" visibility="public" type="_kDGFMEZ0EeCLCJBkU67iDQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x906sEZ0EeCLCJBkU67iDQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x-ozAEZ0EeCLCJBkU67iDQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yA41wEZ0EeCLCJBkU67iDQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_ejj6YEZ0EeCLCJBkU67iDQ" name="E_UseInstanceConfigurator_Class0" memberEnd="_ejj6YUZ0EeCLCJBkU67iDQ _ejisQEZ0EeCLCJBkU67iDQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_ejj6YUZ0EeCLCJBkU67iDQ" name="extension_UseInstanceConfigurator" type="_beqmAEZ0EeCLCJBkU67iDQ" aggregation="composite" association="_ejj6YEZ0EeCLCJBkU67iDQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_kDGFMEZ0EeCLCJBkU67iDQ" name="InstanceConfigurator">
+ <ownedAttribute xmi:id="_rsCMgEZ0EeCLCJBkU67iDQ" name="base_Class" association="_rsCMgUZ0EeCLCJBkU67iDQ">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_rsCMgUZ0EeCLCJBkU67iDQ" name="E_InstanceConfigurator_Class0" memberEnd="_rsCMgkZ0EeCLCJBkU67iDQ _rsCMgEZ0EeCLCJBkU67iDQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_rsCMgkZ0EeCLCJBkU67iDQ" name="extension_InstanceConfigurator" type="_kDGFMEZ0EeCLCJBkU67iDQ" aggregation="composite" association="_rsCMgUZ0EeCLCJBkU67iDQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Qnb2gPS3EeCLI_ythlfGJw" name="E_InterceptionRule_Property0" memberEnd="_Qnb2gfS3EeCLI_ythlfGJw _QnaoYPS3EeCLI_ythlfGJw">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Qnb2gfS3EeCLI_ythlfGJw" name="extension_InterceptionRule" type="_JWyAMJDxEd-I9dVdNhZAGQ" aggregation="composite" association="_Qnb2gPS3EeCLI_ythlfGJw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_f-DsgEzuEeG_JK8KIEXPxQ" name="E_InteractionComponent_Class1" memberEnd="_f-DsgUzuEeG_JK8KIEXPxQ _f-DFcEzuEeG_JK8KIEXPxQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_f-DsgUzuEeG_JK8KIEXPxQ" name="extension_InteractionComponent" type="_Z1W68MtlEd2H_o0jIC6qDQ" aggregation="composite" association="_f-DsgEzuEeG_JK8KIEXPxQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_5OkugEzuEeG_JK8KIEXPxQ" name="E_ImplementationGroup_Class1" memberEnd="_5OkugUzuEeG_JK8KIEXPxQ _5OkHcEzuEeG_JK8KIEXPxQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_5OkugUzuEeG_JK8KIEXPxQ" name="extension_ImplementationGroup" type="_aQTf0FSdEd-w9f5DG2hQCA" aggregation="composite" association="_5OkugEzuEeG_JK8KIEXPxQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_Bo7rsUzvEeG_JK8KIEXPxQ" name="E_Singleton_Class2" memberEnd="_Bo7rskzvEeG_JK8KIEXPxQ _Bo7rsEzvEeG_JK8KIEXPxQ">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_Bo7rskzvEeG_JK8KIEXPxQ" name="extension_Singleton" type="_zjaC8MtkEd2H_o0jIC6qDQ" aggregation="composite" association="_Bo7rsUzvEeG_JK8KIEXPxQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_Kjk2AEzwEeG_JK8KIEXPxQ" name="implementationGroup_class_1" memberEnd="_Kjk2AUzwEeG_JK8KIEXPxQ">
+ <ownedEnd xmi:id="_Kjk2AUzwEeG_JK8KIEXPxQ" name="implementationGroup" type="_aQTf0FSdEd-w9f5DG2hQCA" association="_Kjk2AEzwEeG_JK8KIEXPxQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kjk2A0zwEeG_JK8KIEXPxQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kjk2AkzwEeG_JK8KIEXPxQ" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_DaA8UCNaEeKGuM7MKNu-KA" name="E_RuleApplication_Package1" memberEnd="_DaA8USNaEeKGuM7MKNu-KA _DZQuYCNaEeKGuM7MKNu-KA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_DaA8USNaEeKGuM7MKNu-KA" name="extension_RuleApplication" type="_te7YAMtkEd2H_o0jIC6qDQ" aggregation="composite" association="_DaA8UCNaEeKGuM7MKNu-KA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_FFvQcCm_EeKgOdm6HirHfA" name="ContainerRuleKind">
+ <ownedLiteral xmi:id="_GMSBwCm_EeKgOdm6HirHfA" name="ComponentRule"/>
+ <ownedLiteral xmi:id="_HsIq8Cm_EeKgOdm6HirHfA" name="LightWeightOORule"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_gEFvkCq3EeKWMcuhL1C5sA" name="E_InterceptionRule_Operation1" memberEnd="_gEFvkSq3EeKWMcuhL1C5sA _gEEhcCq3EeKWMcuhL1C5sA">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_gEFvkSq3EeKWMcuhL1C5sA" name="extension_InterceptionRule" type="_JWyAMJDxEd-I9dVdNhZAGQ" aggregation="composite" association="_gEFvkCq3EeKWMcuhL1C5sA"/>
+ </packagedElement>
+ <profileApplication xmi:id="_aTo0UC27Ed6q9cO948d5Fw">
+ <eAnnotations xmi:id="_aa7vIC27Ed6q9cO948d5Fw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Profile>
+ <Ecore:EPackage xmi:id="_bIrl8C27Ed6q9cO948d5Fw" base_Package="_5mvT0MtjEd2H_o0jIC6qDQ" packageName="FCM" nsPrefix="FCM" nsURI="http://papyrus/FCMProfile/1" prefix="FCM"/>
+ <Ecore:EReference xmi:id="_VMBfsJjPEd-YabZhJFlJ9g" isTransient="true" isVolatile="true" isUnsettable="true" base_Property="_nZNicMweEd2H_o0jIC6qDQ"/>
+ <Ecore:EReference xmi:id="_ZTbZ8JjPEd-YabZhJFlJ9g" isTransient="true" isVolatile="true" isUnsettable="true" base_Property="_ml85gMweEd2H_o0jIC6qDQ"/>
+ <Ecore:EAttribute xmi:id="_yiNMoOSBEeCPMMwBhvVAnA" isTransient="true" isVolatile="true" isUnsettable="true" base_Property="_nkb3gOSBEeCPMMwBhvVAnA"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/palettes/palette-classdep.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/palettes/palette-classdep.xml
new file mode 100644
index 00000000000..2352951986c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/palettes/palette-classdep.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<paletteDefinition><content>
+ <drawer iconpath="platform:/plugin/org.eclipse.papyrus.fcm.profile/icons/fcm.gif" id="drawer_1290374271120" name="FCM (class)">
+ <aspectTool description="" iconpath="platform:/plugin/org.eclipse.papyrus.fcm.profile/icons/deploy.gif" id="clazz.tool.package_1290374300398"
+ name="DeploymentPlan (Package)" refToolId="clazz.tool.package">
+ <postAction id="org.eclipse.papyrus.applystereotypeactionprovider">
+ <stereotypesToApply><stereotype stereotypeName="FCM::DeploymentPlan"/></stereotypesToApply>
+ </postAction>
+ </aspectTool>
+ <aspectTool description="" iconpath="platform:/plugin/org.eclipse.papyrus.fcm.profile/icons/target.gif" id="clazz.tool.class_123"
+ name="Target (Node)" refToolId="clazz.tool.class">
+ <postAction id="org.eclipse.papyrus.applystereotypeactionprovider">
+ <stereotypesToApply><stereotype stereotypeName="FCM::Target"/></stereotypesToApply>
+ </postAction>
+ </aspectTool>
+ <aspectTool description="" iconpath="platform:/plugin/org.eclipse.uml2.uml.edit/icons/full/obj16/Class.gif" id="clazz.tool.class_1290374348967"
+ name="PortKind (Class)" refToolId="clazz.tool.class">
+ <postAction id="org.eclipse.papyrus.applystereotypeactionprovider">
+ <stereotypesToApply><stereotype stereotypeName="FCM::PortKind"/></stereotypesToApply>
+ </postAction>
+ </aspectTool>
+ <aspectTool description="" iconpath="platform:/plugin/org.eclipse.uml2.uml.edit/icons/full/obj16/Class.gif" id="clazz.tool.class_1290374391074"
+ name="Configuration (Class)" refToolId="clazz.tool.class">
+ <postAction id="org.eclipse.papyrus.applystereotypeactionprovider">
+ <stereotypesToApply><stereotype stereotypeName="FCM::Configuration"/></stereotypesToApply>
+ </postAction>
+ </aspectTool>
+ </drawer>
+</content></paletteDefinition> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/palettes/palette-composite.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/palettes/palette-composite.xml
new file mode 100644
index 00000000000..d5afbd294a9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/palettes/palette-composite.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<paletteDefinition><content>
+ <drawer iconpath="platform:/plugin/org.eclipse.papyrus.fcm.profile/icons/fcm.gif" id="drawer_1290172652572" name="FCM (composite)">
+ <aspectTool description="" iconpath="platform:/plugin/org.eclipse.uml2.uml.edit/icons/full/obj16/Connector.gif" id="composite.tool.connector_1290173450913"
+ name="Connector (Connector)" refToolId="composite.tool.connector">
+ <postAction id="org.eclipse.papyrus.applystereotypeactionprovider">
+ <stereotypesToApply><stereotype stereotypeName="FCM::Connector"/></stereotypesToApply>
+ </postAction>
+ </aspectTool>
+ <aspectTool description="" iconpath="platform:/plugin/org.eclipse.papyrus.fcm.profile/icons/port.gif" id="composite.tool.class_1290173467575"
+ name="FCM Port" refToolId="composite.tool.port">
+ <postAction id="org.eclipse.papyrus.applystereotypeactionprovider">
+ <stereotypesToApply><stereotype stereotypeName="FCM::Port"/></stereotypesToApply>
+ </postAction>
+ </aspectTool>
+ <aspectTool description="" iconpath="platform:/plugin/org.eclipse.uml2.uml.edit/icons/full/obj16/Class.gif" id="composite.tool.class_1290173489631"
+ name="Rule Application (Class)" refToolId="composite.tool.class">
+ <postAction id="org.eclipse.papyrus.applystereotypeactionprovider">
+ <stereotypesToApply><stereotype stereotypeName="FCM::RuleApplication"/></stereotypesToApply>
+ </postAction>
+ </aspectTool>
+ </drawer>
+</content></paletteDefinition> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/plugin.properties
new file mode 100644
index 00000000000..f15495b325f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: profile for flexible component model - FCM (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/plugin.xml
new file mode 100644
index 00000000000..fa8713705f2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/plugin.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id$
+-->
+
+<plugin>
+ <extension-point id="fcmPortMappingRule" name="Port Mapping Rule" schema="schema/fcmPortMappingRule.exsd"/>
+ <extension-point id="fcmEmbeddingRule" name="Connector embedding rule" schema="schema/fcmPortMappingRule.exsd"/>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri = "http://papyrus/FCMProfile/1"
+ class = "FCM.FCMPackage"
+ genModel = "model/FCM.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.uml2.uml.generated_package">
+ <profile
+ uri="http://papyrus/FCMProfile/1"
+ location="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </extension>
+
+ <extension point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="pathmap://FCM_PROFILES/"
+ target="platform:/plugin/org.eclipse.papyrus.fcm.profile/model/"/>
+ </extension>
+
+ <extension point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+ <profile
+ description="Flexible component model"
+ iconpath="icons/fcm.gif"
+ name="FCM"
+ path="pathmap://FCM_PROFILES/FCM.profile.uml"
+ provider="CEA LIST"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.papyrus.uml.diagram.common.paletteDefinition">
+ <paletteDefinition
+ ID="com.cea.profiles.fcm.compositePalette"
+ class="org.eclipse.papyrus.uml.diagram.common.service.PluginPaletteProvider"
+ name="com.cea.profiles.fcm.compositePalette"
+ path="palettes/palette-composite.xml">
+ <Priority
+ name="Medium">
+ </Priority>
+ <editor
+ id="org.eclipse.papyrus.uml.diagram.composite">
+ </editor>
+ </paletteDefinition>
+ </extension>
+
+ <extension
+ point="org.eclipse.papyrus.uml.diagram.common.paletteDefinition">
+ <paletteDefinition
+ ID="com.cea.profiles.fcm.classPalette"
+ class="org.eclipse.papyrus.uml.diagram.common.service.PluginPaletteProvider"
+ name="com.cea.profiles.fcm.classPalette"
+ path="palettes/palette-classdep.xml">
+ <Priority
+ name="Medium">
+ </Priority>
+ <editor
+ id="org.eclipse.papyrus.uml.diagram.clazz">
+ </editor>
+ </paletteDefinition>
+ </extension>
+</plugin>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/schema/fcmEmbeddingRule.exsd b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/schema/fcmEmbeddingRule.exsd
new file mode 100644
index 00000000000..34bef832e9d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/schema/fcmEmbeddingRule.exsd
@@ -0,0 +1,106 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="com.cea.profiles.fcm" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="com.cea.profiles.fcm" id="fcmEmbeddingRule" name="Port Mapping Rule"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="client">
+ <complexType>
+ <attribute name="connectorName" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":FCM.util.IEmbeddingRule"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/schema/fcmPortMappingRule.exsd b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/schema/fcmPortMappingRule.exsd
new file mode 100644
index 00000000000..2659350b49c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/schema/fcmPortMappingRule.exsd
@@ -0,0 +1,106 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="com.cea.profiles.fcm" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="com.cea.profiles.fcm" id="fcmPortMappingRule" name="Port Mapping Rule"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="client">
+ <complexType>
+ <attribute name="portKindName" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":FCM.util.IMappingRule"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/Activator.java
new file mode 100644
index 00000000000..659efdfe77b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/Activator.java
@@ -0,0 +1,17 @@
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+
+public class Activator implements BundleActivator {
+
+ public void start(BundleContext context) throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void stop(BundleContext context) throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ActualChoice.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ActualChoice.java
new file mode 100644
index 00000000000..562a414d10d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ActualChoice.java
@@ -0,0 +1,237 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Actual Choice</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see FCM.FCMPackage#getActualChoice()
+ * @model
+ * @generated
+ */
+public enum ActualChoice implements Enumerator {
+ /**
+ * The '<em><b>Pass Actual</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PASS_ACTUAL_VALUE
+ * @generated
+ * @ordered
+ */
+ PASS_ACTUAL(0, "PassActual", "PassActual"), /**
+ * The '<em><b>Interface Of PPort</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTERFACE_OF_PPORT_VALUE
+ * @generated
+ * @ordered
+ */
+ INTERFACE_OF_PPORT(1, "InterfaceOfPPort", "InterfaceOfPPort"),
+
+ /**
+ * The '<em><b>Interface Of Rport</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTERFACE_OF_RPORT_VALUE
+ * @generated
+ * @ordered
+ */
+ INTERFACE_OF_RPORT(2, "InterfaceOfRport", "InterfaceOfRport");
+
+ /**
+ * The '<em><b>Pass Actual</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Pass Actual</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PASS_ACTUAL
+ * @model name="PassActual"
+ * @generated
+ * @ordered
+ */
+ public static final int PASS_ACTUAL_VALUE = 0;
+
+ /**
+ * The '<em><b>Interface Of PPort</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Interface Of PPort</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTERFACE_OF_PPORT
+ * @model name="InterfaceOfPPort"
+ * @generated
+ * @ordered
+ */
+ public static final int INTERFACE_OF_PPORT_VALUE = 1;
+
+ /**
+ * The '<em><b>Interface Of Rport</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Interface Of Rport</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTERFACE_OF_RPORT
+ * @model name="InterfaceOfRport"
+ * @generated
+ * @ordered
+ */
+ public static final int INTERFACE_OF_RPORT_VALUE = 2;
+
+ /**
+ * An array of all the '<em><b>Actual Choice</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final ActualChoice[] VALUES_ARRAY =
+ new ActualChoice[] {
+ PASS_ACTUAL,
+ INTERFACE_OF_PPORT,
+ INTERFACE_OF_RPORT,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Actual Choice</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<ActualChoice> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Actual Choice</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ActualChoice get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ ActualChoice result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Actual Choice</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ActualChoice getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ ActualChoice result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Actual Choice</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ActualChoice get(int value) {
+ switch (value) {
+ case PASS_ACTUAL_VALUE: return PASS_ACTUAL;
+ case INTERFACE_OF_PPORT_VALUE: return INTERFACE_OF_PPORT;
+ case INTERFACE_OF_RPORT_VALUE: return INTERFACE_OF_RPORT;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private ActualChoice(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //ActualChoice
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/AutoIndex.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/AutoIndex.java
new file mode 100644
index 00000000000..6f7a62bdf22
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/AutoIndex.java
@@ -0,0 +1,56 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Auto Index</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.AutoIndex#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getAutoIndex()
+ * @model
+ * @generated
+ */
+public interface AutoIndex extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Property</em>' reference.
+ * @see #setBase_Property(Property)
+ * @see FCM.FCMPackage#getAutoIndex_Base_Property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_Property();
+
+ /**
+ * Sets the value of the '{@link FCM.AutoIndex#getBase_Property <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Property</em>' reference.
+ * @see #getBase_Property()
+ * @generated
+ */
+ void setBase_Property(Property value);
+
+} // AutoIndex
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/AutoIndexPerNode.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/AutoIndexPerNode.java
new file mode 100644
index 00000000000..d0712fe68d1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/AutoIndexPerNode.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Auto Index Per Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see FCM.FCMPackage#getAutoIndexPerNode()
+ * @model
+ * @generated
+ */
+public interface AutoIndexPerNode extends AutoIndex {
+} // AutoIndexPerNode
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CompImplTemplate.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CompImplTemplate.java
new file mode 100644
index 00000000000..cbf75214502
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CompImplTemplate.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Comp Impl Template</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.CompImplTemplate#getTemplateDefs <em>Template Defs</em>}</li>
+ * <li>{@link FCM.CompImplTemplate#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getCompImplTemplate()
+ * @model
+ * @generated
+ */
+public interface CompImplTemplate extends EObject {
+ /**
+ * Returns the value of the '<em><b>Template Defs</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Template Defs</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Template Defs</em>' attribute.
+ * @see #setTemplateDefs(String)
+ * @see FCM.FCMPackage#getCompImplTemplate_TemplateDefs()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ String getTemplateDefs();
+
+ /**
+ * Sets the value of the '{@link FCM.CompImplTemplate#getTemplateDefs <em>Template Defs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Template Defs</em>' attribute.
+ * @see #getTemplateDefs()
+ * @generated
+ */
+ void setTemplateDefs(String value);
+
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getCompImplTemplate_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.CompImplTemplate#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // CompImplTemplate
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigOption.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigOption.java
new file mode 100644
index 00000000000..e16560267de
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigOption.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Config Option</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ConfigOption#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getConfigOption()
+ * @model
+ * @generated
+ */
+public interface ConfigOption extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getConfigOption_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.ConfigOption#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // ConfigOption
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigurableElementInstance.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigurableElementInstance.java
new file mode 100644
index 00000000000..3e1ab2f727a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigurableElementInstance.java
@@ -0,0 +1,56 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Configurable Element Instance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ConfigurableElementInstance#getConfiguration <em>Configuration</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getConfigurableElementInstance()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ConfigurableElementInstance extends EObject {
+ /**
+ * Returns the value of the '<em><b>Configuration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Configuration</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Configuration</em>' reference.
+ * @see #setConfiguration(InstanceSpecification)
+ * @see FCM.FCMPackage#getConfigurableElementInstance_Configuration()
+ * @model ordered="false"
+ * @generated
+ */
+ InstanceSpecification getConfiguration();
+
+ /**
+ * Sets the value of the '{@link FCM.ConfigurableElementInstance#getConfiguration <em>Configuration</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Configuration</em>' reference.
+ * @see #getConfiguration()
+ * @generated
+ */
+ void setConfiguration(InstanceSpecification value);
+
+} // ConfigurableElementInstance
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Configuration.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Configuration.java
new file mode 100644
index 00000000000..ff1131d6786
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Configuration.java
@@ -0,0 +1,100 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.Configuration#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.Configuration#getConfigOptions <em>Config Options</em>}</li>
+ * <li>{@link FCM.Configuration#getDeploymentPlan <em>Deployment Plan</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getConfiguration()
+ * @model
+ * @generated
+ */
+public interface Configuration extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getConfiguration_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.Configuration#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * Returns the value of the '<em><b>Config Options</b></em>' reference list.
+ * The list contents are of type {@link FCM.ConfigOption}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Config Options</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Config Options</em>' reference list.
+ * @see FCM.FCMPackage#getConfiguration_ConfigOptions()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<ConfigOption> getConfigOptions();
+
+ /**
+ * Returns the value of the '<em><b>Deployment Plan</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Deployment Plan</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Deployment Plan</em>' reference.
+ * @see #setDeploymentPlan(DeploymentPlan)
+ * @see FCM.FCMPackage#getConfiguration_DeploymentPlan()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ DeploymentPlan getDeploymentPlan();
+
+ /**
+ * Sets the value of the '{@link FCM.Configuration#getDeploymentPlan <em>Deployment Plan</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Deployment Plan</em>' reference.
+ * @see #getDeploymentPlan()
+ * @generated
+ */
+ void setDeploymentPlan(DeploymentPlan value);
+
+} // Configuration
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigurationProperty.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigurationProperty.java
new file mode 100644
index 00000000000..81e2acac248
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConfigurationProperty.java
@@ -0,0 +1,60 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Configuration Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * This stereotype indicuates that the attribute does not only store values but needs to be configured initially be the user. It corresponds to the automatic creation of an entry (slot+nstance specification) in the deployment plan
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ConfigurationProperty#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getConfigurationProperty()
+ * @model
+ * @generated
+ */
+public interface ConfigurationProperty extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Property</em>' reference.
+ * @see #setBase_Property(Property)
+ * @see FCM.FCMPackage#getConfigurationProperty_Base_Property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_Property();
+
+ /**
+ * Sets the value of the '{@link FCM.ConfigurationProperty#getBase_Property <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Property</em>' reference.
+ * @see #getBase_Property()
+ * @generated
+ */
+ void setBase_Property(Property value);
+
+} // ConfigurationProperty
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Connector.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Connector.java
new file mode 100644
index 00000000000..c571ec06563
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Connector.java
@@ -0,0 +1,108 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connector</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.Connector#getBase_Connector <em>Base Connector</em>}</li>
+ * <li>{@link FCM.Connector#getIc <em>Ic</em>}</li>
+ * <li>{@link FCM.Connector#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getConnector()
+ * @model
+ * @generated
+ */
+public interface Connector extends ConfigurableElementInstance {
+ /**
+ * Returns the value of the '<em><b>Base Connector</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Connector</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Connector</em>' reference.
+ * @see #setBase_Connector(org.eclipse.uml2.uml.Connector)
+ * @see FCM.FCMPackage#getConnector_Base_Connector()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Connector getBase_Connector();
+
+ /**
+ * Sets the value of the '{@link FCM.Connector#getBase_Connector <em>Base Connector</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Connector</em>' reference.
+ * @see #getBase_Connector()
+ * @generated
+ */
+ void setBase_Connector(org.eclipse.uml2.uml.Connector value);
+
+ /**
+ * Returns the value of the '<em><b>Ic</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Ic</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Ic</em>' reference.
+ * @see #setIc(InteractionComponent)
+ * @see FCM.FCMPackage#getConnector_Ic()
+ * @model ordered="false"
+ * @generated
+ */
+ InteractionComponent getIc();
+
+ /**
+ * Sets the value of the '{@link FCM.Connector#getIc <em>Ic</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Ic</em>' reference.
+ * @see #getIc()
+ * @generated
+ */
+ void setIc(InteractionComponent value);
+
+ /**
+ * Returns the value of the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Property</em>' reference.
+ * @see #setBase_Property(Property)
+ * @see FCM.FCMPackage#getConnector_Base_Property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_Property();
+
+ /**
+ * Sets the value of the '{@link FCM.Connector#getBase_Property <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Property</em>' reference.
+ * @see #getBase_Property()
+ * @generated
+ */
+ void setBase_Property(Property value);
+
+} // Connector
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConnectorConfiguration.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConnectorConfiguration.java
new file mode 100644
index 00000000000..c6d72b50272
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ConnectorConfiguration.java
@@ -0,0 +1,83 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Slot;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connector Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ConnectorConfiguration#getBase_Slot <em>Base Slot</em>}</li>
+ * <li>{@link FCM.ConnectorConfiguration#getConnector <em>Connector</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getConnectorConfiguration()
+ * @model
+ * @generated
+ */
+public interface ConnectorConfiguration extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Slot</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Slot</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Slot</em>' reference.
+ * @see #setBase_Slot(Slot)
+ * @see FCM.FCMPackage#getConnectorConfiguration_Base_Slot()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Slot getBase_Slot();
+
+ /**
+ * Sets the value of the '{@link FCM.ConnectorConfiguration#getBase_Slot <em>Base Slot</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Slot</em>' reference.
+ * @see #getBase_Slot()
+ * @generated
+ */
+ void setBase_Slot(Slot value);
+
+ /**
+ * Returns the value of the '<em><b>Connector</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connector</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connector</em>' reference.
+ * @see #setConnector(Connector)
+ * @see FCM.FCMPackage#getConnectorConfiguration_Connector()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Connector getConnector();
+
+ /**
+ * Sets the value of the '{@link FCM.ConnectorConfiguration#getConnector <em>Connector</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Connector</em>' reference.
+ * @see #getConnector()
+ * @generated
+ */
+ void setConnector(Connector value);
+
+} // ConnectorConfiguration
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerPort.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerPort.java
new file mode 100644
index 00000000000..4b3e46526b7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerPort.java
@@ -0,0 +1,21 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Container Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see FCM.FCMPackage#getContainerPort()
+ * @model
+ * @generated
+ */
+public interface ContainerPort extends Port {
+} // ContainerPort
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerRule.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerRule.java
new file mode 100644
index 00000000000..1a4b34e3dad
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerRule.java
@@ -0,0 +1,102 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Container Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ContainerRule#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.ContainerRule#getForConfig <em>For Config</em>}</li>
+ * <li>{@link FCM.ContainerRule#getKind <em>Kind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getContainerRule()
+ * @model
+ * @generated
+ */
+public interface ContainerRule extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getContainerRule_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.ContainerRule#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * Returns the value of the '<em><b>For Config</b></em>' reference list.
+ * The list contents are of type {@link FCM.ConfigOption}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>For Config</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>For Config</em>' reference list.
+ * @see FCM.FCMPackage#getContainerRule_ForConfig()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<ConfigOption> getForConfig();
+
+ /**
+ * Returns the value of the '<em><b>Kind</b></em>' attribute.
+ * The literals are from the enumeration {@link FCM.ContainerRuleKind}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Kind</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Kind</em>' attribute.
+ * @see FCM.ContainerRuleKind
+ * @see #setKind(ContainerRuleKind)
+ * @see FCM.FCMPackage#getContainerRule_Kind()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ ContainerRuleKind getKind();
+
+ /**
+ * Sets the value of the '{@link FCM.ContainerRule#getKind <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Kind</em>' attribute.
+ * @see FCM.ContainerRuleKind
+ * @see #getKind()
+ * @generated
+ */
+ void setKind(ContainerRuleKind value);
+
+} // ContainerRule
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerRuleKind.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerRuleKind.java
new file mode 100644
index 00000000000..96f6944145b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ContainerRuleKind.java
@@ -0,0 +1,208 @@
+/**
+ */
+package FCM;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Container Rule Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see FCM.FCMPackage#getContainerRuleKind()
+ * @model
+ * @generated
+ */
+public enum ContainerRuleKind implements Enumerator {
+ /**
+ * The '<em><b>Component Rule</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #COMPONENT_RULE_VALUE
+ * @generated
+ * @ordered
+ */
+ COMPONENT_RULE(0, "ComponentRule", "ComponentRule"),
+
+ /**
+ * The '<em><b>Light Weight OO Rule</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LIGHT_WEIGHT_OO_RULE_VALUE
+ * @generated
+ * @ordered
+ */
+ LIGHT_WEIGHT_OO_RULE(1, "LightWeightOORule", "LightWeightOORule");
+
+ /**
+ * The '<em><b>Component Rule</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Component Rule</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #COMPONENT_RULE
+ * @model name="ComponentRule"
+ * @generated
+ * @ordered
+ */
+ public static final int COMPONENT_RULE_VALUE = 0;
+
+ /**
+ * The '<em><b>Light Weight OO Rule</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Light Weight OO Rule</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LIGHT_WEIGHT_OO_RULE
+ * @model name="LightWeightOORule"
+ * @generated
+ * @ordered
+ */
+ public static final int LIGHT_WEIGHT_OO_RULE_VALUE = 1;
+
+ /**
+ * An array of all the '<em><b>Container Rule Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final ContainerRuleKind[] VALUES_ARRAY =
+ new ContainerRuleKind[] {
+ COMPONENT_RULE,
+ LIGHT_WEIGHT_OO_RULE,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Container Rule Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<ContainerRuleKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Container Rule Kind</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ContainerRuleKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ ContainerRuleKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Container Rule Kind</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ContainerRuleKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ ContainerRuleKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Container Rule Kind</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static ContainerRuleKind get(int value) {
+ switch (value) {
+ case COMPONENT_RULE_VALUE: return COMPONENT_RULE;
+ case LIGHT_WEIGHT_OO_RULE_VALUE: return LIGHT_WEIGHT_OO_RULE;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private ContainerRuleKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //ContainerRuleKind
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CopyAttributeValue.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CopyAttributeValue.java
new file mode 100644
index 00000000000..c123bcc185d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CopyAttributeValue.java
@@ -0,0 +1,83 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Copy Attribute Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.CopyAttributeValue#getSource <em>Source</em>}</li>
+ * <li>{@link FCM.CopyAttributeValue#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getCopyAttributeValue()
+ * @model
+ * @generated
+ */
+public interface CopyAttributeValue extends EObject {
+ /**
+ * Returns the value of the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Source</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Source</em>' reference.
+ * @see #setSource(Property)
+ * @see FCM.FCMPackage#getCopyAttributeValue_Source()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getSource();
+
+ /**
+ * Sets the value of the '{@link FCM.CopyAttributeValue#getSource <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Source</em>' reference.
+ * @see #getSource()
+ * @generated
+ */
+ void setSource(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Property</em>' reference.
+ * @see #setBase_Property(Property)
+ * @see FCM.FCMPackage#getCopyAttributeValue_Base_Property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_Property();
+
+ /**
+ * Sets the value of the '{@link FCM.CopyAttributeValue#getBase_Property <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Property</em>' reference.
+ * @see #getBase_Property()
+ * @generated
+ */
+ void setBase_Property(Property value);
+
+} // CopyAttributeValue
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CppLibrary.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CppLibrary.java
new file mode 100644
index 00000000000..35f6a1573a1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/CppLibrary.java
@@ -0,0 +1,96 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cpp Library</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.CppLibrary#getMacros <em>Macros</em>}</li>
+ * <li>{@link FCM.CppLibrary#getLibs <em>Libs</em>}</li>
+ * <li>{@link FCM.CppLibrary#getLibPaths <em>Lib Paths</em>}</li>
+ * <li>{@link FCM.CppLibrary#getIncludePaths <em>Include Paths</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getCppLibrary()
+ * @model
+ * @generated
+ */
+public interface CppLibrary extends ExternalLibrary {
+ /**
+ * Returns the value of the '<em><b>Macros</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Macros</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Macros</em>' attribute list.
+ * @see FCM.FCMPackage#getCppLibrary_Macros()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ EList<String> getMacros();
+
+ /**
+ * Returns the value of the '<em><b>Libs</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Libs</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Libs</em>' attribute list.
+ * @see FCM.FCMPackage#getCppLibrary_Libs()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ EList<String> getLibs();
+
+ /**
+ * Returns the value of the '<em><b>Lib Paths</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Lib Paths</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Lib Paths</em>' attribute list.
+ * @see FCM.FCMPackage#getCppLibrary_LibPaths()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ EList<String> getLibPaths();
+
+ /**
+ * Returns the value of the '<em><b>Include Paths</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Include Paths</em>' attribute list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Include Paths</em>' attribute list.
+ * @see FCM.FCMPackage#getCppLibrary_IncludePaths()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ EList<String> getIncludePaths();
+
+} // CppLibrary
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/DeploymentPlan.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/DeploymentPlan.java
new file mode 100644
index 00000000000..84727901550
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/DeploymentPlan.java
@@ -0,0 +1,83 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Deployment Plan</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.DeploymentPlan#getMainInstance <em>Main Instance</em>}</li>
+ * <li>{@link FCM.DeploymentPlan#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getDeploymentPlan()
+ * @model
+ * @generated
+ */
+public interface DeploymentPlan extends EObject {
+ /**
+ * Returns the value of the '<em><b>Main Instance</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Main Instance</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Main Instance</em>' reference.
+ * @see #setMainInstance(InstanceSpecification)
+ * @see FCM.FCMPackage#getDeploymentPlan_MainInstance()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ InstanceSpecification getMainInstance();
+
+ /**
+ * Sets the value of the '{@link FCM.DeploymentPlan#getMainInstance <em>Main Instance</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Main Instance</em>' reference.
+ * @see #getMainInstance()
+ * @generated
+ */
+ void setMainInstance(InstanceSpecification value);
+
+ /**
+ * Returns the value of the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Package</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Package</em>' reference.
+ * @see #setBase_Package(org.eclipse.uml2.uml.Package)
+ * @see FCM.FCMPackage#getDeploymentPlan_Base_Package()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Package getBase_Package();
+
+ /**
+ * Sets the value of the '{@link FCM.DeploymentPlan#getBase_Package <em>Base Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Package</em>' reference.
+ * @see #getBase_Package()
+ * @generated
+ */
+ void setBase_Package(org.eclipse.uml2.uml.Package value);
+
+} // DeploymentPlan
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/DerivedElement.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/DerivedElement.java
new file mode 100644
index 00000000000..508dd7c0765
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/DerivedElement.java
@@ -0,0 +1,83 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Derived Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.DerivedElement#getBase_Element <em>Base Element</em>}</li>
+ * <li>{@link FCM.DerivedElement#getSource <em>Source</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getDerivedElement()
+ * @model
+ * @generated
+ */
+public interface DerivedElement extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Element</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Element</em>' reference.
+ * @see #setBase_Element(Element)
+ * @see FCM.FCMPackage#getDerivedElement_Base_Element()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Element getBase_Element();
+
+ /**
+ * Sets the value of the '{@link FCM.DerivedElement#getBase_Element <em>Base Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Element</em>' reference.
+ * @see #getBase_Element()
+ * @generated
+ */
+ void setBase_Element(Element value);
+
+ /**
+ * Returns the value of the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Source</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Source</em>' reference.
+ * @see #setSource(Element)
+ * @see FCM.FCMPackage#getDerivedElement_Source()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Element getSource();
+
+ /**
+ * Sets the value of the '{@link FCM.DerivedElement#getSource <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Source</em>' reference.
+ * @see #getSource()
+ * @generated
+ */
+ void setSource(Element value);
+
+} // DerivedElement
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ExtendedSignature.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ExtendedSignature.java
new file mode 100644
index 00000000000..e801044e3f9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ExtendedSignature.java
@@ -0,0 +1,83 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.TemplateSignature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Extended Signature</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ExtendedSignature#getBase_TemplateSignature <em>Base Template Signature</em>}</li>
+ * <li>{@link FCM.ExtendedSignature#getBaseSignature <em>Base Signature</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getExtendedSignature()
+ * @model
+ * @generated
+ */
+public interface ExtendedSignature extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Template Signature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Template Signature</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Template Signature</em>' reference.
+ * @see #setBase_TemplateSignature(TemplateSignature)
+ * @see FCM.FCMPackage#getExtendedSignature_Base_TemplateSignature()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TemplateSignature getBase_TemplateSignature();
+
+ /**
+ * Sets the value of the '{@link FCM.ExtendedSignature#getBase_TemplateSignature <em>Base Template Signature</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Template Signature</em>' reference.
+ * @see #getBase_TemplateSignature()
+ * @generated
+ */
+ void setBase_TemplateSignature(TemplateSignature value);
+
+ /**
+ * Returns the value of the '<em><b>Base Signature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Signature</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Signature</em>' reference.
+ * @see #setBaseSignature(TemplateSignature)
+ * @see FCM.FCMPackage#getExtendedSignature_BaseSignature()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TemplateSignature getBaseSignature();
+
+ /**
+ * Sets the value of the '{@link FCM.ExtendedSignature#getBaseSignature <em>Base Signature</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Signature</em>' reference.
+ * @see #getBaseSignature()
+ * @generated
+ */
+ void setBaseSignature(TemplateSignature value);
+
+} // ExtendedSignature
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ExternalLibrary.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ExternalLibrary.java
new file mode 100644
index 00000000000..1295f79edc1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ExternalLibrary.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>External Library</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ExternalLibrary#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getExternalLibrary()
+ * @model
+ * @generated
+ */
+public interface ExternalLibrary extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Package</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Package</em>' reference.
+ * @see #setBase_Package(org.eclipse.uml2.uml.Package)
+ * @see FCM.FCMPackage#getExternalLibrary_Base_Package()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Package getBase_Package();
+
+ /**
+ * Sets the value of the '{@link FCM.ExternalLibrary#getBase_Package <em>Base Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Package</em>' reference.
+ * @see #getBase_Package()
+ * @generated
+ */
+ void setBase_Package(org.eclipse.uml2.uml.Package value);
+
+} // ExternalLibrary
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/FCMFactory.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/FCMFactory.java
new file mode 100644
index 00000000000..0b36d89a553
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/FCMFactory.java
@@ -0,0 +1,334 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see FCM.FCMPackage
+ * @generated
+ */
+public interface FCMFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ FCMFactory eINSTANCE = FCM.impl.FCMFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Template</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Template</em>'.
+ * @generated
+ */
+ Template createTemplate();
+
+ /**
+ * Returns a new object of class '<em>Container Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Container Rule</em>'.
+ * @generated
+ */
+ ContainerRule createContainerRule();
+
+ /**
+ * Returns a new object of class '<em>Port</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Port</em>'.
+ * @generated
+ */
+ Port createPort();
+
+ /**
+ * Returns a new object of class '<em>Port Kind</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Port Kind</em>'.
+ * @generated
+ */
+ PortKind createPortKind();
+
+ /**
+ * Returns a new object of class '<em>Comp Impl Template</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Comp Impl Template</em>'.
+ * @generated
+ */
+ CompImplTemplate createCompImplTemplate();
+
+ /**
+ * Returns a new object of class '<em>Config Option</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Config Option</em>'.
+ * @generated
+ */
+ ConfigOption createConfigOption();
+
+ /**
+ * Returns a new object of class '<em>Singleton</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Singleton</em>'.
+ * @generated
+ */
+ Singleton createSingleton();
+
+ /**
+ * Returns a new object of class '<em>Interaction Component</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Interaction Component</em>'.
+ * @generated
+ */
+ InteractionComponent createInteractionComponent();
+
+ /**
+ * Returns a new object of class '<em>Connector</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Connector</em>'.
+ * @generated
+ */
+ Connector createConnector();
+
+ /**
+ * Returns a new object of class '<em>Configuration Property</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Configuration Property</em>'.
+ * @generated
+ */
+ ConfigurationProperty createConfigurationProperty();
+
+ /**
+ * Returns a new object of class '<em>Deployment Plan</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Deployment Plan</em>'.
+ * @generated
+ */
+ DeploymentPlan createDeploymentPlan();
+
+ /**
+ * Returns a new object of class '<em>Derived Element</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Derived Element</em>'.
+ * @generated
+ */
+ DerivedElement createDerivedElement();
+
+ /**
+ * Returns a new object of class '<em>Cpp Library</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Cpp Library</em>'.
+ * @generated
+ */
+ CppLibrary createCppLibrary();
+
+ /**
+ * Returns a new object of class '<em>External Library</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>External Library</em>'.
+ * @generated
+ */
+ ExternalLibrary createExternalLibrary();
+
+ /**
+ * Returns a new object of class '<em>Implementation Group</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Implementation Group</em>'.
+ * @generated
+ */
+ ImplementationGroup createImplementationGroup();
+
+ /**
+ * Returns a new object of class '<em>Rule Application</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Rule Application</em>'.
+ * @generated
+ */
+ RuleApplication createRuleApplication();
+
+ /**
+ * Returns a new object of class '<em>Java Library</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Java Library</em>'.
+ * @generated
+ */
+ JavaLibrary createJavaLibrary();
+
+ /**
+ * Returns a new object of class '<em>Implementation Properties</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Implementation Properties</em>'.
+ * @generated
+ */
+ ImplementationProperties createImplementationProperties();
+
+ /**
+ * Returns a new object of class '<em>Operating System</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Operating System</em>'.
+ * @generated
+ */
+ OperatingSystem createOperatingSystem();
+
+ /**
+ * Returns a new object of class '<em>Target Architecture</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Target Architecture</em>'.
+ * @generated
+ */
+ TargetArchitecture createTargetArchitecture();
+
+ /**
+ * Returns a new object of class '<em>Target</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Target</em>'.
+ * @generated
+ */
+ Target createTarget();
+
+ /**
+ * Returns a new object of class '<em>Part</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Part</em>'.
+ * @generated
+ */
+ Part createPart();
+
+ /**
+ * Returns a new object of class '<em>Copy Attribute Value</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Copy Attribute Value</em>'.
+ * @generated
+ */
+ CopyAttributeValue createCopyAttributeValue();
+
+ /**
+ * Returns a new object of class '<em>Auto Index</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Auto Index</em>'.
+ * @generated
+ */
+ AutoIndex createAutoIndex();
+
+ /**
+ * Returns a new object of class '<em>Auto Index Per Node</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Auto Index Per Node</em>'.
+ * @generated
+ */
+ AutoIndexPerNode createAutoIndexPerNode();
+
+ /**
+ * Returns a new object of class '<em>Init Precedence</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Init Precedence</em>'.
+ * @generated
+ */
+ InitPrecedence createInitPrecedence();
+
+ /**
+ * Returns a new object of class '<em>Connector Configuration</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Connector Configuration</em>'.
+ * @generated
+ */
+ ConnectorConfiguration createConnectorConfiguration();
+
+ /**
+ * Returns a new object of class '<em>Extended Signature</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Extended Signature</em>'.
+ * @generated
+ */
+ ExtendedSignature createExtendedSignature();
+
+ /**
+ * Returns a new object of class '<em>Container Port</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Container Port</em>'.
+ * @generated
+ */
+ ContainerPort createContainerPort();
+
+ /**
+ * Returns a new object of class '<em>Use Instance Configurator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Use Instance Configurator</em>'.
+ * @generated
+ */
+ UseInstanceConfigurator createUseInstanceConfigurator();
+
+ /**
+ * Returns a new object of class '<em>Instance Configurator</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Instance Configurator</em>'.
+ * @generated
+ */
+ InstanceConfigurator createInstanceConfigurator();
+
+ /**
+ * Returns a new object of class '<em>Configuration</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Configuration</em>'.
+ * @generated
+ */
+ Configuration createConfiguration();
+
+ /**
+ * Returns a new object of class '<em>Interception Rule</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Interception Rule</em>'.
+ * @generated
+ */
+ InterceptionRule createInterceptionRule();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ FCMPackage getFCMPackage();
+
+} //FCMFactory
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/FCMPackage.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/FCMPackage.java
new file mode 100644
index 00000000000..a9c23c81f7a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/FCMPackage.java
@@ -0,0 +1,3816 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see FCM.FCMFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface FCMPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "FCM";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://papyrus/FCMProfile/1";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "FCM";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ FCMPackage eINSTANCE = FCM.impl.FCMPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link FCM.impl.TemplateImpl <em>Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.TemplateImpl
+ * @see FCM.impl.FCMPackageImpl#getTemplate()
+ * @generated
+ */
+ int TEMPLATE = 0;
+
+ /**
+ * The feature id for the '<em><b>Template Params</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__TEMPLATE_PARAMS = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__BASE_ELEMENT = 1;
+
+ /**
+ * The feature id for the '<em><b>Kind</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__KIND = 2;
+
+ /**
+ * The feature id for the '<em><b>Actual Choice</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE__ACTUAL_CHOICE = 3;
+
+ /**
+ * The number of structural features of the '<em>Template</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TEMPLATE_FEATURE_COUNT = 4;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ContainerRuleImpl <em>Container Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ContainerRuleImpl
+ * @see FCM.impl.FCMPackageImpl#getContainerRule()
+ * @generated
+ */
+ int CONTAINER_RULE = 4;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ConfigurableElementInstanceImpl <em>Configurable Element Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConfigurableElementInstanceImpl
+ * @see FCM.impl.FCMPackageImpl#getConfigurableElementInstance()
+ * @generated
+ */
+ int CONFIGURABLE_ELEMENT_INSTANCE = 10;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.PortImpl <em>Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.PortImpl
+ * @see FCM.impl.FCMPackageImpl#getPort()
+ * @generated
+ */
+ int PORT = 9;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.PortKindImpl <em>Port Kind</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.PortKindImpl
+ * @see FCM.impl.FCMPackageImpl#getPortKind()
+ * @generated
+ */
+ int PORT_KIND = 8;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.CompImplTemplateImpl <em>Comp Impl Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.CompImplTemplateImpl
+ * @see FCM.impl.FCMPackageImpl#getCompImplTemplate()
+ * @generated
+ */
+ int COMP_IMPL_TEMPLATE = 14;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ConfigOptionImpl <em>Config Option</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConfigOptionImpl
+ * @see FCM.impl.FCMPackageImpl#getConfigOption()
+ * @generated
+ */
+ int CONFIG_OPTION = 5;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ConnectorImpl <em>Connector</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConnectorImpl
+ * @see FCM.impl.FCMPackageImpl#getConnector()
+ * @generated
+ */
+ int CONNECTOR = 11;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ConfigurationPropertyImpl <em>Configuration Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConfigurationPropertyImpl
+ * @see FCM.impl.FCMPackageImpl#getConfigurationProperty()
+ * @generated
+ */
+ int CONFIGURATION_PROPERTY = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIGURATION_PROPERTY__BASE_PROPERTY = 0;
+
+ /**
+ * The number of structural features of the '<em>Configuration Property</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIGURATION_PROPERTY_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.RuleApplicationImpl <em>Rule Application</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.RuleApplicationImpl
+ * @see FCM.impl.FCMPackageImpl#getRuleApplication()
+ * @generated
+ */
+ int RULE_APPLICATION = 3;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.DeploymentPlanImpl <em>Deployment Plan</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.DeploymentPlanImpl
+ * @see FCM.impl.FCMPackageImpl#getDeploymentPlan()
+ * @generated
+ */
+ int DEPLOYMENT_PLAN = 12;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.DerivedElementImpl <em>Derived Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.DerivedElementImpl
+ * @see FCM.impl.FCMPackageImpl#getDerivedElement()
+ * @generated
+ */
+ int DERIVED_ELEMENT = 13;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ExternalLibraryImpl <em>External Library</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ExternalLibraryImpl
+ * @see FCM.impl.FCMPackageImpl#getExternalLibrary()
+ * @generated
+ */
+ int EXTERNAL_LIBRARY = 16;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.CppLibraryImpl <em>Cpp Library</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.CppLibraryImpl
+ * @see FCM.impl.FCMPackageImpl#getCppLibrary()
+ * @generated
+ */
+ int CPP_LIBRARY = 15;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ImplementationGroupImpl <em>Implementation Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ImplementationGroupImpl
+ * @see FCM.impl.FCMPackageImpl#getImplementationGroup()
+ * @generated
+ */
+ int IMPLEMENTATION_GROUP = 2;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.JavaLibraryImpl <em>Java Library</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.JavaLibraryImpl
+ * @see FCM.impl.FCMPackageImpl#getJavaLibrary()
+ * @generated
+ */
+ int JAVA_LIBRARY = 17;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ImplementationPropertiesImpl <em>Implementation Properties</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ImplementationPropertiesImpl
+ * @see FCM.impl.FCMPackageImpl#getImplementationProperties()
+ * @generated
+ */
+ int IMPLEMENTATION_PROPERTIES = 18;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.OperatingSystemImpl <em>Operating System</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.OperatingSystemImpl
+ * @see FCM.impl.FCMPackageImpl#getOperatingSystem()
+ * @generated
+ */
+ int OPERATING_SYSTEM = 19;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.TargetArchitectureImpl <em>Target Architecture</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.TargetArchitectureImpl
+ * @see FCM.impl.FCMPackageImpl#getTargetArchitecture()
+ * @generated
+ */
+ int TARGET_ARCHITECTURE = 20;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.TargetImpl <em>Target</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.TargetImpl
+ * @see FCM.impl.FCMPackageImpl#getTarget()
+ * @generated
+ */
+ int TARGET = 23;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ConfigurationImpl <em>Configuration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConfigurationImpl
+ * @see FCM.impl.FCMPackageImpl#getConfiguration()
+ * @generated
+ */
+ int CONFIGURATION = 21;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.InterceptionRuleImpl <em>Interception Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.InterceptionRuleImpl
+ * @see FCM.impl.FCMPackageImpl#getInterceptionRule()
+ * @generated
+ */
+ int INTERCEPTION_RULE = 22;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.SingletonImpl <em>Singleton</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.SingletonImpl
+ * @see FCM.impl.FCMPackageImpl#getSingleton()
+ * @generated
+ */
+ int SINGLETON = 6;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.InteractionComponentImpl <em>Interaction Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.InteractionComponentImpl
+ * @see FCM.impl.FCMPackageImpl#getInteractionComponent()
+ * @generated
+ */
+ int INTERACTION_COMPONENT = 7;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_GROUP__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Implementation Group</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_GROUP_FEATURE_COUNT = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RULE_APPLICATION__BASE_CLASS = 0;
+
+ /**
+ * The feature id for the '<em><b>Container Rule</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RULE_APPLICATION__CONTAINER_RULE = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RULE_APPLICATION__BASE_PACKAGE = 2;
+
+ /**
+ * The number of structural features of the '<em>Rule Application</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int RULE_APPLICATION_FEATURE_COUNT = 3;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_RULE__BASE_CLASS = 0;
+
+ /**
+ * The feature id for the '<em><b>For Config</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_RULE__FOR_CONFIG = 1;
+
+ /**
+ * The feature id for the '<em><b>Kind</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_RULE__KIND = 2;
+
+ /**
+ * The number of structural features of the '<em>Container Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_RULE_FEATURE_COUNT = 3;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIG_OPTION__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Config Option</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIG_OPTION_FEATURE_COUNT = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLETON__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Singleton</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SINGLETON_FEATURE_COUNT = 1;
+
+ /**
+ * The feature id for the '<em><b>For Distribution</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERACTION_COMPONENT__FOR_DISTRIBUTION = 0;
+
+ /**
+ * The feature id for the '<em><b>Connection Pattern</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERACTION_COMPONENT__CONNECTION_PATTERN = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERACTION_COMPONENT__BASE_CLASS = 2;
+
+ /**
+ * The number of structural features of the '<em>Interaction Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERACTION_COMPONENT_FEATURE_COUNT = 3;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_KIND__BASE_CLASS = 0;
+
+ /**
+ * The feature id for the '<em><b>Provided Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_KIND__PROVIDED_INTERFACE = 1;
+
+ /**
+ * The feature id for the '<em><b>Required Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_KIND__REQUIRED_INTERFACE = 2;
+
+ /**
+ * The feature id for the '<em><b>Extended Port</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_KIND__EXTENDED_PORT = 3;
+
+ /**
+ * The number of structural features of the '<em>Port Kind</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_KIND_FEATURE_COUNT = 4;
+
+ /**
+ * The feature id for the '<em><b>Configuration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION = 0;
+
+ /**
+ * The number of structural features of the '<em>Configurable Element Instance</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT = 1;
+
+ /**
+ * The feature id for the '<em><b>Configuration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__CONFIGURATION = CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION;
+
+ /**
+ * The feature id for the '<em><b>Base Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__BASE_PORT = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Kind</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__KIND = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Provided Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__PROVIDED_INTERFACE = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Required Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__REQUIRED_INTERFACE = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Conjugated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT__CONJUGATED = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 4;
+
+ /**
+ * The number of structural features of the '<em>Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PORT_FEATURE_COUNT = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Configuration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTOR__CONFIGURATION = CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION;
+
+ /**
+ * The feature id for the '<em><b>Base Connector</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTOR__BASE_CONNECTOR = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Ic</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTOR__IC = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTOR__BASE_PROPERTY = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Connector</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTOR_FEATURE_COUNT = CONFIGURABLE_ELEMENT_INSTANCE_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Main Instance</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEPLOYMENT_PLAN__MAIN_INSTANCE = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEPLOYMENT_PLAN__BASE_PACKAGE = 1;
+
+ /**
+ * The number of structural features of the '<em>Deployment Plan</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DEPLOYMENT_PLAN_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DERIVED_ELEMENT__BASE_ELEMENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DERIVED_ELEMENT__SOURCE = 1;
+
+ /**
+ * The number of structural features of the '<em>Derived Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DERIVED_ELEMENT_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Template Defs</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMP_IMPL_TEMPLATE__TEMPLATE_DEFS = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMP_IMPL_TEMPLATE__BASE_CLASS = 1;
+
+ /**
+ * The number of structural features of the '<em>Comp Impl Template</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMP_IMPL_TEMPLATE_FEATURE_COUNT = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_LIBRARY__BASE_PACKAGE = 0;
+
+ /**
+ * The number of structural features of the '<em>External Library</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTERNAL_LIBRARY_FEATURE_COUNT = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_LIBRARY__BASE_PACKAGE = EXTERNAL_LIBRARY__BASE_PACKAGE;
+
+ /**
+ * The feature id for the '<em><b>Macros</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_LIBRARY__MACROS = EXTERNAL_LIBRARY_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Libs</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_LIBRARY__LIBS = EXTERNAL_LIBRARY_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Lib Paths</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_LIBRARY__LIB_PATHS = EXTERNAL_LIBRARY_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Include Paths</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_LIBRARY__INCLUDE_PATHS = EXTERNAL_LIBRARY_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Cpp Library</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CPP_LIBRARY_FEATURE_COUNT = EXTERNAL_LIBRARY_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_LIBRARY__BASE_PACKAGE = EXTERNAL_LIBRARY__BASE_PACKAGE;
+
+ /**
+ * The feature id for the '<em><b>Class Path</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_LIBRARY__CLASS_PATH = EXTERNAL_LIBRARY_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>Java Library</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int JAVA_LIBRARY_FEATURE_COUNT = EXTERNAL_LIBRARY_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Size RAM</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_PROPERTIES__SIZE_RAM = 0;
+
+ /**
+ * The feature id for the '<em><b>Supported OS</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_PROPERTIES__SUPPORTED_OS = 1;
+
+ /**
+ * The feature id for the '<em><b>Arch</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_PROPERTIES__ARCH = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_PROPERTIES__BASE_CLASS = 3;
+
+ /**
+ * The feature id for the '<em><b>Size ROM</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_PROPERTIES__SIZE_ROM = 4;
+
+ /**
+ * The feature id for the '<em><b>Supported Target Arch</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH = 5;
+
+ /**
+ * The number of structural features of the '<em>Implementation Properties</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPLEMENTATION_PROPERTIES_FEATURE_COUNT = 6;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATING_SYSTEM__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Operating System</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int OPERATING_SYSTEM_FEATURE_COUNT = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET_ARCHITECTURE__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Target Architecture</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET_ARCHITECTURE_FEATURE_COUNT = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIGURATION__BASE_CLASS = 0;
+
+ /**
+ * The feature id for the '<em><b>Config Options</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIGURATION__CONFIG_OPTIONS = 1;
+
+ /**
+ * The feature id for the '<em><b>Deployment Plan</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIGURATION__DEPLOYMENT_PLAN = 2;
+
+ /**
+ * The number of structural features of the '<em>Configuration</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONFIGURATION_FEATURE_COUNT = 3;
+
+ /**
+ * The feature id for the '<em><b>Interception Kind</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERCEPTION_RULE__INTERCEPTION_KIND = 0;
+
+ /**
+ * The feature id for the '<em><b>Interception Set</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERCEPTION_RULE__INTERCEPTION_SET = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERCEPTION_RULE__BASE_PROPERTY = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERCEPTION_RULE__BASE_OPERATION = 3;
+
+ /**
+ * The number of structural features of the '<em>Interception Rule</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INTERCEPTION_RULE_FEATURE_COUNT = 4;
+
+ /**
+ * The feature id for the '<em><b>Target Arch</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET__TARGET_ARCH = 0;
+
+ /**
+ * The feature id for the '<em><b>Options</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET__OPTIONS = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET__BASE_NODE = 2;
+
+ /**
+ * The feature id for the '<em><b>Used OS</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET__USED_OS = 3;
+
+ /**
+ * The feature id for the '<em><b>Avail RAM</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET__AVAIL_RAM = 4;
+
+ /**
+ * The feature id for the '<em><b>Avail ROM</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET__AVAIL_ROM = 5;
+
+ /**
+ * The number of structural features of the '<em>Target</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TARGET_FEATURE_COUNT = 6;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.PartImpl <em>Part</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.PartImpl
+ * @see FCM.impl.FCMPackageImpl#getPart()
+ * @generated
+ */
+ int PART = 24;
+
+ /**
+ * The feature id for the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PART__BASE_PROPERTY = 0;
+
+ /**
+ * The feature id for the '<em><b>Colocate With Port</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PART__COLOCATE_WITH_PORT = 1;
+
+ /**
+ * The number of structural features of the '<em>Part</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int PART_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.CopyAttributeValueImpl <em>Copy Attribute Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.CopyAttributeValueImpl
+ * @see FCM.impl.FCMPackageImpl#getCopyAttributeValue()
+ * @generated
+ */
+ int COPY_ATTRIBUTE_VALUE = 25;
+
+ /**
+ * The feature id for the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COPY_ATTRIBUTE_VALUE__SOURCE = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COPY_ATTRIBUTE_VALUE__BASE_PROPERTY = 1;
+
+ /**
+ * The number of structural features of the '<em>Copy Attribute Value</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COPY_ATTRIBUTE_VALUE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.AutoIndexImpl <em>Auto Index</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.AutoIndexImpl
+ * @see FCM.impl.FCMPackageImpl#getAutoIndex()
+ * @generated
+ */
+ int AUTO_INDEX = 26;
+
+ /**
+ * The feature id for the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AUTO_INDEX__BASE_PROPERTY = 0;
+
+ /**
+ * The number of structural features of the '<em>Auto Index</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AUTO_INDEX_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.AutoIndexPerNodeImpl <em>Auto Index Per Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.AutoIndexPerNodeImpl
+ * @see FCM.impl.FCMPackageImpl#getAutoIndexPerNode()
+ * @generated
+ */
+ int AUTO_INDEX_PER_NODE = 27;
+
+ /**
+ * The feature id for the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AUTO_INDEX_PER_NODE__BASE_PROPERTY = AUTO_INDEX__BASE_PROPERTY;
+
+ /**
+ * The number of structural features of the '<em>Auto Index Per Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int AUTO_INDEX_PER_NODE_FEATURE_COUNT = AUTO_INDEX_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.InitPrecedenceImpl <em>Init Precedence</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.InitPrecedenceImpl
+ * @see FCM.impl.FCMPackageImpl#getInitPrecedence()
+ * @generated
+ */
+ int INIT_PRECEDENCE = 28;
+
+ /**
+ * The feature id for the '<em><b>Invoke After</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INIT_PRECEDENCE__INVOKE_AFTER = 0;
+
+ /**
+ * The feature id for the '<em><b>Invoke Before</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INIT_PRECEDENCE__INVOKE_BEFORE = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INIT_PRECEDENCE__BASE_CLASS = 2;
+
+ /**
+ * The number of structural features of the '<em>Init Precedence</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INIT_PRECEDENCE_FEATURE_COUNT = 3;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ConnectorConfigurationImpl <em>Connector Configuration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConnectorConfigurationImpl
+ * @see FCM.impl.FCMPackageImpl#getConnectorConfiguration()
+ * @generated
+ */
+ int CONNECTOR_CONFIGURATION = 29;
+
+ /**
+ * The feature id for the '<em><b>Base Slot</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTOR_CONFIGURATION__BASE_SLOT = 0;
+
+ /**
+ * The feature id for the '<em><b>Connector</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTOR_CONFIGURATION__CONNECTOR = 1;
+
+ /**
+ * The number of structural features of the '<em>Connector Configuration</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONNECTOR_CONFIGURATION_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ExtendedSignatureImpl <em>Extended Signature</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ExtendedSignatureImpl
+ * @see FCM.impl.FCMPackageImpl#getExtendedSignature()
+ * @generated
+ */
+ int EXTENDED_SIGNATURE = 30;
+
+ /**
+ * The feature id for the '<em><b>Base Template Signature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Signature</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENDED_SIGNATURE__BASE_SIGNATURE = 1;
+
+ /**
+ * The number of structural features of the '<em>Extended Signature</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EXTENDED_SIGNATURE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.ContainerPortImpl <em>Container Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ContainerPortImpl
+ * @see FCM.impl.FCMPackageImpl#getContainerPort()
+ * @generated
+ */
+ int CONTAINER_PORT = 31;
+
+ /**
+ * The feature id for the '<em><b>Configuration</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_PORT__CONFIGURATION = PORT__CONFIGURATION;
+
+ /**
+ * The feature id for the '<em><b>Base Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_PORT__BASE_PORT = PORT__BASE_PORT;
+
+ /**
+ * The feature id for the '<em><b>Kind</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_PORT__KIND = PORT__KIND;
+
+ /**
+ * The feature id for the '<em><b>Provided Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_PORT__PROVIDED_INTERFACE = PORT__PROVIDED_INTERFACE;
+
+ /**
+ * The feature id for the '<em><b>Required Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_PORT__REQUIRED_INTERFACE = PORT__REQUIRED_INTERFACE;
+
+ /**
+ * The feature id for the '<em><b>Conjugated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_PORT__CONJUGATED = PORT__CONJUGATED;
+
+ /**
+ * The number of structural features of the '<em>Container Port</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int CONTAINER_PORT_FEATURE_COUNT = PORT_FEATURE_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.UseInstanceConfiguratorImpl <em>Use Instance Configurator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.UseInstanceConfiguratorImpl
+ * @see FCM.impl.FCMPackageImpl#getUseInstanceConfigurator()
+ * @generated
+ */
+ int USE_INSTANCE_CONFIGURATOR = 32;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USE_INSTANCE_CONFIGURATOR__BASE_CLASS = 0;
+
+ /**
+ * The feature id for the '<em><b>Configurator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USE_INSTANCE_CONFIGURATOR__CONFIGURATOR = 1;
+
+ /**
+ * The number of structural features of the '<em>Use Instance Configurator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USE_INSTANCE_CONFIGURATOR_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link FCM.impl.InstanceConfiguratorImpl <em>Instance Configurator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.InstanceConfiguratorImpl
+ * @see FCM.impl.FCMPackageImpl#getInstanceConfigurator()
+ * @generated
+ */
+ int INSTANCE_CONFIGURATOR = 33;
+
+ /**
+ * The feature id for the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCE_CONFIGURATOR__BASE_CLASS = 0;
+
+ /**
+ * The number of structural features of the '<em>Instance Configurator</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int INSTANCE_CONFIGURATOR_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link FCM.TemplateKind <em>Template Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.TemplateKind
+ * @see FCM.impl.FCMPackageImpl#getTemplateKind()
+ * @generated
+ */
+ int TEMPLATE_KIND = 34;
+
+ /**
+ * The meta object id for the '{@link FCM.ActualChoice <em>Actual Choice</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.ActualChoice
+ * @see FCM.impl.FCMPackageImpl#getActualChoice()
+ * @generated
+ */
+ int ACTUAL_CHOICE = 35;
+
+ /**
+ * The meta object id for the '{@link FCM.ContainerRuleKind <em>Container Rule Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.ContainerRuleKind
+ * @see FCM.impl.FCMPackageImpl#getContainerRuleKind()
+ * @generated
+ */
+ int CONTAINER_RULE_KIND = 36;
+
+ /**
+ * The meta object id for the '{@link FCM.InterceptionKind <em>Interception Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.InterceptionKind
+ * @see FCM.impl.FCMPackageImpl#getInterceptionKind()
+ * @generated
+ */
+ int INTERCEPTION_KIND = 37;
+
+ /**
+ * Returns the meta object for class '{@link FCM.Template <em>Template</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Template</em>'.
+ * @see FCM.Template
+ * @generated
+ */
+ EClass getTemplate();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.Template#getTemplateParams <em>Template Params</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Template Params</em>'.
+ * @see FCM.Template#getTemplateParams()
+ * @see #getTemplate()
+ * @generated
+ */
+ EReference getTemplate_TemplateParams();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Template#getBase_Element <em>Base Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Element</em>'.
+ * @see FCM.Template#getBase_Element()
+ * @see #getTemplate()
+ * @generated
+ */
+ EReference getTemplate_Base_Element();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.Template#getKind <em>Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Kind</em>'.
+ * @see FCM.Template#getKind()
+ * @see #getTemplate()
+ * @generated
+ */
+ EAttribute getTemplate_Kind();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.Template#getActualChoice <em>Actual Choice</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Actual Choice</em>'.
+ * @see FCM.Template#getActualChoice()
+ * @see #getTemplate()
+ * @generated
+ */
+ EAttribute getTemplate_ActualChoice();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ContainerRule <em>Container Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Container Rule</em>'.
+ * @see FCM.ContainerRule
+ * @generated
+ */
+ EClass getContainerRule();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ContainerRule#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.ContainerRule#getBase_Class()
+ * @see #getContainerRule()
+ * @generated
+ */
+ EReference getContainerRule_Base_Class();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.ContainerRule#getForConfig <em>For Config</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>For Config</em>'.
+ * @see FCM.ContainerRule#getForConfig()
+ * @see #getContainerRule()
+ * @generated
+ */
+ EReference getContainerRule_ForConfig();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.ContainerRule#getKind <em>Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Kind</em>'.
+ * @see FCM.ContainerRule#getKind()
+ * @see #getContainerRule()
+ * @generated
+ */
+ EAttribute getContainerRule_Kind();
+
+ /**
+ * Returns the meta object for class '{@link FCM.Port <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Port</em>'.
+ * @see FCM.Port
+ * @generated
+ */
+ EClass getPort();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Port#getBase_Port <em>Base Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Port</em>'.
+ * @see FCM.Port#getBase_Port()
+ * @see #getPort()
+ * @generated
+ */
+ EReference getPort_Base_Port();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Port#getKind <em>Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Kind</em>'.
+ * @see FCM.Port#getKind()
+ * @see #getPort()
+ * @generated
+ */
+ EReference getPort_Kind();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Port#getProvidedInterface <em>Provided Interface</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Provided Interface</em>'.
+ * @see FCM.Port#getProvidedInterface()
+ * @see #getPort()
+ * @generated
+ */
+ EReference getPort_ProvidedInterface();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Port#getRequiredInterface <em>Required Interface</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Required Interface</em>'.
+ * @see FCM.Port#getRequiredInterface()
+ * @see #getPort()
+ * @generated
+ */
+ EReference getPort_RequiredInterface();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.Port#isConjugated <em>Conjugated</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Conjugated</em>'.
+ * @see FCM.Port#isConjugated()
+ * @see #getPort()
+ * @generated
+ */
+ EAttribute getPort_Conjugated();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ConfigurableElementInstance <em>Configurable Element Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Configurable Element Instance</em>'.
+ * @see FCM.ConfigurableElementInstance
+ * @generated
+ */
+ EClass getConfigurableElementInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ConfigurableElementInstance#getConfiguration <em>Configuration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Configuration</em>'.
+ * @see FCM.ConfigurableElementInstance#getConfiguration()
+ * @see #getConfigurableElementInstance()
+ * @generated
+ */
+ EReference getConfigurableElementInstance_Configuration();
+
+ /**
+ * Returns the meta object for class '{@link FCM.PortKind <em>Port Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Port Kind</em>'.
+ * @see FCM.PortKind
+ * @generated
+ */
+ EClass getPortKind();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.PortKind#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.PortKind#getBase_Class()
+ * @see #getPortKind()
+ * @generated
+ */
+ EReference getPortKind_Base_Class();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.PortKind#getProvidedInterface <em>Provided Interface</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Provided Interface</em>'.
+ * @see FCM.PortKind#getProvidedInterface()
+ * @see #getPortKind()
+ * @generated
+ */
+ EReference getPortKind_ProvidedInterface();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.PortKind#getRequiredInterface <em>Required Interface</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Required Interface</em>'.
+ * @see FCM.PortKind#getRequiredInterface()
+ * @see #getPortKind()
+ * @generated
+ */
+ EReference getPortKind_RequiredInterface();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.PortKind#isExtendedPort <em>Extended Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Extended Port</em>'.
+ * @see FCM.PortKind#isExtendedPort()
+ * @see #getPortKind()
+ * @generated
+ */
+ EAttribute getPortKind_ExtendedPort();
+
+ /**
+ * Returns the meta object for class '{@link FCM.CompImplTemplate <em>Comp Impl Template</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Comp Impl Template</em>'.
+ * @see FCM.CompImplTemplate
+ * @generated
+ */
+ EClass getCompImplTemplate();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.CompImplTemplate#getTemplateDefs <em>Template Defs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Template Defs</em>'.
+ * @see FCM.CompImplTemplate#getTemplateDefs()
+ * @see #getCompImplTemplate()
+ * @generated
+ */
+ EAttribute getCompImplTemplate_TemplateDefs();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.CompImplTemplate#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.CompImplTemplate#getBase_Class()
+ * @see #getCompImplTemplate()
+ * @generated
+ */
+ EReference getCompImplTemplate_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ConfigOption <em>Config Option</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Config Option</em>'.
+ * @see FCM.ConfigOption
+ * @generated
+ */
+ EClass getConfigOption();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ConfigOption#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.ConfigOption#getBase_Class()
+ * @see #getConfigOption()
+ * @generated
+ */
+ EReference getConfigOption_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.Singleton <em>Singleton</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Singleton</em>'.
+ * @see FCM.Singleton
+ * @generated
+ */
+ EClass getSingleton();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Singleton#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.Singleton#getBase_Class()
+ * @see #getSingleton()
+ * @generated
+ */
+ EReference getSingleton_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.InteractionComponent <em>Interaction Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Interaction Component</em>'.
+ * @see FCM.InteractionComponent
+ * @generated
+ */
+ EClass getInteractionComponent();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.InteractionComponent#isForDistribution <em>For Distribution</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>For Distribution</em>'.
+ * @see FCM.InteractionComponent#isForDistribution()
+ * @see #getInteractionComponent()
+ * @generated
+ */
+ EAttribute getInteractionComponent_ForDistribution();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.InteractionComponent#getConnectionPattern <em>Connection Pattern</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Connection Pattern</em>'.
+ * @see FCM.InteractionComponent#getConnectionPattern()
+ * @see #getInteractionComponent()
+ * @generated
+ */
+ EReference getInteractionComponent_ConnectionPattern();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.InteractionComponent#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.InteractionComponent#getBase_Class()
+ * @see #getInteractionComponent()
+ * @generated
+ */
+ EReference getInteractionComponent_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.Connector <em>Connector</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Connector</em>'.
+ * @see FCM.Connector
+ * @generated
+ */
+ EClass getConnector();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Connector#getBase_Connector <em>Base Connector</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Connector</em>'.
+ * @see FCM.Connector#getBase_Connector()
+ * @see #getConnector()
+ * @generated
+ */
+ EReference getConnector_Base_Connector();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Connector#getIc <em>Ic</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Ic</em>'.
+ * @see FCM.Connector#getIc()
+ * @see #getConnector()
+ * @generated
+ */
+ EReference getConnector_Ic();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Connector#getBase_Property <em>Base Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Property</em>'.
+ * @see FCM.Connector#getBase_Property()
+ * @see #getConnector()
+ * @generated
+ */
+ EReference getConnector_Base_Property();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ConfigurationProperty <em>Configuration Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Configuration Property</em>'.
+ * @see FCM.ConfigurationProperty
+ * @generated
+ */
+ EClass getConfigurationProperty();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ConfigurationProperty#getBase_Property <em>Base Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Property</em>'.
+ * @see FCM.ConfigurationProperty#getBase_Property()
+ * @see #getConfigurationProperty()
+ * @generated
+ */
+ EReference getConfigurationProperty_Base_Property();
+
+ /**
+ * Returns the meta object for class '{@link FCM.DeploymentPlan <em>Deployment Plan</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Deployment Plan</em>'.
+ * @see FCM.DeploymentPlan
+ * @generated
+ */
+ EClass getDeploymentPlan();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.DeploymentPlan#getMainInstance <em>Main Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Main Instance</em>'.
+ * @see FCM.DeploymentPlan#getMainInstance()
+ * @see #getDeploymentPlan()
+ * @generated
+ */
+ EReference getDeploymentPlan_MainInstance();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.DeploymentPlan#getBase_Package <em>Base Package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Package</em>'.
+ * @see FCM.DeploymentPlan#getBase_Package()
+ * @see #getDeploymentPlan()
+ * @generated
+ */
+ EReference getDeploymentPlan_Base_Package();
+
+ /**
+ * Returns the meta object for class '{@link FCM.DerivedElement <em>Derived Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Derived Element</em>'.
+ * @see FCM.DerivedElement
+ * @generated
+ */
+ EClass getDerivedElement();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.DerivedElement#getBase_Element <em>Base Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Element</em>'.
+ * @see FCM.DerivedElement#getBase_Element()
+ * @see #getDerivedElement()
+ * @generated
+ */
+ EReference getDerivedElement_Base_Element();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.DerivedElement#getSource <em>Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Source</em>'.
+ * @see FCM.DerivedElement#getSource()
+ * @see #getDerivedElement()
+ * @generated
+ */
+ EReference getDerivedElement_Source();
+
+ /**
+ * Returns the meta object for class '{@link FCM.CppLibrary <em>Cpp Library</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Cpp Library</em>'.
+ * @see FCM.CppLibrary
+ * @generated
+ */
+ EClass getCppLibrary();
+
+ /**
+ * Returns the meta object for the attribute list '{@link FCM.CppLibrary#getMacros <em>Macros</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Macros</em>'.
+ * @see FCM.CppLibrary#getMacros()
+ * @see #getCppLibrary()
+ * @generated
+ */
+ EAttribute getCppLibrary_Macros();
+
+ /**
+ * Returns the meta object for the attribute list '{@link FCM.CppLibrary#getLibs <em>Libs</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Libs</em>'.
+ * @see FCM.CppLibrary#getLibs()
+ * @see #getCppLibrary()
+ * @generated
+ */
+ EAttribute getCppLibrary_Libs();
+
+ /**
+ * Returns the meta object for the attribute list '{@link FCM.CppLibrary#getLibPaths <em>Lib Paths</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Lib Paths</em>'.
+ * @see FCM.CppLibrary#getLibPaths()
+ * @see #getCppLibrary()
+ * @generated
+ */
+ EAttribute getCppLibrary_LibPaths();
+
+ /**
+ * Returns the meta object for the attribute list '{@link FCM.CppLibrary#getIncludePaths <em>Include Paths</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Include Paths</em>'.
+ * @see FCM.CppLibrary#getIncludePaths()
+ * @see #getCppLibrary()
+ * @generated
+ */
+ EAttribute getCppLibrary_IncludePaths();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ExternalLibrary <em>External Library</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>External Library</em>'.
+ * @see FCM.ExternalLibrary
+ * @generated
+ */
+ EClass getExternalLibrary();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ExternalLibrary#getBase_Package <em>Base Package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Package</em>'.
+ * @see FCM.ExternalLibrary#getBase_Package()
+ * @see #getExternalLibrary()
+ * @generated
+ */
+ EReference getExternalLibrary_Base_Package();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ImplementationGroup <em>Implementation Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Implementation Group</em>'.
+ * @see FCM.ImplementationGroup
+ * @generated
+ */
+ EClass getImplementationGroup();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ImplementationGroup#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.ImplementationGroup#getBase_Class()
+ * @see #getImplementationGroup()
+ * @generated
+ */
+ EReference getImplementationGroup_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.RuleApplication <em>Rule Application</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Rule Application</em>'.
+ * @see FCM.RuleApplication
+ * @generated
+ */
+ EClass getRuleApplication();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.RuleApplication#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.RuleApplication#getBase_Class()
+ * @see #getRuleApplication()
+ * @generated
+ */
+ EReference getRuleApplication_Base_Class();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.RuleApplication#getContainerRule <em>Container Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Container Rule</em>'.
+ * @see FCM.RuleApplication#getContainerRule()
+ * @see #getRuleApplication()
+ * @generated
+ */
+ EReference getRuleApplication_ContainerRule();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.RuleApplication#getBase_Package <em>Base Package</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Package</em>'.
+ * @see FCM.RuleApplication#getBase_Package()
+ * @see #getRuleApplication()
+ * @generated
+ */
+ EReference getRuleApplication_Base_Package();
+
+ /**
+ * Returns the meta object for class '{@link FCM.JavaLibrary <em>Java Library</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Java Library</em>'.
+ * @see FCM.JavaLibrary
+ * @generated
+ */
+ EClass getJavaLibrary();
+
+ /**
+ * Returns the meta object for the attribute list '{@link FCM.JavaLibrary#getClassPath <em>Class Path</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute list '<em>Class Path</em>'.
+ * @see FCM.JavaLibrary#getClassPath()
+ * @see #getJavaLibrary()
+ * @generated
+ */
+ EAttribute getJavaLibrary_ClassPath();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ImplementationProperties <em>Implementation Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Implementation Properties</em>'.
+ * @see FCM.ImplementationProperties
+ * @generated
+ */
+ EClass getImplementationProperties();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.ImplementationProperties#getSizeRAM <em>Size RAM</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Size RAM</em>'.
+ * @see FCM.ImplementationProperties#getSizeRAM()
+ * @see #getImplementationProperties()
+ * @generated
+ */
+ EAttribute getImplementationProperties_SizeRAM();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.ImplementationProperties#getSupportedOS <em>Supported OS</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Supported OS</em>'.
+ * @see FCM.ImplementationProperties#getSupportedOS()
+ * @see #getImplementationProperties()
+ * @generated
+ */
+ EReference getImplementationProperties_SupportedOS();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.ImplementationProperties#getArch <em>Arch</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Arch</em>'.
+ * @see FCM.ImplementationProperties#getArch()
+ * @see #getImplementationProperties()
+ * @generated
+ */
+ EReference getImplementationProperties_Arch();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ImplementationProperties#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.ImplementationProperties#getBase_Class()
+ * @see #getImplementationProperties()
+ * @generated
+ */
+ EReference getImplementationProperties_Base_Class();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.ImplementationProperties#getSizeROM <em>Size ROM</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Size ROM</em>'.
+ * @see FCM.ImplementationProperties#getSizeROM()
+ * @see #getImplementationProperties()
+ * @generated
+ */
+ EAttribute getImplementationProperties_SizeROM();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ImplementationProperties#getSupportedTargetArch <em>Supported Target Arch</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Supported Target Arch</em>'.
+ * @see FCM.ImplementationProperties#getSupportedTargetArch()
+ * @see #getImplementationProperties()
+ * @generated
+ */
+ EReference getImplementationProperties_SupportedTargetArch();
+
+ /**
+ * Returns the meta object for class '{@link FCM.OperatingSystem <em>Operating System</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Operating System</em>'.
+ * @see FCM.OperatingSystem
+ * @generated
+ */
+ EClass getOperatingSystem();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.OperatingSystem#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.OperatingSystem#getBase_Class()
+ * @see #getOperatingSystem()
+ * @generated
+ */
+ EReference getOperatingSystem_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.TargetArchitecture <em>Target Architecture</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Target Architecture</em>'.
+ * @see FCM.TargetArchitecture
+ * @generated
+ */
+ EClass getTargetArchitecture();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.TargetArchitecture#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.TargetArchitecture#getBase_Class()
+ * @see #getTargetArchitecture()
+ * @generated
+ */
+ EReference getTargetArchitecture_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.Target <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Target</em>'.
+ * @see FCM.Target
+ * @generated
+ */
+ EClass getTarget();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Target#getTargetArch <em>Target Arch</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Target Arch</em>'.
+ * @see FCM.Target#getTargetArch()
+ * @see #getTarget()
+ * @generated
+ */
+ EReference getTarget_TargetArch();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.Target#getOptions <em>Options</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Options</em>'.
+ * @see FCM.Target#getOptions()
+ * @see #getTarget()
+ * @generated
+ */
+ EReference getTarget_Options();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Target#getBase_Node <em>Base Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Node</em>'.
+ * @see FCM.Target#getBase_Node()
+ * @see #getTarget()
+ * @generated
+ */
+ EReference getTarget_Base_Node();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Target#getUsedOS <em>Used OS</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Used OS</em>'.
+ * @see FCM.Target#getUsedOS()
+ * @see #getTarget()
+ * @generated
+ */
+ EReference getTarget_UsedOS();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.Target#getAvailRAM <em>Avail RAM</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Avail RAM</em>'.
+ * @see FCM.Target#getAvailRAM()
+ * @see #getTarget()
+ * @generated
+ */
+ EAttribute getTarget_AvailRAM();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.Target#getAvailROM <em>Avail ROM</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Avail ROM</em>'.
+ * @see FCM.Target#getAvailROM()
+ * @see #getTarget()
+ * @generated
+ */
+ EAttribute getTarget_AvailROM();
+
+ /**
+ * Returns the meta object for class '{@link FCM.Part <em>Part</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Part</em>'.
+ * @see FCM.Part
+ * @generated
+ */
+ EClass getPart();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Part#getBase_Property <em>Base Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Property</em>'.
+ * @see FCM.Part#getBase_Property()
+ * @see #getPart()
+ * @generated
+ */
+ EReference getPart_Base_Property();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.Part#getColocateWithPort <em>Colocate With Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Colocate With Port</em>'.
+ * @see FCM.Part#getColocateWithPort()
+ * @see #getPart()
+ * @generated
+ */
+ EReference getPart_ColocateWithPort();
+
+ /**
+ * Returns the meta object for class '{@link FCM.CopyAttributeValue <em>Copy Attribute Value</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Copy Attribute Value</em>'.
+ * @see FCM.CopyAttributeValue
+ * @generated
+ */
+ EClass getCopyAttributeValue();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.CopyAttributeValue#getSource <em>Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Source</em>'.
+ * @see FCM.CopyAttributeValue#getSource()
+ * @see #getCopyAttributeValue()
+ * @generated
+ */
+ EReference getCopyAttributeValue_Source();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.CopyAttributeValue#getBase_Property <em>Base Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Property</em>'.
+ * @see FCM.CopyAttributeValue#getBase_Property()
+ * @see #getCopyAttributeValue()
+ * @generated
+ */
+ EReference getCopyAttributeValue_Base_Property();
+
+ /**
+ * Returns the meta object for class '{@link FCM.AutoIndex <em>Auto Index</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Auto Index</em>'.
+ * @see FCM.AutoIndex
+ * @generated
+ */
+ EClass getAutoIndex();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.AutoIndex#getBase_Property <em>Base Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Property</em>'.
+ * @see FCM.AutoIndex#getBase_Property()
+ * @see #getAutoIndex()
+ * @generated
+ */
+ EReference getAutoIndex_Base_Property();
+
+ /**
+ * Returns the meta object for class '{@link FCM.AutoIndexPerNode <em>Auto Index Per Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Auto Index Per Node</em>'.
+ * @see FCM.AutoIndexPerNode
+ * @generated
+ */
+ EClass getAutoIndexPerNode();
+
+ /**
+ * Returns the meta object for class '{@link FCM.InitPrecedence <em>Init Precedence</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Init Precedence</em>'.
+ * @see FCM.InitPrecedence
+ * @generated
+ */
+ EClass getInitPrecedence();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.InitPrecedence#getInvokeAfter <em>Invoke After</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Invoke After</em>'.
+ * @see FCM.InitPrecedence#getInvokeAfter()
+ * @see #getInitPrecedence()
+ * @generated
+ */
+ EReference getInitPrecedence_InvokeAfter();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.InitPrecedence#getInvokeBefore <em>Invoke Before</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Invoke Before</em>'.
+ * @see FCM.InitPrecedence#getInvokeBefore()
+ * @see #getInitPrecedence()
+ * @generated
+ */
+ EReference getInitPrecedence_InvokeBefore();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.InitPrecedence#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.InitPrecedence#getBase_Class()
+ * @see #getInitPrecedence()
+ * @generated
+ */
+ EReference getInitPrecedence_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ConnectorConfiguration <em>Connector Configuration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Connector Configuration</em>'.
+ * @see FCM.ConnectorConfiguration
+ * @generated
+ */
+ EClass getConnectorConfiguration();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ConnectorConfiguration#getBase_Slot <em>Base Slot</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Slot</em>'.
+ * @see FCM.ConnectorConfiguration#getBase_Slot()
+ * @see #getConnectorConfiguration()
+ * @generated
+ */
+ EReference getConnectorConfiguration_Base_Slot();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ConnectorConfiguration#getConnector <em>Connector</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Connector</em>'.
+ * @see FCM.ConnectorConfiguration#getConnector()
+ * @see #getConnectorConfiguration()
+ * @generated
+ */
+ EReference getConnectorConfiguration_Connector();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ExtendedSignature <em>Extended Signature</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Extended Signature</em>'.
+ * @see FCM.ExtendedSignature
+ * @generated
+ */
+ EClass getExtendedSignature();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ExtendedSignature#getBase_TemplateSignature <em>Base Template Signature</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Template Signature</em>'.
+ * @see FCM.ExtendedSignature#getBase_TemplateSignature()
+ * @see #getExtendedSignature()
+ * @generated
+ */
+ EReference getExtendedSignature_Base_TemplateSignature();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.ExtendedSignature#getBaseSignature <em>Base Signature</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Signature</em>'.
+ * @see FCM.ExtendedSignature#getBaseSignature()
+ * @see #getExtendedSignature()
+ * @generated
+ */
+ EReference getExtendedSignature_BaseSignature();
+
+ /**
+ * Returns the meta object for class '{@link FCM.ContainerPort <em>Container Port</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Container Port</em>'.
+ * @see FCM.ContainerPort
+ * @generated
+ */
+ EClass getContainerPort();
+
+ /**
+ * Returns the meta object for class '{@link FCM.UseInstanceConfigurator <em>Use Instance Configurator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Use Instance Configurator</em>'.
+ * @see FCM.UseInstanceConfigurator
+ * @generated
+ */
+ EClass getUseInstanceConfigurator();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.UseInstanceConfigurator#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.UseInstanceConfigurator#getBase_Class()
+ * @see #getUseInstanceConfigurator()
+ * @generated
+ */
+ EReference getUseInstanceConfigurator_Base_Class();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.UseInstanceConfigurator#getConfigurator <em>Configurator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Configurator</em>'.
+ * @see FCM.UseInstanceConfigurator#getConfigurator()
+ * @see #getUseInstanceConfigurator()
+ * @generated
+ */
+ EReference getUseInstanceConfigurator_Configurator();
+
+ /**
+ * Returns the meta object for class '{@link FCM.InstanceConfigurator <em>Instance Configurator</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Instance Configurator</em>'.
+ * @see FCM.InstanceConfigurator
+ * @generated
+ */
+ EClass getInstanceConfigurator();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.InstanceConfigurator#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.InstanceConfigurator#getBase_Class()
+ * @see #getInstanceConfigurator()
+ * @generated
+ */
+ EReference getInstanceConfigurator_Base_Class();
+
+ /**
+ * Returns the meta object for class '{@link FCM.Configuration <em>Configuration</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Configuration</em>'.
+ * @see FCM.Configuration
+ * @generated
+ */
+ EClass getConfiguration();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Configuration#getBase_Class <em>Base Class</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Class</em>'.
+ * @see FCM.Configuration#getBase_Class()
+ * @see #getConfiguration()
+ * @generated
+ */
+ EReference getConfiguration_Base_Class();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.Configuration#getConfigOptions <em>Config Options</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Config Options</em>'.
+ * @see FCM.Configuration#getConfigOptions()
+ * @see #getConfiguration()
+ * @generated
+ */
+ EReference getConfiguration_ConfigOptions();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.Configuration#getDeploymentPlan <em>Deployment Plan</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Deployment Plan</em>'.
+ * @see FCM.Configuration#getDeploymentPlan()
+ * @see #getConfiguration()
+ * @generated
+ */
+ EReference getConfiguration_DeploymentPlan();
+
+ /**
+ * Returns the meta object for class '{@link FCM.InterceptionRule <em>Interception Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Interception Rule</em>'.
+ * @see FCM.InterceptionRule
+ * @generated
+ */
+ EClass getInterceptionRule();
+
+ /**
+ * Returns the meta object for the attribute '{@link FCM.InterceptionRule#getInterceptionKind <em>Interception Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Interception Kind</em>'.
+ * @see FCM.InterceptionRule#getInterceptionKind()
+ * @see #getInterceptionRule()
+ * @generated
+ */
+ EAttribute getInterceptionRule_InterceptionKind();
+
+ /**
+ * Returns the meta object for the reference list '{@link FCM.InterceptionRule#getInterceptionSet <em>Interception Set</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Interception Set</em>'.
+ * @see FCM.InterceptionRule#getInterceptionSet()
+ * @see #getInterceptionRule()
+ * @generated
+ */
+ EReference getInterceptionRule_InterceptionSet();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.InterceptionRule#getBase_Property <em>Base Property</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Property</em>'.
+ * @see FCM.InterceptionRule#getBase_Property()
+ * @see #getInterceptionRule()
+ * @generated
+ */
+ EReference getInterceptionRule_Base_Property();
+
+ /**
+ * Returns the meta object for the reference '{@link FCM.InterceptionRule#getBase_Operation <em>Base Operation</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Operation</em>'.
+ * @see FCM.InterceptionRule#getBase_Operation()
+ * @see #getInterceptionRule()
+ * @generated
+ */
+ EReference getInterceptionRule_Base_Operation();
+
+ /**
+ * Returns the meta object for enum '{@link FCM.TemplateKind <em>Template Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Template Kind</em>'.
+ * @see FCM.TemplateKind
+ * @generated
+ */
+ EEnum getTemplateKind();
+
+ /**
+ * Returns the meta object for enum '{@link FCM.ActualChoice <em>Actual Choice</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Actual Choice</em>'.
+ * @see FCM.ActualChoice
+ * @generated
+ */
+ EEnum getActualChoice();
+
+ /**
+ * Returns the meta object for enum '{@link FCM.ContainerRuleKind <em>Container Rule Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Container Rule Kind</em>'.
+ * @see FCM.ContainerRuleKind
+ * @generated
+ */
+ EEnum getContainerRuleKind();
+
+ /**
+ * Returns the meta object for enum '{@link FCM.InterceptionKind <em>Interception Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for enum '<em>Interception Kind</em>'.
+ * @see FCM.InterceptionKind
+ * @generated
+ */
+ EEnum getInterceptionKind();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ FCMFactory getFCMFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link FCM.impl.TemplateImpl <em>Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.TemplateImpl
+ * @see FCM.impl.FCMPackageImpl#getTemplate()
+ * @generated
+ */
+ EClass TEMPLATE = eINSTANCE.getTemplate();
+
+ /**
+ * The meta object literal for the '<em><b>Template Params</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TEMPLATE__TEMPLATE_PARAMS = eINSTANCE.getTemplate_TemplateParams();
+
+ /**
+ * The meta object literal for the '<em><b>Base Element</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TEMPLATE__BASE_ELEMENT = eINSTANCE.getTemplate_Base_Element();
+
+ /**
+ * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TEMPLATE__KIND = eINSTANCE.getTemplate_Kind();
+
+ /**
+ * The meta object literal for the '<em><b>Actual Choice</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TEMPLATE__ACTUAL_CHOICE = eINSTANCE.getTemplate_ActualChoice();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ContainerRuleImpl <em>Container Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ContainerRuleImpl
+ * @see FCM.impl.FCMPackageImpl#getContainerRule()
+ * @generated
+ */
+ EClass CONTAINER_RULE = eINSTANCE.getContainerRule();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONTAINER_RULE__BASE_CLASS = eINSTANCE.getContainerRule_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>For Config</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONTAINER_RULE__FOR_CONFIG = eINSTANCE.getContainerRule_ForConfig();
+
+ /**
+ * The meta object literal for the '<em><b>Kind</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CONTAINER_RULE__KIND = eINSTANCE.getContainerRule_Kind();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.PortImpl <em>Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.PortImpl
+ * @see FCM.impl.FCMPackageImpl#getPort()
+ * @generated
+ */
+ EClass PORT = eINSTANCE.getPort();
+
+ /**
+ * The meta object literal for the '<em><b>Base Port</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT__BASE_PORT = eINSTANCE.getPort_Base_Port();
+
+ /**
+ * The meta object literal for the '<em><b>Kind</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT__KIND = eINSTANCE.getPort_Kind();
+
+ /**
+ * The meta object literal for the '<em><b>Provided Interface</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT__PROVIDED_INTERFACE = eINSTANCE.getPort_ProvidedInterface();
+
+ /**
+ * The meta object literal for the '<em><b>Required Interface</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT__REQUIRED_INTERFACE = eINSTANCE.getPort_RequiredInterface();
+
+ /**
+ * The meta object literal for the '<em><b>Conjugated</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PORT__CONJUGATED = eINSTANCE.getPort_Conjugated();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ConfigurableElementInstanceImpl <em>Configurable Element Instance</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConfigurableElementInstanceImpl
+ * @see FCM.impl.FCMPackageImpl#getConfigurableElementInstance()
+ * @generated
+ */
+ EClass CONFIGURABLE_ELEMENT_INSTANCE = eINSTANCE.getConfigurableElementInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Configuration</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION = eINSTANCE.getConfigurableElementInstance_Configuration();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.PortKindImpl <em>Port Kind</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.PortKindImpl
+ * @see FCM.impl.FCMPackageImpl#getPortKind()
+ * @generated
+ */
+ EClass PORT_KIND = eINSTANCE.getPortKind();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_KIND__BASE_CLASS = eINSTANCE.getPortKind_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Provided Interface</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_KIND__PROVIDED_INTERFACE = eINSTANCE.getPortKind_ProvidedInterface();
+
+ /**
+ * The meta object literal for the '<em><b>Required Interface</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PORT_KIND__REQUIRED_INTERFACE = eINSTANCE.getPortKind_RequiredInterface();
+
+ /**
+ * The meta object literal for the '<em><b>Extended Port</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute PORT_KIND__EXTENDED_PORT = eINSTANCE.getPortKind_ExtendedPort();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.CompImplTemplateImpl <em>Comp Impl Template</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.CompImplTemplateImpl
+ * @see FCM.impl.FCMPackageImpl#getCompImplTemplate()
+ * @generated
+ */
+ EClass COMP_IMPL_TEMPLATE = eINSTANCE.getCompImplTemplate();
+
+ /**
+ * The meta object literal for the '<em><b>Template Defs</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute COMP_IMPL_TEMPLATE__TEMPLATE_DEFS = eINSTANCE.getCompImplTemplate_TemplateDefs();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COMP_IMPL_TEMPLATE__BASE_CLASS = eINSTANCE.getCompImplTemplate_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ConfigOptionImpl <em>Config Option</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConfigOptionImpl
+ * @see FCM.impl.FCMPackageImpl#getConfigOption()
+ * @generated
+ */
+ EClass CONFIG_OPTION = eINSTANCE.getConfigOption();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONFIG_OPTION__BASE_CLASS = eINSTANCE.getConfigOption_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.SingletonImpl <em>Singleton</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.SingletonImpl
+ * @see FCM.impl.FCMPackageImpl#getSingleton()
+ * @generated
+ */
+ EClass SINGLETON = eINSTANCE.getSingleton();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SINGLETON__BASE_CLASS = eINSTANCE.getSingleton_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.InteractionComponentImpl <em>Interaction Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.InteractionComponentImpl
+ * @see FCM.impl.FCMPackageImpl#getInteractionComponent()
+ * @generated
+ */
+ EClass INTERACTION_COMPONENT = eINSTANCE.getInteractionComponent();
+
+ /**
+ * The meta object literal for the '<em><b>For Distribution</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTERACTION_COMPONENT__FOR_DISTRIBUTION = eINSTANCE.getInteractionComponent_ForDistribution();
+
+ /**
+ * The meta object literal for the '<em><b>Connection Pattern</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERACTION_COMPONENT__CONNECTION_PATTERN = eINSTANCE.getInteractionComponent_ConnectionPattern();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERACTION_COMPONENT__BASE_CLASS = eINSTANCE.getInteractionComponent_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ConnectorImpl <em>Connector</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConnectorImpl
+ * @see FCM.impl.FCMPackageImpl#getConnector()
+ * @generated
+ */
+ EClass CONNECTOR = eINSTANCE.getConnector();
+
+ /**
+ * The meta object literal for the '<em><b>Base Connector</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTOR__BASE_CONNECTOR = eINSTANCE.getConnector_Base_Connector();
+
+ /**
+ * The meta object literal for the '<em><b>Ic</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTOR__IC = eINSTANCE.getConnector_Ic();
+
+ /**
+ * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTOR__BASE_PROPERTY = eINSTANCE.getConnector_Base_Property();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ConfigurationPropertyImpl <em>Configuration Property</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConfigurationPropertyImpl
+ * @see FCM.impl.FCMPackageImpl#getConfigurationProperty()
+ * @generated
+ */
+ EClass CONFIGURATION_PROPERTY = eINSTANCE.getConfigurationProperty();
+
+ /**
+ * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONFIGURATION_PROPERTY__BASE_PROPERTY = eINSTANCE.getConfigurationProperty_Base_Property();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.DeploymentPlanImpl <em>Deployment Plan</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.DeploymentPlanImpl
+ * @see FCM.impl.FCMPackageImpl#getDeploymentPlan()
+ * @generated
+ */
+ EClass DEPLOYMENT_PLAN = eINSTANCE.getDeploymentPlan();
+
+ /**
+ * The meta object literal for the '<em><b>Main Instance</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DEPLOYMENT_PLAN__MAIN_INSTANCE = eINSTANCE.getDeploymentPlan_MainInstance();
+
+ /**
+ * The meta object literal for the '<em><b>Base Package</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DEPLOYMENT_PLAN__BASE_PACKAGE = eINSTANCE.getDeploymentPlan_Base_Package();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.DerivedElementImpl <em>Derived Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.DerivedElementImpl
+ * @see FCM.impl.FCMPackageImpl#getDerivedElement()
+ * @generated
+ */
+ EClass DERIVED_ELEMENT = eINSTANCE.getDerivedElement();
+
+ /**
+ * The meta object literal for the '<em><b>Base Element</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DERIVED_ELEMENT__BASE_ELEMENT = eINSTANCE.getDerivedElement_Base_Element();
+
+ /**
+ * The meta object literal for the '<em><b>Source</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DERIVED_ELEMENT__SOURCE = eINSTANCE.getDerivedElement_Source();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.CppLibraryImpl <em>Cpp Library</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.CppLibraryImpl
+ * @see FCM.impl.FCMPackageImpl#getCppLibrary()
+ * @generated
+ */
+ EClass CPP_LIBRARY = eINSTANCE.getCppLibrary();
+
+ /**
+ * The meta object literal for the '<em><b>Macros</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_LIBRARY__MACROS = eINSTANCE.getCppLibrary_Macros();
+
+ /**
+ * The meta object literal for the '<em><b>Libs</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_LIBRARY__LIBS = eINSTANCE.getCppLibrary_Libs();
+
+ /**
+ * The meta object literal for the '<em><b>Lib Paths</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_LIBRARY__LIB_PATHS = eINSTANCE.getCppLibrary_LibPaths();
+
+ /**
+ * The meta object literal for the '<em><b>Include Paths</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute CPP_LIBRARY__INCLUDE_PATHS = eINSTANCE.getCppLibrary_IncludePaths();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ExternalLibraryImpl <em>External Library</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ExternalLibraryImpl
+ * @see FCM.impl.FCMPackageImpl#getExternalLibrary()
+ * @generated
+ */
+ EClass EXTERNAL_LIBRARY = eINSTANCE.getExternalLibrary();
+
+ /**
+ * The meta object literal for the '<em><b>Base Package</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTERNAL_LIBRARY__BASE_PACKAGE = eINSTANCE.getExternalLibrary_Base_Package();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ImplementationGroupImpl <em>Implementation Group</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ImplementationGroupImpl
+ * @see FCM.impl.FCMPackageImpl#getImplementationGroup()
+ * @generated
+ */
+ EClass IMPLEMENTATION_GROUP = eINSTANCE.getImplementationGroup();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IMPLEMENTATION_GROUP__BASE_CLASS = eINSTANCE.getImplementationGroup_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.RuleApplicationImpl <em>Rule Application</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.RuleApplicationImpl
+ * @see FCM.impl.FCMPackageImpl#getRuleApplication()
+ * @generated
+ */
+ EClass RULE_APPLICATION = eINSTANCE.getRuleApplication();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference RULE_APPLICATION__BASE_CLASS = eINSTANCE.getRuleApplication_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Container Rule</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference RULE_APPLICATION__CONTAINER_RULE = eINSTANCE.getRuleApplication_ContainerRule();
+
+ /**
+ * The meta object literal for the '<em><b>Base Package</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference RULE_APPLICATION__BASE_PACKAGE = eINSTANCE.getRuleApplication_Base_Package();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.JavaLibraryImpl <em>Java Library</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.JavaLibraryImpl
+ * @see FCM.impl.FCMPackageImpl#getJavaLibrary()
+ * @generated
+ */
+ EClass JAVA_LIBRARY = eINSTANCE.getJavaLibrary();
+
+ /**
+ * The meta object literal for the '<em><b>Class Path</b></em>' attribute list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute JAVA_LIBRARY__CLASS_PATH = eINSTANCE.getJavaLibrary_ClassPath();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ImplementationPropertiesImpl <em>Implementation Properties</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ImplementationPropertiesImpl
+ * @see FCM.impl.FCMPackageImpl#getImplementationProperties()
+ * @generated
+ */
+ EClass IMPLEMENTATION_PROPERTIES = eINSTANCE.getImplementationProperties();
+
+ /**
+ * The meta object literal for the '<em><b>Size RAM</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute IMPLEMENTATION_PROPERTIES__SIZE_RAM = eINSTANCE.getImplementationProperties_SizeRAM();
+
+ /**
+ * The meta object literal for the '<em><b>Supported OS</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IMPLEMENTATION_PROPERTIES__SUPPORTED_OS = eINSTANCE.getImplementationProperties_SupportedOS();
+
+ /**
+ * The meta object literal for the '<em><b>Arch</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IMPLEMENTATION_PROPERTIES__ARCH = eINSTANCE.getImplementationProperties_Arch();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IMPLEMENTATION_PROPERTIES__BASE_CLASS = eINSTANCE.getImplementationProperties_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Size ROM</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute IMPLEMENTATION_PROPERTIES__SIZE_ROM = eINSTANCE.getImplementationProperties_SizeROM();
+
+ /**
+ * The meta object literal for the '<em><b>Supported Target Arch</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH = eINSTANCE.getImplementationProperties_SupportedTargetArch();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.OperatingSystemImpl <em>Operating System</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.OperatingSystemImpl
+ * @see FCM.impl.FCMPackageImpl#getOperatingSystem()
+ * @generated
+ */
+ EClass OPERATING_SYSTEM = eINSTANCE.getOperatingSystem();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference OPERATING_SYSTEM__BASE_CLASS = eINSTANCE.getOperatingSystem_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.TargetArchitectureImpl <em>Target Architecture</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.TargetArchitectureImpl
+ * @see FCM.impl.FCMPackageImpl#getTargetArchitecture()
+ * @generated
+ */
+ EClass TARGET_ARCHITECTURE = eINSTANCE.getTargetArchitecture();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TARGET_ARCHITECTURE__BASE_CLASS = eINSTANCE.getTargetArchitecture_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.TargetImpl <em>Target</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.TargetImpl
+ * @see FCM.impl.FCMPackageImpl#getTarget()
+ * @generated
+ */
+ EClass TARGET = eINSTANCE.getTarget();
+
+ /**
+ * The meta object literal for the '<em><b>Target Arch</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TARGET__TARGET_ARCH = eINSTANCE.getTarget_TargetArch();
+
+ /**
+ * The meta object literal for the '<em><b>Options</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TARGET__OPTIONS = eINSTANCE.getTarget_Options();
+
+ /**
+ * The meta object literal for the '<em><b>Base Node</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TARGET__BASE_NODE = eINSTANCE.getTarget_Base_Node();
+
+ /**
+ * The meta object literal for the '<em><b>Used OS</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference TARGET__USED_OS = eINSTANCE.getTarget_UsedOS();
+
+ /**
+ * The meta object literal for the '<em><b>Avail RAM</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TARGET__AVAIL_RAM = eINSTANCE.getTarget_AvailRAM();
+
+ /**
+ * The meta object literal for the '<em><b>Avail ROM</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute TARGET__AVAIL_ROM = eINSTANCE.getTarget_AvailROM();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.PartImpl <em>Part</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.PartImpl
+ * @see FCM.impl.FCMPackageImpl#getPart()
+ * @generated
+ */
+ EClass PART = eINSTANCE.getPart();
+
+ /**
+ * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PART__BASE_PROPERTY = eINSTANCE.getPart_Base_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Colocate With Port</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference PART__COLOCATE_WITH_PORT = eINSTANCE.getPart_ColocateWithPort();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.CopyAttributeValueImpl <em>Copy Attribute Value</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.CopyAttributeValueImpl
+ * @see FCM.impl.FCMPackageImpl#getCopyAttributeValue()
+ * @generated
+ */
+ EClass COPY_ATTRIBUTE_VALUE = eINSTANCE.getCopyAttributeValue();
+
+ /**
+ * The meta object literal for the '<em><b>Source</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COPY_ATTRIBUTE_VALUE__SOURCE = eINSTANCE.getCopyAttributeValue_Source();
+
+ /**
+ * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference COPY_ATTRIBUTE_VALUE__BASE_PROPERTY = eINSTANCE.getCopyAttributeValue_Base_Property();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.AutoIndexImpl <em>Auto Index</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.AutoIndexImpl
+ * @see FCM.impl.FCMPackageImpl#getAutoIndex()
+ * @generated
+ */
+ EClass AUTO_INDEX = eINSTANCE.getAutoIndex();
+
+ /**
+ * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference AUTO_INDEX__BASE_PROPERTY = eINSTANCE.getAutoIndex_Base_Property();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.AutoIndexPerNodeImpl <em>Auto Index Per Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.AutoIndexPerNodeImpl
+ * @see FCM.impl.FCMPackageImpl#getAutoIndexPerNode()
+ * @generated
+ */
+ EClass AUTO_INDEX_PER_NODE = eINSTANCE.getAutoIndexPerNode();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.InitPrecedenceImpl <em>Init Precedence</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.InitPrecedenceImpl
+ * @see FCM.impl.FCMPackageImpl#getInitPrecedence()
+ * @generated
+ */
+ EClass INIT_PRECEDENCE = eINSTANCE.getInitPrecedence();
+
+ /**
+ * The meta object literal for the '<em><b>Invoke After</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INIT_PRECEDENCE__INVOKE_AFTER = eINSTANCE.getInitPrecedence_InvokeAfter();
+
+ /**
+ * The meta object literal for the '<em><b>Invoke Before</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INIT_PRECEDENCE__INVOKE_BEFORE = eINSTANCE.getInitPrecedence_InvokeBefore();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INIT_PRECEDENCE__BASE_CLASS = eINSTANCE.getInitPrecedence_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ConnectorConfigurationImpl <em>Connector Configuration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConnectorConfigurationImpl
+ * @see FCM.impl.FCMPackageImpl#getConnectorConfiguration()
+ * @generated
+ */
+ EClass CONNECTOR_CONFIGURATION = eINSTANCE.getConnectorConfiguration();
+
+ /**
+ * The meta object literal for the '<em><b>Base Slot</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTOR_CONFIGURATION__BASE_SLOT = eINSTANCE.getConnectorConfiguration_Base_Slot();
+
+ /**
+ * The meta object literal for the '<em><b>Connector</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONNECTOR_CONFIGURATION__CONNECTOR = eINSTANCE.getConnectorConfiguration_Connector();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ExtendedSignatureImpl <em>Extended Signature</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ExtendedSignatureImpl
+ * @see FCM.impl.FCMPackageImpl#getExtendedSignature()
+ * @generated
+ */
+ EClass EXTENDED_SIGNATURE = eINSTANCE.getExtendedSignature();
+
+ /**
+ * The meta object literal for the '<em><b>Base Template Signature</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE = eINSTANCE.getExtendedSignature_Base_TemplateSignature();
+
+ /**
+ * The meta object literal for the '<em><b>Base Signature</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EXTENDED_SIGNATURE__BASE_SIGNATURE = eINSTANCE.getExtendedSignature_BaseSignature();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ContainerPortImpl <em>Container Port</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ContainerPortImpl
+ * @see FCM.impl.FCMPackageImpl#getContainerPort()
+ * @generated
+ */
+ EClass CONTAINER_PORT = eINSTANCE.getContainerPort();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.UseInstanceConfiguratorImpl <em>Use Instance Configurator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.UseInstanceConfiguratorImpl
+ * @see FCM.impl.FCMPackageImpl#getUseInstanceConfigurator()
+ * @generated
+ */
+ EClass USE_INSTANCE_CONFIGURATOR = eINSTANCE.getUseInstanceConfigurator();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference USE_INSTANCE_CONFIGURATOR__BASE_CLASS = eINSTANCE.getUseInstanceConfigurator_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Configurator</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference USE_INSTANCE_CONFIGURATOR__CONFIGURATOR = eINSTANCE.getUseInstanceConfigurator_Configurator();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.InstanceConfiguratorImpl <em>Instance Configurator</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.InstanceConfiguratorImpl
+ * @see FCM.impl.FCMPackageImpl#getInstanceConfigurator()
+ * @generated
+ */
+ EClass INSTANCE_CONFIGURATOR = eINSTANCE.getInstanceConfigurator();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INSTANCE_CONFIGURATOR__BASE_CLASS = eINSTANCE.getInstanceConfigurator_Base_Class();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.ConfigurationImpl <em>Configuration</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.ConfigurationImpl
+ * @see FCM.impl.FCMPackageImpl#getConfiguration()
+ * @generated
+ */
+ EClass CONFIGURATION = eINSTANCE.getConfiguration();
+
+ /**
+ * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONFIGURATION__BASE_CLASS = eINSTANCE.getConfiguration_Base_Class();
+
+ /**
+ * The meta object literal for the '<em><b>Config Options</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONFIGURATION__CONFIG_OPTIONS = eINSTANCE.getConfiguration_ConfigOptions();
+
+ /**
+ * The meta object literal for the '<em><b>Deployment Plan</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference CONFIGURATION__DEPLOYMENT_PLAN = eINSTANCE.getConfiguration_DeploymentPlan();
+
+ /**
+ * The meta object literal for the '{@link FCM.impl.InterceptionRuleImpl <em>Interception Rule</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.impl.InterceptionRuleImpl
+ * @see FCM.impl.FCMPackageImpl#getInterceptionRule()
+ * @generated
+ */
+ EClass INTERCEPTION_RULE = eINSTANCE.getInterceptionRule();
+
+ /**
+ * The meta object literal for the '<em><b>Interception Kind</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute INTERCEPTION_RULE__INTERCEPTION_KIND = eINSTANCE.getInterceptionRule_InterceptionKind();
+
+ /**
+ * The meta object literal for the '<em><b>Interception Set</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERCEPTION_RULE__INTERCEPTION_SET = eINSTANCE.getInterceptionRule_InterceptionSet();
+
+ /**
+ * The meta object literal for the '<em><b>Base Property</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERCEPTION_RULE__BASE_PROPERTY = eINSTANCE.getInterceptionRule_Base_Property();
+
+ /**
+ * The meta object literal for the '<em><b>Base Operation</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference INTERCEPTION_RULE__BASE_OPERATION = eINSTANCE.getInterceptionRule_Base_Operation();
+
+ /**
+ * The meta object literal for the '{@link FCM.TemplateKind <em>Template Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.TemplateKind
+ * @see FCM.impl.FCMPackageImpl#getTemplateKind()
+ * @generated
+ */
+ EEnum TEMPLATE_KIND = eINSTANCE.getTemplateKind();
+
+ /**
+ * The meta object literal for the '{@link FCM.ActualChoice <em>Actual Choice</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.ActualChoice
+ * @see FCM.impl.FCMPackageImpl#getActualChoice()
+ * @generated
+ */
+ EEnum ACTUAL_CHOICE = eINSTANCE.getActualChoice();
+
+ /**
+ * The meta object literal for the '{@link FCM.ContainerRuleKind <em>Container Rule Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.ContainerRuleKind
+ * @see FCM.impl.FCMPackageImpl#getContainerRuleKind()
+ * @generated
+ */
+ EEnum CONTAINER_RULE_KIND = eINSTANCE.getContainerRuleKind();
+
+ /**
+ * The meta object literal for the '{@link FCM.InterceptionKind <em>Interception Kind</em>}' enum.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see FCM.InterceptionKind
+ * @see FCM.impl.FCMPackageImpl#getInterceptionKind()
+ * @generated
+ */
+ EEnum INTERCEPTION_KIND = eINSTANCE.getInterceptionKind();
+
+ }
+
+} //FCMPackage
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ImplementationGroup.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ImplementationGroup.java
new file mode 100644
index 00000000000..fd27dd03005
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ImplementationGroup.java
@@ -0,0 +1,59 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Implementation Group</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * A group of interaction components should apply both stereotypes. Each member of such a group must be an interaction component, but this is not enforced by the meta-model
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ImplementationGroup#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getImplementationGroup()
+ * @model
+ * @generated
+ */
+public interface ImplementationGroup extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getImplementationGroup_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.ImplementationGroup#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // ImplementationGroup
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ImplementationProperties.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ImplementationProperties.java
new file mode 100644
index 00000000000..14b62cc11f5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/ImplementationProperties.java
@@ -0,0 +1,171 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Implementation Properties</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.ImplementationProperties#getSizeRAM <em>Size RAM</em>}</li>
+ * <li>{@link FCM.ImplementationProperties#getSupportedOS <em>Supported OS</em>}</li>
+ * <li>{@link FCM.ImplementationProperties#getArch <em>Arch</em>}</li>
+ * <li>{@link FCM.ImplementationProperties#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.ImplementationProperties#getSizeROM <em>Size ROM</em>}</li>
+ * <li>{@link FCM.ImplementationProperties#getSupportedTargetArch <em>Supported Target Arch</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getImplementationProperties()
+ * @model
+ * @generated
+ */
+public interface ImplementationProperties extends EObject {
+ /**
+ * Returns the value of the '<em><b>Size RAM</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Size RAM</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Size RAM</em>' attribute.
+ * @see #setSizeRAM(int)
+ * @see FCM.FCMPackage#getImplementationProperties_SizeRAM()
+ * @model unique="false" dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+ * @generated
+ */
+ int getSizeRAM();
+
+ /**
+ * Sets the value of the '{@link FCM.ImplementationProperties#getSizeRAM <em>Size RAM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Size RAM</em>' attribute.
+ * @see #getSizeRAM()
+ * @generated
+ */
+ void setSizeRAM(int value);
+
+ /**
+ * Returns the value of the '<em><b>Supported OS</b></em>' reference list.
+ * The list contents are of type {@link FCM.OperatingSystem}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Supported OS</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Supported OS</em>' reference list.
+ * @see FCM.FCMPackage#getImplementationProperties_SupportedOS()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<OperatingSystem> getSupportedOS();
+
+ /**
+ * Returns the value of the '<em><b>Arch</b></em>' reference list.
+ * The list contents are of type {@link FCM.TargetArchitecture}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Arch</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Arch</em>' reference list.
+ * @see FCM.FCMPackage#getImplementationProperties_Arch()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<TargetArchitecture> getArch();
+
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getImplementationProperties_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.ImplementationProperties#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * Returns the value of the '<em><b>Size ROM</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Size ROM</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Size ROM</em>' attribute.
+ * @see #setSizeROM(int)
+ * @see FCM.FCMPackage#getImplementationProperties_SizeROM()
+ * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+ * @generated
+ */
+ int getSizeROM();
+
+ /**
+ * Sets the value of the '{@link FCM.ImplementationProperties#getSizeROM <em>Size ROM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Size ROM</em>' attribute.
+ * @see #getSizeROM()
+ * @generated
+ */
+ void setSizeROM(int value);
+
+ /**
+ * Returns the value of the '<em><b>Supported Target Arch</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Supported Target Arch</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Supported Target Arch</em>' reference.
+ * @see #setSupportedTargetArch(TargetArchitecture)
+ * @see FCM.FCMPackage#getImplementationProperties_SupportedTargetArch()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TargetArchitecture getSupportedTargetArch();
+
+ /**
+ * Sets the value of the '{@link FCM.ImplementationProperties#getSupportedTargetArch <em>Supported Target Arch</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Supported Target Arch</em>' reference.
+ * @see #getSupportedTargetArch()
+ * @generated
+ */
+ void setSupportedTargetArch(TargetArchitecture value);
+
+} // ImplementationProperties
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InitPrecedence.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InitPrecedence.java
new file mode 100644
index 00000000000..7a8abe76003
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InitPrecedence.java
@@ -0,0 +1,90 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Init Precedence</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.InitPrecedence#getInvokeAfter <em>Invoke After</em>}</li>
+ * <li>{@link FCM.InitPrecedence#getInvokeBefore <em>Invoke Before</em>}</li>
+ * <li>{@link FCM.InitPrecedence#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getInitPrecedence()
+ * @model
+ * @generated
+ */
+public interface InitPrecedence extends EObject {
+ /**
+ * Returns the value of the '<em><b>Invoke After</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.uml2.uml.Class}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Invoke After</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Invoke After</em>' reference list.
+ * @see FCM.FCMPackage#getInitPrecedence_InvokeAfter()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<org.eclipse.uml2.uml.Class> getInvokeAfter();
+
+ /**
+ * Returns the value of the '<em><b>Invoke Before</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.uml2.uml.Class}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Invoke Before</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Invoke Before</em>' reference list.
+ * @see FCM.FCMPackage#getInitPrecedence_InvokeBefore()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<org.eclipse.uml2.uml.Class> getInvokeBefore();
+
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getInitPrecedence_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.InitPrecedence#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // InitPrecedence
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InstanceConfigurator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InstanceConfigurator.java
new file mode 100644
index 00000000000..4a47bc2e180
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InstanceConfigurator.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instance Configurator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.InstanceConfigurator#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getInstanceConfigurator()
+ * @model
+ * @generated
+ */
+public interface InstanceConfigurator extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getInstanceConfigurator_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.InstanceConfigurator#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // InstanceConfigurator
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InteractionComponent.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InteractionComponent.java
new file mode 100644
index 00000000000..ed3c39300f8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InteractionComponent.java
@@ -0,0 +1,111 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Collaboration;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Interaction Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.InteractionComponent#isForDistribution <em>For Distribution</em>}</li>
+ * <li>{@link FCM.InteractionComponent#getConnectionPattern <em>Connection Pattern</em>}</li>
+ * <li>{@link FCM.InteractionComponent#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getInteractionComponent()
+ * @model
+ * @generated
+ */
+public interface InteractionComponent extends EObject {
+ /**
+ * Returns the value of the '<em><b>For Distribution</b></em>' attribute.
+ * The default value is <code>"false"</code>.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>For Distribution</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>For Distribution</em>' attribute.
+ * @see #setForDistribution(boolean)
+ * @see FCM.FCMPackage#getInteractionComponent_ForDistribution()
+ * @model default="false" unique="false" dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isForDistribution();
+
+ /**
+ * Sets the value of the '{@link FCM.InteractionComponent#isForDistribution <em>For Distribution</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>For Distribution</em>' attribute.
+ * @see #isForDistribution()
+ * @generated
+ */
+ void setForDistribution(boolean value);
+
+ /**
+ * Returns the value of the '<em><b>Connection Pattern</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Connection Pattern</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Connection Pattern</em>' reference.
+ * @see #setConnectionPattern(Collaboration)
+ * @see FCM.FCMPackage#getInteractionComponent_ConnectionPattern()
+ * @model ordered="false"
+ * @generated
+ */
+ Collaboration getConnectionPattern();
+
+ /**
+ * Sets the value of the '{@link FCM.InteractionComponent#getConnectionPattern <em>Connection Pattern</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Connection Pattern</em>' reference.
+ * @see #getConnectionPattern()
+ * @generated
+ */
+ void setConnectionPattern(Collaboration value);
+
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getInteractionComponent_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.InteractionComponent#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // InteractionComponent
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptionKind.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptionKind.java
new file mode 100644
index 00000000000..528109b7cca
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptionKind.java
@@ -0,0 +1,260 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Interception Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see FCM.FCMPackage#getInterceptionKind()
+ * @model
+ * @generated
+ */
+public enum InterceptionKind implements Enumerator {
+ /**
+ * The '<em><b>Intercept Some</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTERCEPT_SOME_VALUE
+ * @generated
+ * @ordered
+ */
+ INTERCEPT_SOME(0, "InterceptSome", "InterceptSome"), /**
+ * The '<em><b>Intercept All</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTERCEPT_ALL_VALUE
+ * @generated
+ * @ordered
+ */
+ INTERCEPT_ALL(1, "InterceptAll", "InterceptAll"), /**
+ * The '<em><b>Intercept All Out</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTERCEPT_ALL_OUT_VALUE
+ * @generated
+ * @ordered
+ */
+ INTERCEPT_ALL_OUT(2, "InterceptAllOut", "InterceptAllOut"), /**
+ * The '<em><b>Intercept All In</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #INTERCEPT_ALL_IN_VALUE
+ * @generated
+ * @ordered
+ */
+ INTERCEPT_ALL_IN(3, "InterceptAllIn", "InterceptAllIn");
+
+ /**
+ * The '<em><b>Intercept Some</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Intercept Some</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTERCEPT_SOME
+ * @model name="InterceptSome"
+ * @generated
+ * @ordered
+ */
+ public static final int INTERCEPT_SOME_VALUE = 0;
+
+ /**
+ * The '<em><b>Intercept All</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Intercept All</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTERCEPT_ALL
+ * @model name="InterceptAll"
+ * @generated
+ * @ordered
+ */
+ public static final int INTERCEPT_ALL_VALUE = 1;
+
+ /**
+ * The '<em><b>Intercept All Out</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Intercept All Out</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTERCEPT_ALL_OUT
+ * @model name="InterceptAllOut"
+ * @generated
+ * @ordered
+ */
+ public static final int INTERCEPT_ALL_OUT_VALUE = 2;
+
+ /**
+ * The '<em><b>Intercept All In</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Intercept All In</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #INTERCEPT_ALL_IN
+ * @model name="InterceptAllIn"
+ * @generated
+ * @ordered
+ */
+ public static final int INTERCEPT_ALL_IN_VALUE = 3;
+
+ /**
+ * An array of all the '<em><b>Interception Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final InterceptionKind[] VALUES_ARRAY =
+ new InterceptionKind[] {
+ INTERCEPT_SOME,
+ INTERCEPT_ALL,
+ INTERCEPT_ALL_OUT,
+ INTERCEPT_ALL_IN,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Interception Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<InterceptionKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Interception Kind</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static InterceptionKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ InterceptionKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Interception Kind</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static InterceptionKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ InterceptionKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Interception Kind</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static InterceptionKind get(int value) {
+ switch (value) {
+ case INTERCEPT_SOME_VALUE: return INTERCEPT_SOME;
+ case INTERCEPT_ALL_VALUE: return INTERCEPT_ALL;
+ case INTERCEPT_ALL_OUT_VALUE: return INTERCEPT_ALL_OUT;
+ case INTERCEPT_ALL_IN_VALUE: return INTERCEPT_ALL_IN;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private InterceptionKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //InterceptionKind
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptionRule.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptionRule.java
new file mode 100644
index 00000000000..7597777e689
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptionRule.java
@@ -0,0 +1,134 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Interception Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.InterceptionRule#getInterceptionKind <em>Interception Kind</em>}</li>
+ * <li>{@link FCM.InterceptionRule#getInterceptionSet <em>Interception Set</em>}</li>
+ * <li>{@link FCM.InterceptionRule#getBase_Property <em>Base Property</em>}</li>
+ * <li>{@link FCM.InterceptionRule#getBase_Operation <em>Base Operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getInterceptionRule()
+ * @model
+ * @generated
+ */
+public interface InterceptionRule extends EObject {
+ /**
+ * Returns the value of the '<em><b>Interception Kind</b></em>' attribute.
+ * The literals are from the enumeration {@link FCM.InterceptionKind}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Interception Kind</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Interception Kind</em>' attribute.
+ * @see FCM.InterceptionKind
+ * @see #setInterceptionKind(InterceptionKind)
+ * @see FCM.FCMPackage#getInterceptionRule_InterceptionKind()
+ * @model unique="false" required="true" ordered="false"
+ * @generated
+ */
+ InterceptionKind getInterceptionKind();
+
+ /**
+ * Sets the value of the '{@link FCM.InterceptionRule#getInterceptionKind <em>Interception Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Interception Kind</em>' attribute.
+ * @see FCM.InterceptionKind
+ * @see #getInterceptionKind()
+ * @generated
+ */
+ void setInterceptionKind(InterceptionKind value);
+
+ /**
+ * Returns the value of the '<em><b>Interception Set</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.uml2.uml.Feature}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Interception Set</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Interception Set</em>' reference list.
+ * @see FCM.FCMPackage#getInterceptionRule_InterceptionSet()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<Feature> getInterceptionSet();
+
+ /**
+ * Returns the value of the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Property</em>' reference.
+ * @see #setBase_Property(Property)
+ * @see FCM.FCMPackage#getInterceptionRule_Base_Property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_Property();
+
+ /**
+ * Sets the value of the '{@link FCM.InterceptionRule#getBase_Property <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Property</em>' reference.
+ * @see #getBase_Property()
+ * @generated
+ */
+ void setBase_Property(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Base Operation</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Operation</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Operation</em>' reference.
+ * @see #setBase_Operation(Operation)
+ * @see FCM.FCMPackage#getInterceptionRule_Base_Operation()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Operation getBase_Operation();
+
+ /**
+ * Sets the value of the '{@link FCM.InterceptionRule#getBase_Operation <em>Base Operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Operation</em>' reference.
+ * @see #getBase_Operation()
+ * @generated
+ */
+ void setBase_Operation(Operation value);
+
+} // InterceptionRule
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptorConfiguration.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptorConfiguration.java
new file mode 100644
index 00000000000..6f8c2716a1c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/InterceptorConfiguration.java
@@ -0,0 +1,83 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Slot;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Interceptor Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.InterceptorConfiguration#getBase_Slot <em>Base Slot</em>}</li>
+ * <li>{@link FCM.InterceptorConfiguration#getInterceptor <em>Interceptor</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getInterceptorConfiguration()
+ * @model
+ * @generated
+ */
+public interface InterceptorConfiguration extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Slot</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Slot</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Slot</em>' reference.
+ * @see #setBase_Slot(Slot)
+ * @see FCM.FCMPackage#getInterceptorConfiguration_Base_Slot()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Slot getBase_Slot();
+
+ /**
+ * Sets the value of the '{@link FCM.InterceptorConfiguration#getBase_Slot <em>Base Slot</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Slot</em>' reference.
+ * @see #getBase_Slot()
+ * @generated
+ */
+ void setBase_Slot(Slot value);
+
+ /**
+ * Returns the value of the '<em><b>Interceptor</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Interceptor</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Interceptor</em>' reference.
+ * @see #setInterceptor(Port)
+ * @see FCM.FCMPackage#getInterceptorConfiguration_Interceptor()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Port getInterceptor();
+
+ /**
+ * Sets the value of the '{@link FCM.InterceptorConfiguration#getInterceptor <em>Interceptor</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Interceptor</em>' reference.
+ * @see #getInterceptor()
+ * @generated
+ */
+ void setInterceptor(Port value);
+
+} // InterceptorConfiguration
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/JavaLibrary.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/JavaLibrary.java
new file mode 100644
index 00000000000..522e67fab38
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/JavaLibrary.java
@@ -0,0 +1,45 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Java Library</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.JavaLibrary#getClassPath <em>Class Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getJavaLibrary()
+ * @model
+ * @generated
+ */
+public interface JavaLibrary extends ExternalLibrary {
+ /**
+ * Returns the value of the '<em><b>Class Path</b></em>' attribute list.
+ * The list contents are of type {@link java.lang.String}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Class Path</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Class Path</em>' attribute list.
+ * @see FCM.FCMPackage#getJavaLibrary_ClassPath()
+ * @model unique="false" dataType="org.eclipse.uml2.types.String" ordered="false"
+ * @generated
+ */
+ EList<String> getClassPath();
+
+} // JavaLibrary
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/OperatingSystem.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/OperatingSystem.java
new file mode 100644
index 00000000000..822396ef6af
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/OperatingSystem.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Operating System</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.OperatingSystem#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getOperatingSystem()
+ * @model
+ * @generated
+ */
+public interface OperatingSystem extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getOperatingSystem_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.OperatingSystem#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // OperatingSystem
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Part.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Part.java
new file mode 100644
index 00000000000..0c8f16aa1eb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Part.java
@@ -0,0 +1,75 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Part</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.Part#getBase_Property <em>Base Property</em>}</li>
+ * <li>{@link FCM.Part#getColocateWithPort <em>Colocate With Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getPart()
+ * @model
+ * @generated
+ */
+public interface Part extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Property</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Property</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Property</em>' reference.
+ * @see #setBase_Property(Property)
+ * @see FCM.FCMPackage#getPart_Base_Property()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Property getBase_Property();
+
+ /**
+ * Sets the value of the '{@link FCM.Part#getBase_Property <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Property</em>' reference.
+ * @see #getBase_Property()
+ * @generated
+ */
+ void setBase_Property(Property value);
+
+ /**
+ * Returns the value of the '<em><b>Colocate With Port</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.uml2.uml.Port}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Colocate With Port</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Colocate With Port</em>' reference list.
+ * @see FCM.FCMPackage#getPart_ColocateWithPort()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<Port> getColocateWithPort();
+
+} // Part
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Port.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Port.java
new file mode 100644
index 00000000000..4b6e75a3f08
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Port.java
@@ -0,0 +1,162 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.uml2.uml.Interface;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.Port#getBase_Port <em>Base Port</em>}</li>
+ * <li>{@link FCM.Port#getKind <em>Kind</em>}</li>
+ * <li>{@link FCM.Port#getProvidedInterface <em>Provided Interface</em>}</li>
+ * <li>{@link FCM.Port#getRequiredInterface <em>Required Interface</em>}</li>
+ * <li>{@link FCM.Port#isConjugated <em>Conjugated</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getPort()
+ * @model
+ * @generated
+ */
+public interface Port extends ConfigurableElementInstance {
+ /**
+ * Returns the value of the '<em><b>Base Port</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Port</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Port</em>' reference.
+ * @see #setBase_Port(org.eclipse.uml2.uml.Port)
+ * @see FCM.FCMPackage#getPort_Base_Port()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Port getBase_Port();
+
+ /**
+ * Sets the value of the '{@link FCM.Port#getBase_Port <em>Base Port</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Port</em>' reference.
+ * @see #getBase_Port()
+ * @generated
+ */
+ void setBase_Port(org.eclipse.uml2.uml.Port value);
+
+ /**
+ * Returns the value of the '<em><b>Kind</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Kind</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Kind</em>' reference.
+ * @see #setKind(PortKind)
+ * @see FCM.FCMPackage#getPort_Kind()
+ * @model ordered="false"
+ * @generated
+ */
+ PortKind getKind();
+
+ /**
+ * Sets the value of the '{@link FCM.Port#getKind <em>Kind</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Kind</em>' reference.
+ * @see #getKind()
+ * @generated
+ */
+ void setKind(PortKind value);
+
+ /**
+ * Returns the value of the '<em><b>Provided Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Provided Interface</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Provided Interface</em>' reference.
+ * @see #isSetProvidedInterface()
+ * @see FCM.FCMPackage#getPort_ProvidedInterface()
+ * @model unsettable="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+ * @generated
+ */
+ Interface getProvidedInterface();
+
+ /**
+ * Returns whether the value of the '{@link FCM.Port#getProvidedInterface <em>Provided Interface</em>}' reference is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Provided Interface</em>' reference is set.
+ * @see #getProvidedInterface()
+ * @generated
+ */
+ boolean isSetProvidedInterface();
+
+ /**
+ * Returns the value of the '<em><b>Required Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Required Interface</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Required Interface</em>' reference.
+ * @see #isSetRequiredInterface()
+ * @see FCM.FCMPackage#getPort_RequiredInterface()
+ * @model unsettable="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+ * @generated
+ */
+ Interface getRequiredInterface();
+
+ /**
+ * Returns whether the value of the '{@link FCM.Port#getRequiredInterface <em>Required Interface</em>}' reference is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Required Interface</em>' reference is set.
+ * @see #getRequiredInterface()
+ * @generated
+ */
+ boolean isSetRequiredInterface();
+
+ /**
+ * Returns the value of the '<em><b>Conjugated</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Conjugated</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Conjugated</em>' attribute.
+ * @see #setConjugated(boolean)
+ * @see FCM.FCMPackage#getPort_Conjugated()
+ * @model unique="false" dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false"
+ * @generated
+ */
+ boolean isConjugated();
+
+ /**
+ * Sets the value of the '{@link FCM.Port#isConjugated <em>Conjugated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Conjugated</em>' attribute.
+ * @see #isConjugated()
+ * @generated
+ */
+ void setConjugated(boolean value);
+
+} // Port
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/PortKind.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/PortKind.java
new file mode 100644
index 00000000000..75c219d5703
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/PortKind.java
@@ -0,0 +1,137 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Interface;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Port Kind</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.PortKind#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.PortKind#getProvidedInterface <em>Provided Interface</em>}</li>
+ * <li>{@link FCM.PortKind#getRequiredInterface <em>Required Interface</em>}</li>
+ * <li>{@link FCM.PortKind#isExtendedPort <em>Extended Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getPortKind()
+ * @model
+ * @generated
+ */
+public interface PortKind extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getPortKind_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.PortKind#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * Returns the value of the '<em><b>Provided Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Provided Interface</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Provided Interface</em>' reference.
+ * @see #setProvidedInterface(Interface)
+ * @see FCM.FCMPackage#getPortKind_ProvidedInterface()
+ * @model ordered="false"
+ * @generated
+ */
+ Interface getProvidedInterface();
+
+ /**
+ * Sets the value of the '{@link FCM.PortKind#getProvidedInterface <em>Provided Interface</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Provided Interface</em>' reference.
+ * @see #getProvidedInterface()
+ * @generated
+ */
+ void setProvidedInterface(Interface value);
+
+ /**
+ * Returns the value of the '<em><b>Required Interface</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Required Interface</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Required Interface</em>' reference.
+ * @see #setRequiredInterface(Interface)
+ * @see FCM.FCMPackage#getPortKind_RequiredInterface()
+ * @model ordered="false"
+ * @generated
+ */
+ Interface getRequiredInterface();
+
+ /**
+ * Sets the value of the '{@link FCM.PortKind#getRequiredInterface <em>Required Interface</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Required Interface</em>' reference.
+ * @see #getRequiredInterface()
+ * @generated
+ */
+ void setRequiredInterface(Interface value);
+
+ /**
+ * Returns the value of the '<em><b>Extended Port</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Extended Port</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Extended Port</em>' attribute.
+ * @see #isSetExtendedPort()
+ * @see FCM.FCMPackage#getPortKind_ExtendedPort()
+ * @model unsettable="true" dataType="org.eclipse.uml2.types.Boolean" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+ * @generated
+ */
+ boolean isExtendedPort();
+
+ /**
+ * Returns whether the value of the '{@link FCM.PortKind#isExtendedPort <em>Extended Port</em>}' attribute is set.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return whether the value of the '<em>Extended Port</em>' attribute is set.
+ * @see #isExtendedPort()
+ * @generated
+ */
+ boolean isSetExtendedPort();
+
+} // PortKind
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/RuleApplication.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/RuleApplication.java
new file mode 100644
index 00000000000..55e05bc23ff
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/RuleApplication.java
@@ -0,0 +1,100 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rule Application</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.RuleApplication#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.RuleApplication#getContainerRule <em>Container Rule</em>}</li>
+ * <li>{@link FCM.RuleApplication#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getRuleApplication()
+ * @model
+ * @generated
+ */
+public interface RuleApplication extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getRuleApplication_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.RuleApplication#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * Returns the value of the '<em><b>Container Rule</b></em>' reference list.
+ * The list contents are of type {@link FCM.ContainerRule}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Container Rule</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Container Rule</em>' reference list.
+ * @see FCM.FCMPackage#getRuleApplication_ContainerRule()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<ContainerRule> getContainerRule();
+
+ /**
+ * Returns the value of the '<em><b>Base Package</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Package</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Package</em>' reference.
+ * @see #setBase_Package(org.eclipse.uml2.uml.Package)
+ * @see FCM.FCMPackage#getRuleApplication_Base_Package()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Package getBase_Package();
+
+ /**
+ * Sets the value of the '{@link FCM.RuleApplication#getBase_Package <em>Base Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Package</em>' reference.
+ * @see #getBase_Package()
+ * @generated
+ */
+ void setBase_Package(org.eclipse.uml2.uml.Package value);
+
+} // RuleApplication
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Singleton.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Singleton.java
new file mode 100644
index 00000000000..3df9437d2e9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Singleton.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Singleton</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.Singleton#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getSingleton()
+ * @model
+ * @generated
+ */
+public interface Singleton extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getSingleton_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.Singleton#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // Singleton
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Target.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Target.java
new file mode 100644
index 00000000000..f4036bca540
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Target.java
@@ -0,0 +1,182 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Target</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.Target#getTargetArch <em>Target Arch</em>}</li>
+ * <li>{@link FCM.Target#getOptions <em>Options</em>}</li>
+ * <li>{@link FCM.Target#getBase_Node <em>Base Node</em>}</li>
+ * <li>{@link FCM.Target#getUsedOS <em>Used OS</em>}</li>
+ * <li>{@link FCM.Target#getAvailRAM <em>Avail RAM</em>}</li>
+ * <li>{@link FCM.Target#getAvailROM <em>Avail ROM</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getTarget()
+ * @model
+ * @generated
+ */
+public interface Target extends EObject {
+ /**
+ * Returns the value of the '<em><b>Target Arch</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Target Arch</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Target Arch</em>' reference.
+ * @see #setTargetArch(TargetArchitecture)
+ * @see FCM.FCMPackage#getTarget_TargetArch()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ TargetArchitecture getTargetArch();
+
+ /**
+ * Sets the value of the '{@link FCM.Target#getTargetArch <em>Target Arch</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Target Arch</em>' reference.
+ * @see #getTargetArch()
+ * @generated
+ */
+ void setTargetArch(TargetArchitecture value);
+
+ /**
+ * Returns the value of the '<em><b>Options</b></em>' reference list.
+ * The list contents are of type {@link FCM.ConfigOption}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Options</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Options</em>' reference list.
+ * @see FCM.FCMPackage#getTarget_Options()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<ConfigOption> getOptions();
+
+ /**
+ * Returns the value of the '<em><b>Base Node</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Node</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Node</em>' reference.
+ * @see #setBase_Node(Node)
+ * @see FCM.FCMPackage#getTarget_Base_Node()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Node getBase_Node();
+
+ /**
+ * Sets the value of the '{@link FCM.Target#getBase_Node <em>Base Node</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Node</em>' reference.
+ * @see #getBase_Node()
+ * @generated
+ */
+ void setBase_Node(Node value);
+
+ /**
+ * Returns the value of the '<em><b>Used OS</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Used OS</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Used OS</em>' reference.
+ * @see #setUsedOS(OperatingSystem)
+ * @see FCM.FCMPackage#getTarget_UsedOS()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ OperatingSystem getUsedOS();
+
+ /**
+ * Sets the value of the '{@link FCM.Target#getUsedOS <em>Used OS</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Used OS</em>' reference.
+ * @see #getUsedOS()
+ * @generated
+ */
+ void setUsedOS(OperatingSystem value);
+
+ /**
+ * Returns the value of the '<em><b>Avail RAM</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Avail RAM</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Avail RAM</em>' attribute.
+ * @see #setAvailRAM(int)
+ * @see FCM.FCMPackage#getTarget_AvailRAM()
+ * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+ * @generated
+ */
+ int getAvailRAM();
+
+ /**
+ * Sets the value of the '{@link FCM.Target#getAvailRAM <em>Avail RAM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Avail RAM</em>' attribute.
+ * @see #getAvailRAM()
+ * @generated
+ */
+ void setAvailRAM(int value);
+
+ /**
+ * Returns the value of the '<em><b>Avail ROM</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Avail ROM</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Avail ROM</em>' attribute.
+ * @see #setAvailROM(int)
+ * @see FCM.FCMPackage#getTarget_AvailROM()
+ * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+ * @generated
+ */
+ int getAvailROM();
+
+ /**
+ * Sets the value of the '{@link FCM.Target#getAvailROM <em>Avail ROM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Avail ROM</em>' attribute.
+ * @see #getAvailROM()
+ * @generated
+ */
+ void setAvailROM(int value);
+
+} // Target
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/TargetArchitecture.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/TargetArchitecture.java
new file mode 100644
index 00000000000..95b9aaf9ef3
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/TargetArchitecture.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Target Architecture</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.TargetArchitecture#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getTargetArchitecture()
+ * @model
+ * @generated
+ */
+public interface TargetArchitecture extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getTargetArchitecture_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.TargetArchitecture#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // TargetArchitecture
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Template.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Template.java
new file mode 100644
index 00000000000..902faa728ed
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/Template.java
@@ -0,0 +1,140 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Template</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * The template parameters list defines the parameters that are passed to the Acceleo template. If empty, the formal parameter list of the package template is used.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.Template#getTemplateParams <em>Template Params</em>}</li>
+ * <li>{@link FCM.Template#getBase_Element <em>Base Element</em>}</li>
+ * <li>{@link FCM.Template#getKind <em>Kind</em>}</li>
+ * <li>{@link FCM.Template#getActualChoice <em>Actual Choice</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getTemplate()
+ * @model
+ * @generated
+ */
+public interface Template extends EObject {
+ /**
+ * Returns the value of the '<em><b>Template Params</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.uml2.uml.Classifier}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Template Params</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Template Params</em>' reference list.
+ * @see FCM.FCMPackage#getTemplate_TemplateParams()
+ * @model ordered="false"
+ * @generated
+ */
+ EList<Classifier> getTemplateParams();
+
+ /**
+ * Returns the value of the '<em><b>Base Element</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Element</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Element</em>' reference.
+ * @see #setBase_Element(Element)
+ * @see FCM.FCMPackage#getTemplate_Base_Element()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Element getBase_Element();
+
+ /**
+ * Sets the value of the '{@link FCM.Template#getBase_Element <em>Base Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Element</em>' reference.
+ * @see #getBase_Element()
+ * @generated
+ */
+ void setBase_Element(Element value);
+
+ /**
+ * Returns the value of the '<em><b>Kind</b></em>' attribute.
+ * The literals are from the enumeration {@link FCM.TemplateKind}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Kind</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Kind</em>' attribute.
+ * @see FCM.TemplateKind
+ * @see #setKind(TemplateKind)
+ * @see FCM.FCMPackage#getTemplate_Kind()
+ * @model unique="false" required="true" ordered="false"
+ * @generated
+ */
+ TemplateKind getKind();
+
+ /**
+ * Sets the value of the '{@link FCM.Template#getKind <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Kind</em>' attribute.
+ * @see FCM.TemplateKind
+ * @see #getKind()
+ * @generated
+ */
+ void setKind(TemplateKind value);
+
+ /**
+ * Returns the value of the '<em><b>Actual Choice</b></em>' attribute.
+ * The literals are from the enumeration {@link FCM.ActualChoice}.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Actual Choice</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Actual Choice</em>' attribute.
+ * @see FCM.ActualChoice
+ * @see #setActualChoice(ActualChoice)
+ * @see FCM.FCMPackage#getTemplate_ActualChoice()
+ * @model unique="false" ordered="false"
+ * @generated
+ */
+ ActualChoice getActualChoice();
+
+ /**
+ * Sets the value of the '{@link FCM.Template#getActualChoice <em>Actual Choice</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Actual Choice</em>' attribute.
+ * @see FCM.ActualChoice
+ * @see #getActualChoice()
+ * @generated
+ */
+ void setActualChoice(ActualChoice value);
+
+} // Template
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/TemplateKind.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/TemplateKind.java
new file mode 100644
index 00000000000..8b710168464
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/TemplateKind.java
@@ -0,0 +1,367 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Template Kind</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see FCM.FCMPackage#getTemplateKind()
+ * @model
+ * @generated
+ */
+public enum TemplateKind implements Enumerator {
+ /**
+ * The '<em><b>Pass Formal</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PASS_FORMAL_VALUE
+ * @generated
+ * @ordered
+ */
+ PASS_FORMAL(0, "PassFormal", "PassFormal"),
+
+ /**
+ * The '<em><b>Loop Operations</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LOOP_OPERATIONS_VALUE
+ * @generated
+ * @ordered
+ */
+ LOOP_OPERATIONS(1, "LoopOperations", "LoopOperations"),
+
+ /**
+ * The '<em><b>Loop Property</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LOOP_PROPERTY_VALUE
+ * @generated
+ * @ordered
+ */
+ LOOP_PROPERTY(2, "LoopProperty", "LoopProperty"), /**
+ * The '<em><b>Accumulate</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #ACCUMULATE_VALUE
+ * @generated
+ * @ordered
+ */
+ ACCUMULATE(3, "Accumulate", "Accumulate"),
+
+ /**
+ * The '<em><b>Loop Literals</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LOOP_LITERALS_VALUE
+ * @generated
+ * @ordered
+ */
+ LOOP_LITERALS(4, "LoopLiterals", "LoopLiterals"),
+
+ /**
+ * The '<em><b>Late Evaluation</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LATE_EVALUATION_VALUE
+ * @generated
+ * @ordered
+ */
+ LATE_EVALUATION(5, "LateEvaluation", "LateEvaluation"), /**
+ * The '<em><b>Loop Ports</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #LOOP_PORTS_VALUE
+ * @generated
+ * @ordered
+ */
+ LOOP_PORTS(6, "LoopPorts", "LoopPorts"), /**
+ * The '<em><b>Pass Classifier</b></em>' literal object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #PASS_CLASSIFIER_VALUE
+ * @generated
+ * @ordered
+ */
+ PASS_CLASSIFIER(7, "PassClassifier", "PassClassifier");
+
+ /**
+ * The '<em><b>Pass Formal</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Pass Formal</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PASS_FORMAL
+ * @model name="PassFormal"
+ * @generated
+ * @ordered
+ */
+ public static final int PASS_FORMAL_VALUE = 0;
+
+ /**
+ * The '<em><b>Loop Operations</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Loop Operations</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LOOP_OPERATIONS
+ * @model name="LoopOperations"
+ * @generated
+ * @ordered
+ */
+ public static final int LOOP_OPERATIONS_VALUE = 1;
+
+ /**
+ * The '<em><b>Loop Property</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Loop Property</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LOOP_PROPERTY
+ * @model name="LoopProperty"
+ * @generated
+ * @ordered
+ */
+ public static final int LOOP_PROPERTY_VALUE = 2;
+
+ /**
+ * The '<em><b>Accumulate</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Accumulate</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #ACCUMULATE
+ * @model name="Accumulate"
+ * @generated
+ * @ordered
+ */
+ public static final int ACCUMULATE_VALUE = 3;
+
+ /**
+ * The '<em><b>Loop Literals</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Loop Literals</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LOOP_LITERALS
+ * @model name="LoopLiterals"
+ * @generated
+ * @ordered
+ */
+ public static final int LOOP_LITERALS_VALUE = 4;
+
+ /**
+ * The '<em><b>Late Evaluation</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * <!-- begin-model-doc -->
+ * LateEvaluation is more a tempalte binding rather than a template definition. In
+ * <!-- end-model-doc -->
+ * @see #LATE_EVALUATION
+ * @model name="LateEvaluation"
+ * @generated
+ * @ordered
+ */
+ public static final int LATE_EVALUATION_VALUE = 5;
+
+ /**
+ * The '<em><b>Loop Ports</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Loop Ports</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #LOOP_PORTS
+ * @model name="LoopPorts"
+ * @generated
+ * @ordered
+ */
+ public static final int LOOP_PORTS_VALUE = 6;
+
+ /**
+ * The '<em><b>Pass Classifier</b></em>' literal value.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of '<em><b>Pass Classifier</b></em>' literal object isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @see #PASS_CLASSIFIER
+ * @model name="PassClassifier"
+ * @generated
+ * @ordered
+ */
+ public static final int PASS_CLASSIFIER_VALUE = 7;
+
+ /**
+ * An array of all the '<em><b>Template Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static final TemplateKind[] VALUES_ARRAY =
+ new TemplateKind[] {
+ PASS_FORMAL,
+ LOOP_OPERATIONS,
+ LOOP_PROPERTY,
+ ACCUMULATE,
+ LOOP_LITERALS,
+ LATE_EVALUATION,
+ LOOP_PORTS,
+ PASS_CLASSIFIER,
+ };
+
+ /**
+ * A public read-only list of all the '<em><b>Template Kind</b></em>' enumerators.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final List<TemplateKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+ /**
+ * Returns the '<em><b>Template Kind</b></em>' literal with the specified literal value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static TemplateKind get(String literal) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ TemplateKind result = VALUES_ARRAY[i];
+ if (result.toString().equals(literal)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Template Kind</b></em>' literal with the specified name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static TemplateKind getByName(String name) {
+ for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+ TemplateKind result = VALUES_ARRAY[i];
+ if (result.getName().equals(name)) {
+ return result;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the '<em><b>Template Kind</b></em>' literal with the specified integer value.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static TemplateKind get(int value) {
+ switch (value) {
+ case PASS_FORMAL_VALUE: return PASS_FORMAL;
+ case LOOP_OPERATIONS_VALUE: return LOOP_OPERATIONS;
+ case LOOP_PROPERTY_VALUE: return LOOP_PROPERTY;
+ case ACCUMULATE_VALUE: return ACCUMULATE;
+ case LOOP_LITERALS_VALUE: return LOOP_LITERALS;
+ case LATE_EVALUATION_VALUE: return LATE_EVALUATION;
+ case LOOP_PORTS_VALUE: return LOOP_PORTS;
+ case PASS_CLASSIFIER_VALUE: return PASS_CLASSIFIER;
+ }
+ return null;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final int value;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String name;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private final String literal;
+
+ /**
+ * Only this class can construct instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private TemplateKind(int value, String name, String literal) {
+ this.value = value;
+ this.name = name;
+ this.literal = literal;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getValue() {
+ return value;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLiteral() {
+ return literal;
+ }
+
+ /**
+ * Returns the literal value of the enumerator, which is its string representation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+} //TemplateKind
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/UseInstanceConfigurator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/UseInstanceConfigurator.java
new file mode 100644
index 00000000000..f4a25113538
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/UseInstanceConfigurator.java
@@ -0,0 +1,81 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Use Instance Configurator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link FCM.UseInstanceConfigurator#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.UseInstanceConfigurator#getConfigurator <em>Configurator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see FCM.FCMPackage#getUseInstanceConfigurator()
+ * @model
+ * @generated
+ */
+public interface UseInstanceConfigurator extends EObject {
+ /**
+ * Returns the value of the '<em><b>Base Class</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Class</em>' reference.
+ * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+ * @see FCM.FCMPackage#getUseInstanceConfigurator_Base_Class()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ org.eclipse.uml2.uml.Class getBase_Class();
+
+ /**
+ * Sets the value of the '{@link FCM.UseInstanceConfigurator#getBase_Class <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Class</em>' reference.
+ * @see #getBase_Class()
+ * @generated
+ */
+ void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+ /**
+ * Returns the value of the '<em><b>Configurator</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Configurator</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Configurator</em>' reference.
+ * @see #setConfigurator(InstanceConfigurator)
+ * @see FCM.FCMPackage#getUseInstanceConfigurator_Configurator()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ InstanceConfigurator getConfigurator();
+
+ /**
+ * Sets the value of the '{@link FCM.UseInstanceConfigurator#getConfigurator <em>Configurator</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Configurator</em>' reference.
+ * @see #getConfigurator()
+ * @generated
+ */
+ void setConfigurator(InstanceConfigurator value);
+
+} // UseInstanceConfigurator
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/AutoIndexImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/AutoIndexImpl.java
new file mode 100644
index 00000000000..509fe964971
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/AutoIndexImpl.java
@@ -0,0 +1,162 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.AutoIndex;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Auto Index</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.AutoIndexImpl#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class AutoIndexImpl extends EObjectImpl implements AutoIndex {
+ /**
+ * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_Property;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AutoIndexImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.AUTO_INDEX;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_Property() {
+ if (base_Property != null && base_Property.eIsProxy()) {
+ InternalEObject oldBase_Property = (InternalEObject)base_Property;
+ base_Property = (Property)eResolveProxy(oldBase_Property);
+ if (base_Property != oldBase_Property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.AUTO_INDEX__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+ }
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_Property() {
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Property(Property newBase_Property) {
+ Property oldBase_Property = base_Property;
+ base_Property = newBase_Property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.AUTO_INDEX__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.AUTO_INDEX__BASE_PROPERTY:
+ if (resolve) return getBase_Property();
+ return basicGetBase_Property();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.AUTO_INDEX__BASE_PROPERTY:
+ setBase_Property((Property)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.AUTO_INDEX__BASE_PROPERTY:
+ setBase_Property((Property)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.AUTO_INDEX__BASE_PROPERTY:
+ return base_Property != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //AutoIndexImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/AutoIndexPerNodeImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/AutoIndexPerNodeImpl.java
new file mode 100644
index 00000000000..55e294e6ae8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/AutoIndexPerNodeImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.AutoIndexPerNode;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Auto Index Per Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class AutoIndexPerNodeImpl extends AutoIndexImpl implements AutoIndexPerNode {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected AutoIndexPerNodeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.AUTO_INDEX_PER_NODE;
+ }
+
+} //AutoIndexPerNodeImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CompImplTemplateImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CompImplTemplateImpl.java
new file mode 100644
index 00000000000..9c24b3fde9e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CompImplTemplateImpl.java
@@ -0,0 +1,228 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.CompImplTemplate;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Comp Impl Template</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.CompImplTemplateImpl#getTemplateDefs <em>Template Defs</em>}</li>
+ * <li>{@link FCM.impl.CompImplTemplateImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CompImplTemplateImpl extends EObjectImpl implements CompImplTemplate {
+ /**
+ * The default value of the '{@link #getTemplateDefs() <em>Template Defs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemplateDefs()
+ * @generated
+ * @ordered
+ */
+ protected static final String TEMPLATE_DEFS_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getTemplateDefs() <em>Template Defs</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemplateDefs()
+ * @generated
+ * @ordered
+ */
+ protected String templateDefs = TEMPLATE_DEFS_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CompImplTemplateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.COMP_IMPL_TEMPLATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getTemplateDefs() {
+ return templateDefs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTemplateDefs(String newTemplateDefs) {
+ String oldTemplateDefs = templateDefs;
+ templateDefs = newTemplateDefs;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.COMP_IMPL_TEMPLATE__TEMPLATE_DEFS, oldTemplateDefs, templateDefs));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.COMP_IMPL_TEMPLATE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.COMP_IMPL_TEMPLATE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.COMP_IMPL_TEMPLATE__TEMPLATE_DEFS:
+ return getTemplateDefs();
+ case FCMPackage.COMP_IMPL_TEMPLATE__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.COMP_IMPL_TEMPLATE__TEMPLATE_DEFS:
+ setTemplateDefs((String)newValue);
+ return;
+ case FCMPackage.COMP_IMPL_TEMPLATE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.COMP_IMPL_TEMPLATE__TEMPLATE_DEFS:
+ setTemplateDefs(TEMPLATE_DEFS_EDEFAULT);
+ return;
+ case FCMPackage.COMP_IMPL_TEMPLATE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.COMP_IMPL_TEMPLATE__TEMPLATE_DEFS:
+ return TEMPLATE_DEFS_EDEFAULT == null ? templateDefs != null : !TEMPLATE_DEFS_EDEFAULT.equals(templateDefs);
+ case FCMPackage.COMP_IMPL_TEMPLATE__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (templateDefs: ");
+ result.append(templateDefs);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CompImplTemplateImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigOptionImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigOptionImpl.java
new file mode 100644
index 00000000000..4123bd6e95c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigOptionImpl.java
@@ -0,0 +1,160 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ConfigOption;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Config Option</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ConfigOptionImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConfigOptionImpl extends EObjectImpl implements ConfigOption {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConfigOptionImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CONFIG_OPTION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONFIG_OPTION__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONFIG_OPTION__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.CONFIG_OPTION__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.CONFIG_OPTION__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONFIG_OPTION__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONFIG_OPTION__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConfigOptionImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurableElementInstanceImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurableElementInstanceImpl.java
new file mode 100644
index 00000000000..6271ddec11f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurableElementInstanceImpl.java
@@ -0,0 +1,162 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ConfigurableElementInstance;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Configurable Element Instance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ConfigurableElementInstanceImpl#getConfiguration <em>Configuration</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ConfigurableElementInstanceImpl extends EObjectImpl implements ConfigurableElementInstance {
+ /**
+ * The cached value of the '{@link #getConfiguration() <em>Configuration</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConfiguration()
+ * @generated
+ * @ordered
+ */
+ protected InstanceSpecification configuration;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConfigurableElementInstanceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CONFIGURABLE_ELEMENT_INSTANCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanceSpecification getConfiguration() {
+ if (configuration != null && configuration.eIsProxy()) {
+ InternalEObject oldConfiguration = (InternalEObject)configuration;
+ configuration = (InstanceSpecification)eResolveProxy(oldConfiguration);
+ if (configuration != oldConfiguration) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION, oldConfiguration, configuration));
+ }
+ }
+ return configuration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanceSpecification basicGetConfiguration() {
+ return configuration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConfiguration(InstanceSpecification newConfiguration) {
+ InstanceSpecification oldConfiguration = configuration;
+ configuration = newConfiguration;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION, oldConfiguration, configuration));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION:
+ if (resolve) return getConfiguration();
+ return basicGetConfiguration();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION:
+ setConfiguration((InstanceSpecification)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION:
+ setConfiguration((InstanceSpecification)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION:
+ return configuration != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConfigurableElementInstanceImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurationImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurationImpl.java
new file mode 100644
index 00000000000..6ca627af03d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurationImpl.java
@@ -0,0 +1,263 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ConfigOption;
+import FCM.Configuration;
+import FCM.DeploymentPlan;
+import FCM.FCMPackage;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ConfigurationImpl#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.impl.ConfigurationImpl#getConfigOptions <em>Config Options</em>}</li>
+ * <li>{@link FCM.impl.ConfigurationImpl#getDeploymentPlan <em>Deployment Plan</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConfigurationImpl extends EObjectImpl implements Configuration {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * The cached value of the '{@link #getConfigOptions() <em>Config Options</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConfigOptions()
+ * @generated
+ * @ordered
+ */
+ protected EList<ConfigOption> configOptions;
+
+ /**
+ * The cached value of the '{@link #getDeploymentPlan() <em>Deployment Plan</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getDeploymentPlan()
+ * @generated
+ * @ordered
+ */
+ protected DeploymentPlan deploymentPlan;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConfigurationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CONFIGURATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONFIGURATION__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONFIGURATION__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ConfigOption> getConfigOptions() {
+ if (configOptions == null) {
+ configOptions = new EObjectResolvingEList<ConfigOption>(ConfigOption.class, this, FCMPackage.CONFIGURATION__CONFIG_OPTIONS);
+ }
+ return configOptions;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeploymentPlan getDeploymentPlan() {
+ if (deploymentPlan != null && deploymentPlan.eIsProxy()) {
+ InternalEObject oldDeploymentPlan = (InternalEObject)deploymentPlan;
+ deploymentPlan = (DeploymentPlan)eResolveProxy(oldDeploymentPlan);
+ if (deploymentPlan != oldDeploymentPlan) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONFIGURATION__DEPLOYMENT_PLAN, oldDeploymentPlan, deploymentPlan));
+ }
+ }
+ return deploymentPlan;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeploymentPlan basicGetDeploymentPlan() {
+ return deploymentPlan;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setDeploymentPlan(DeploymentPlan newDeploymentPlan) {
+ DeploymentPlan oldDeploymentPlan = deploymentPlan;
+ deploymentPlan = newDeploymentPlan;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONFIGURATION__DEPLOYMENT_PLAN, oldDeploymentPlan, deploymentPlan));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURATION__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ case FCMPackage.CONFIGURATION__CONFIG_OPTIONS:
+ return getConfigOptions();
+ case FCMPackage.CONFIGURATION__DEPLOYMENT_PLAN:
+ if (resolve) return getDeploymentPlan();
+ return basicGetDeploymentPlan();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURATION__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ case FCMPackage.CONFIGURATION__CONFIG_OPTIONS:
+ getConfigOptions().clear();
+ getConfigOptions().addAll((Collection<? extends ConfigOption>)newValue);
+ return;
+ case FCMPackage.CONFIGURATION__DEPLOYMENT_PLAN:
+ setDeploymentPlan((DeploymentPlan)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURATION__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ case FCMPackage.CONFIGURATION__CONFIG_OPTIONS:
+ getConfigOptions().clear();
+ return;
+ case FCMPackage.CONFIGURATION__DEPLOYMENT_PLAN:
+ setDeploymentPlan((DeploymentPlan)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURATION__BASE_CLASS:
+ return base_Class != null;
+ case FCMPackage.CONFIGURATION__CONFIG_OPTIONS:
+ return configOptions != null && !configOptions.isEmpty();
+ case FCMPackage.CONFIGURATION__DEPLOYMENT_PLAN:
+ return deploymentPlan != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConfigurationImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurationPropertyImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurationPropertyImpl.java
new file mode 100644
index 00000000000..3f28fc10d5b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConfigurationPropertyImpl.java
@@ -0,0 +1,162 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ConfigurationProperty;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Configuration Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ConfigurationPropertyImpl#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConfigurationPropertyImpl extends EObjectImpl implements ConfigurationProperty {
+ /**
+ * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_Property;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConfigurationPropertyImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CONFIGURATION_PROPERTY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_Property() {
+ if (base_Property != null && base_Property.eIsProxy()) {
+ InternalEObject oldBase_Property = (InternalEObject)base_Property;
+ base_Property = (Property)eResolveProxy(oldBase_Property);
+ if (base_Property != oldBase_Property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONFIGURATION_PROPERTY__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+ }
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_Property() {
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Property(Property newBase_Property) {
+ Property oldBase_Property = base_Property;
+ base_Property = newBase_Property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONFIGURATION_PROPERTY__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURATION_PROPERTY__BASE_PROPERTY:
+ if (resolve) return getBase_Property();
+ return basicGetBase_Property();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURATION_PROPERTY__BASE_PROPERTY:
+ setBase_Property((Property)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURATION_PROPERTY__BASE_PROPERTY:
+ setBase_Property((Property)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONFIGURATION_PROPERTY__BASE_PROPERTY:
+ return base_Property != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConfigurationPropertyImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConnectorConfigurationImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConnectorConfigurationImpl.java
new file mode 100644
index 00000000000..815acd8b328
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConnectorConfigurationImpl.java
@@ -0,0 +1,223 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.Connector;
+import FCM.ConnectorConfiguration;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Slot;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Connector Configuration</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ConnectorConfigurationImpl#getBase_Slot <em>Base Slot</em>}</li>
+ * <li>{@link FCM.impl.ConnectorConfigurationImpl#getConnector <em>Connector</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConnectorConfigurationImpl extends EObjectImpl implements ConnectorConfiguration {
+ /**
+ * The cached value of the '{@link #getBase_Slot() <em>Base Slot</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Slot()
+ * @generated
+ * @ordered
+ */
+ protected Slot base_Slot;
+
+ /**
+ * The cached value of the '{@link #getConnector() <em>Connector</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnector()
+ * @generated
+ * @ordered
+ */
+ protected Connector connector;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConnectorConfigurationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CONNECTOR_CONFIGURATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Slot getBase_Slot() {
+ if (base_Slot != null && base_Slot.eIsProxy()) {
+ InternalEObject oldBase_Slot = (InternalEObject)base_Slot;
+ base_Slot = (Slot)eResolveProxy(oldBase_Slot);
+ if (base_Slot != oldBase_Slot) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONNECTOR_CONFIGURATION__BASE_SLOT, oldBase_Slot, base_Slot));
+ }
+ }
+ return base_Slot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Slot basicGetBase_Slot() {
+ return base_Slot;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Slot(Slot newBase_Slot) {
+ Slot oldBase_Slot = base_Slot;
+ base_Slot = newBase_Slot;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONNECTOR_CONFIGURATION__BASE_SLOT, oldBase_Slot, base_Slot));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connector getConnector() {
+ if (connector != null && connector.eIsProxy()) {
+ InternalEObject oldConnector = (InternalEObject)connector;
+ connector = (Connector)eResolveProxy(oldConnector);
+ if (connector != oldConnector) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONNECTOR_CONFIGURATION__CONNECTOR, oldConnector, connector));
+ }
+ }
+ return connector;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connector basicGetConnector() {
+ return connector;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConnector(Connector newConnector) {
+ Connector oldConnector = connector;
+ connector = newConnector;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONNECTOR_CONFIGURATION__CONNECTOR, oldConnector, connector));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.CONNECTOR_CONFIGURATION__BASE_SLOT:
+ if (resolve) return getBase_Slot();
+ return basicGetBase_Slot();
+ case FCMPackage.CONNECTOR_CONFIGURATION__CONNECTOR:
+ if (resolve) return getConnector();
+ return basicGetConnector();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.CONNECTOR_CONFIGURATION__BASE_SLOT:
+ setBase_Slot((Slot)newValue);
+ return;
+ case FCMPackage.CONNECTOR_CONFIGURATION__CONNECTOR:
+ setConnector((Connector)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONNECTOR_CONFIGURATION__BASE_SLOT:
+ setBase_Slot((Slot)null);
+ return;
+ case FCMPackage.CONNECTOR_CONFIGURATION__CONNECTOR:
+ setConnector((Connector)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONNECTOR_CONFIGURATION__BASE_SLOT:
+ return base_Slot != null;
+ case FCMPackage.CONNECTOR_CONFIGURATION__CONNECTOR:
+ return connector != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConnectorConfigurationImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConnectorImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConnectorImpl.java
new file mode 100644
index 00000000000..3543680b3f0
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ConnectorImpl.java
@@ -0,0 +1,282 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.Connector;
+import FCM.FCMPackage;
+import FCM.InteractionComponent;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Connector</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ConnectorImpl#getBase_Connector <em>Base Connector</em>}</li>
+ * <li>{@link FCM.impl.ConnectorImpl#getIc <em>Ic</em>}</li>
+ * <li>{@link FCM.impl.ConnectorImpl#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConnectorImpl extends ConfigurableElementInstanceImpl implements Connector {
+ /**
+ * The cached value of the '{@link #getBase_Connector() <em>Base Connector</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Connector()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Connector base_Connector;
+
+ /**
+ * The cached value of the '{@link #getIc() <em>Ic</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIc()
+ * @generated
+ * @ordered
+ */
+ protected InteractionComponent ic;
+
+ /**
+ * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_Property;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ConnectorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CONNECTOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Connector getBase_Connector() {
+ if (base_Connector != null && base_Connector.eIsProxy()) {
+ InternalEObject oldBase_Connector = (InternalEObject)base_Connector;
+ base_Connector = (org.eclipse.uml2.uml.Connector)eResolveProxy(oldBase_Connector);
+ if (base_Connector != oldBase_Connector) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONNECTOR__BASE_CONNECTOR, oldBase_Connector, base_Connector));
+ }
+ }
+ return base_Connector;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Connector basicGetBase_Connector() {
+ return base_Connector;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Connector(org.eclipse.uml2.uml.Connector newBase_Connector) {
+ org.eclipse.uml2.uml.Connector oldBase_Connector = base_Connector;
+ base_Connector = newBase_Connector;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONNECTOR__BASE_CONNECTOR, oldBase_Connector, base_Connector));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InteractionComponent getIc() {
+ if (ic != null && ic.eIsProxy()) {
+ InternalEObject oldIc = (InternalEObject)ic;
+ ic = (InteractionComponent)eResolveProxy(oldIc);
+ if (ic != oldIc) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONNECTOR__IC, oldIc, ic));
+ }
+ }
+ return ic;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InteractionComponent basicGetIc() {
+ return ic;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setIc(InteractionComponent newIc) {
+ InteractionComponent oldIc = ic;
+ ic = newIc;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONNECTOR__IC, oldIc, ic));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_Property() {
+ if (base_Property != null && base_Property.eIsProxy()) {
+ InternalEObject oldBase_Property = (InternalEObject)base_Property;
+ base_Property = (Property)eResolveProxy(oldBase_Property);
+ if (base_Property != oldBase_Property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONNECTOR__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+ }
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_Property() {
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Property(Property newBase_Property) {
+ Property oldBase_Property = base_Property;
+ base_Property = newBase_Property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONNECTOR__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.CONNECTOR__BASE_CONNECTOR:
+ if (resolve) return getBase_Connector();
+ return basicGetBase_Connector();
+ case FCMPackage.CONNECTOR__IC:
+ if (resolve) return getIc();
+ return basicGetIc();
+ case FCMPackage.CONNECTOR__BASE_PROPERTY:
+ if (resolve) return getBase_Property();
+ return basicGetBase_Property();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.CONNECTOR__BASE_CONNECTOR:
+ setBase_Connector((org.eclipse.uml2.uml.Connector)newValue);
+ return;
+ case FCMPackage.CONNECTOR__IC:
+ setIc((InteractionComponent)newValue);
+ return;
+ case FCMPackage.CONNECTOR__BASE_PROPERTY:
+ setBase_Property((Property)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONNECTOR__BASE_CONNECTOR:
+ setBase_Connector((org.eclipse.uml2.uml.Connector)null);
+ return;
+ case FCMPackage.CONNECTOR__IC:
+ setIc((InteractionComponent)null);
+ return;
+ case FCMPackage.CONNECTOR__BASE_PROPERTY:
+ setBase_Property((Property)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONNECTOR__BASE_CONNECTOR:
+ return base_Connector != null;
+ case FCMPackage.CONNECTOR__IC:
+ return ic != null;
+ case FCMPackage.CONNECTOR__BASE_PROPERTY:
+ return base_Property != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ConnectorImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ContainerPortImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ContainerPortImpl.java
new file mode 100644
index 00000000000..8465eb2f3b4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ContainerPortImpl.java
@@ -0,0 +1,43 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ContainerPort;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Container Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class ContainerPortImpl extends PortImpl implements ContainerPort {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ContainerPortImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CONTAINER_PORT;
+ }
+
+} //ContainerPortImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ContainerRuleImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ContainerRuleImpl.java
new file mode 100644
index 00000000000..3c4f3b24954
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ContainerRuleImpl.java
@@ -0,0 +1,267 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import FCM.ConfigOption;
+import FCM.ContainerRule;
+import FCM.ContainerRuleKind;
+import FCM.FCMPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Container Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ContainerRuleImpl#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.impl.ContainerRuleImpl#getForConfig <em>For Config</em>}</li>
+ * <li>{@link FCM.impl.ContainerRuleImpl#getKind <em>Kind</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ContainerRuleImpl extends EObjectImpl implements ContainerRule {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * The cached value of the '{@link #getForConfig() <em>For Config</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getForConfig()
+ * @generated
+ * @ordered
+ */
+ protected EList<ConfigOption> forConfig;
+
+ /**
+ * The default value of the '{@link #getKind() <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKind()
+ * @generated
+ * @ordered
+ */
+ protected static final ContainerRuleKind KIND_EDEFAULT = ContainerRuleKind.COMPONENT_RULE;
+
+ /**
+ * The cached value of the '{@link #getKind() <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKind()
+ * @generated
+ * @ordered
+ */
+ protected ContainerRuleKind kind = KIND_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ContainerRuleImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CONTAINER_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.CONTAINER_RULE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONTAINER_RULE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ConfigOption> getForConfig() {
+ if (forConfig == null) {
+ forConfig = new EObjectResolvingEList<ConfigOption>(ConfigOption.class, this, FCMPackage.CONTAINER_RULE__FOR_CONFIG);
+ }
+ return forConfig;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ContainerRuleKind getKind() {
+ return kind;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKind(ContainerRuleKind newKind) {
+ ContainerRuleKind oldKind = kind;
+ kind = newKind == null ? KIND_EDEFAULT : newKind;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.CONTAINER_RULE__KIND, oldKind, kind));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.CONTAINER_RULE__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ case FCMPackage.CONTAINER_RULE__FOR_CONFIG:
+ return getForConfig();
+ case FCMPackage.CONTAINER_RULE__KIND:
+ return getKind();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.CONTAINER_RULE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ case FCMPackage.CONTAINER_RULE__FOR_CONFIG:
+ getForConfig().clear();
+ getForConfig().addAll((Collection<? extends ConfigOption>)newValue);
+ return;
+ case FCMPackage.CONTAINER_RULE__KIND:
+ setKind((ContainerRuleKind)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONTAINER_RULE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ case FCMPackage.CONTAINER_RULE__FOR_CONFIG:
+ getForConfig().clear();
+ return;
+ case FCMPackage.CONTAINER_RULE__KIND:
+ setKind(KIND_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CONTAINER_RULE__BASE_CLASS:
+ return base_Class != null;
+ case FCMPackage.CONTAINER_RULE__FOR_CONFIG:
+ return forConfig != null && !forConfig.isEmpty();
+ case FCMPackage.CONTAINER_RULE__KIND:
+ return kind != KIND_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (kind: ");
+ result.append(kind);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ContainerRuleImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CopyAttributeValueImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CopyAttributeValueImpl.java
new file mode 100644
index 00000000000..73756da471c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CopyAttributeValueImpl.java
@@ -0,0 +1,222 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.CopyAttributeValue;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Copy Attribute Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.CopyAttributeValueImpl#getSource <em>Source</em>}</li>
+ * <li>{@link FCM.impl.CopyAttributeValueImpl#getBase_Property <em>Base Property</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CopyAttributeValueImpl extends EObjectImpl implements CopyAttributeValue {
+ /**
+ * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSource()
+ * @generated
+ * @ordered
+ */
+ protected Property source;
+
+ /**
+ * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_Property;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CopyAttributeValueImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.COPY_ATTRIBUTE_VALUE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getSource() {
+ if (source != null && source.eIsProxy()) {
+ InternalEObject oldSource = (InternalEObject)source;
+ source = (Property)eResolveProxy(oldSource);
+ if (source != oldSource) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.COPY_ATTRIBUTE_VALUE__SOURCE, oldSource, source));
+ }
+ }
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetSource() {
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSource(Property newSource) {
+ Property oldSource = source;
+ source = newSource;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.COPY_ATTRIBUTE_VALUE__SOURCE, oldSource, source));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_Property() {
+ if (base_Property != null && base_Property.eIsProxy()) {
+ InternalEObject oldBase_Property = (InternalEObject)base_Property;
+ base_Property = (Property)eResolveProxy(oldBase_Property);
+ if (base_Property != oldBase_Property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.COPY_ATTRIBUTE_VALUE__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+ }
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_Property() {
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Property(Property newBase_Property) {
+ Property oldBase_Property = base_Property;
+ base_Property = newBase_Property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.COPY_ATTRIBUTE_VALUE__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.COPY_ATTRIBUTE_VALUE__SOURCE:
+ if (resolve) return getSource();
+ return basicGetSource();
+ case FCMPackage.COPY_ATTRIBUTE_VALUE__BASE_PROPERTY:
+ if (resolve) return getBase_Property();
+ return basicGetBase_Property();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.COPY_ATTRIBUTE_VALUE__SOURCE:
+ setSource((Property)newValue);
+ return;
+ case FCMPackage.COPY_ATTRIBUTE_VALUE__BASE_PROPERTY:
+ setBase_Property((Property)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.COPY_ATTRIBUTE_VALUE__SOURCE:
+ setSource((Property)null);
+ return;
+ case FCMPackage.COPY_ATTRIBUTE_VALUE__BASE_PROPERTY:
+ setBase_Property((Property)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.COPY_ATTRIBUTE_VALUE__SOURCE:
+ return source != null;
+ case FCMPackage.COPY_ATTRIBUTE_VALUE__BASE_PROPERTY:
+ return base_Property != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //CopyAttributeValueImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CppLibraryImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CppLibraryImpl.java
new file mode 100644
index 00000000000..a328442d1f7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/CppLibraryImpl.java
@@ -0,0 +1,257 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import FCM.CppLibrary;
+import FCM.FCMPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cpp Library</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.CppLibraryImpl#getMacros <em>Macros</em>}</li>
+ * <li>{@link FCM.impl.CppLibraryImpl#getLibs <em>Libs</em>}</li>
+ * <li>{@link FCM.impl.CppLibraryImpl#getLibPaths <em>Lib Paths</em>}</li>
+ * <li>{@link FCM.impl.CppLibraryImpl#getIncludePaths <em>Include Paths</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CppLibraryImpl extends ExternalLibraryImpl implements CppLibrary {
+ /**
+ * The cached value of the '{@link #getMacros() <em>Macros</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMacros()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> macros;
+
+ /**
+ * The cached value of the '{@link #getLibs() <em>Libs</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLibs()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> libs;
+
+ /**
+ * The cached value of the '{@link #getLibPaths() <em>Lib Paths</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLibPaths()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> libPaths;
+
+ /**
+ * The cached value of the '{@link #getIncludePaths() <em>Include Paths</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncludePaths()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> includePaths;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected CppLibraryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.CPP_LIBRARY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getMacros() {
+ if (macros == null) {
+ macros = new EDataTypeEList<String>(String.class, this, FCMPackage.CPP_LIBRARY__MACROS);
+ }
+ return macros;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getLibs() {
+ if (libs == null) {
+ libs = new EDataTypeEList<String>(String.class, this, FCMPackage.CPP_LIBRARY__LIBS);
+ }
+ return libs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getLibPaths() {
+ if (libPaths == null) {
+ libPaths = new EDataTypeEList<String>(String.class, this, FCMPackage.CPP_LIBRARY__LIB_PATHS);
+ }
+ return libPaths;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getIncludePaths() {
+ if (includePaths == null) {
+ includePaths = new EDataTypeEList<String>(String.class, this, FCMPackage.CPP_LIBRARY__INCLUDE_PATHS);
+ }
+ return includePaths;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.CPP_LIBRARY__MACROS:
+ return getMacros();
+ case FCMPackage.CPP_LIBRARY__LIBS:
+ return getLibs();
+ case FCMPackage.CPP_LIBRARY__LIB_PATHS:
+ return getLibPaths();
+ case FCMPackage.CPP_LIBRARY__INCLUDE_PATHS:
+ return getIncludePaths();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.CPP_LIBRARY__MACROS:
+ getMacros().clear();
+ getMacros().addAll((Collection<? extends String>)newValue);
+ return;
+ case FCMPackage.CPP_LIBRARY__LIBS:
+ getLibs().clear();
+ getLibs().addAll((Collection<? extends String>)newValue);
+ return;
+ case FCMPackage.CPP_LIBRARY__LIB_PATHS:
+ getLibPaths().clear();
+ getLibPaths().addAll((Collection<? extends String>)newValue);
+ return;
+ case FCMPackage.CPP_LIBRARY__INCLUDE_PATHS:
+ getIncludePaths().clear();
+ getIncludePaths().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CPP_LIBRARY__MACROS:
+ getMacros().clear();
+ return;
+ case FCMPackage.CPP_LIBRARY__LIBS:
+ getLibs().clear();
+ return;
+ case FCMPackage.CPP_LIBRARY__LIB_PATHS:
+ getLibPaths().clear();
+ return;
+ case FCMPackage.CPP_LIBRARY__INCLUDE_PATHS:
+ getIncludePaths().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.CPP_LIBRARY__MACROS:
+ return macros != null && !macros.isEmpty();
+ case FCMPackage.CPP_LIBRARY__LIBS:
+ return libs != null && !libs.isEmpty();
+ case FCMPackage.CPP_LIBRARY__LIB_PATHS:
+ return libPaths != null && !libPaths.isEmpty();
+ case FCMPackage.CPP_LIBRARY__INCLUDE_PATHS:
+ return includePaths != null && !includePaths.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (macros: ");
+ result.append(macros);
+ result.append(", libs: ");
+ result.append(libs);
+ result.append(", libPaths: ");
+ result.append(libPaths);
+ result.append(", includePaths: ");
+ result.append(includePaths);
+ result.append(')');
+ return result.toString();
+ }
+
+} //CppLibraryImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/DeploymentPlanImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/DeploymentPlanImpl.java
new file mode 100644
index 00000000000..9f199563264
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/DeploymentPlanImpl.java
@@ -0,0 +1,222 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.DeploymentPlan;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Deployment Plan</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.DeploymentPlanImpl#getMainInstance <em>Main Instance</em>}</li>
+ * <li>{@link FCM.impl.DeploymentPlanImpl#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DeploymentPlanImpl extends EObjectImpl implements DeploymentPlan {
+ /**
+ * The cached value of the '{@link #getMainInstance() <em>Main Instance</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getMainInstance()
+ * @generated
+ * @ordered
+ */
+ protected InstanceSpecification mainInstance;
+
+ /**
+ * The cached value of the '{@link #getBase_Package() <em>Base Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Package()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Package base_Package;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DeploymentPlanImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.DEPLOYMENT_PLAN;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanceSpecification getMainInstance() {
+ if (mainInstance != null && mainInstance.eIsProxy()) {
+ InternalEObject oldMainInstance = (InternalEObject)mainInstance;
+ mainInstance = (InstanceSpecification)eResolveProxy(oldMainInstance);
+ if (mainInstance != oldMainInstance) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.DEPLOYMENT_PLAN__MAIN_INSTANCE, oldMainInstance, mainInstance));
+ }
+ }
+ return mainInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanceSpecification basicGetMainInstance() {
+ return mainInstance;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setMainInstance(InstanceSpecification newMainInstance) {
+ InstanceSpecification oldMainInstance = mainInstance;
+ mainInstance = newMainInstance;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.DEPLOYMENT_PLAN__MAIN_INSTANCE, oldMainInstance, mainInstance));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package getBase_Package() {
+ if (base_Package != null && base_Package.eIsProxy()) {
+ InternalEObject oldBase_Package = (InternalEObject)base_Package;
+ base_Package = (org.eclipse.uml2.uml.Package)eResolveProxy(oldBase_Package);
+ if (base_Package != oldBase_Package) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.DEPLOYMENT_PLAN__BASE_PACKAGE, oldBase_Package, base_Package));
+ }
+ }
+ return base_Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package basicGetBase_Package() {
+ return base_Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Package(org.eclipse.uml2.uml.Package newBase_Package) {
+ org.eclipse.uml2.uml.Package oldBase_Package = base_Package;
+ base_Package = newBase_Package;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.DEPLOYMENT_PLAN__BASE_PACKAGE, oldBase_Package, base_Package));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.DEPLOYMENT_PLAN__MAIN_INSTANCE:
+ if (resolve) return getMainInstance();
+ return basicGetMainInstance();
+ case FCMPackage.DEPLOYMENT_PLAN__BASE_PACKAGE:
+ if (resolve) return getBase_Package();
+ return basicGetBase_Package();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.DEPLOYMENT_PLAN__MAIN_INSTANCE:
+ setMainInstance((InstanceSpecification)newValue);
+ return;
+ case FCMPackage.DEPLOYMENT_PLAN__BASE_PACKAGE:
+ setBase_Package((org.eclipse.uml2.uml.Package)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.DEPLOYMENT_PLAN__MAIN_INSTANCE:
+ setMainInstance((InstanceSpecification)null);
+ return;
+ case FCMPackage.DEPLOYMENT_PLAN__BASE_PACKAGE:
+ setBase_Package((org.eclipse.uml2.uml.Package)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.DEPLOYMENT_PLAN__MAIN_INSTANCE:
+ return mainInstance != null;
+ case FCMPackage.DEPLOYMENT_PLAN__BASE_PACKAGE:
+ return base_Package != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DeploymentPlanImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/DerivedElementImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/DerivedElementImpl.java
new file mode 100644
index 00000000000..2699b2e7490
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/DerivedElementImpl.java
@@ -0,0 +1,222 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.DerivedElement;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Derived Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.DerivedElementImpl#getBase_Element <em>Base Element</em>}</li>
+ * <li>{@link FCM.impl.DerivedElementImpl#getSource <em>Source</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DerivedElementImpl extends EObjectImpl implements DerivedElement {
+ /**
+ * The cached value of the '{@link #getBase_Element() <em>Base Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Element()
+ * @generated
+ * @ordered
+ */
+ protected Element base_Element;
+
+ /**
+ * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSource()
+ * @generated
+ * @ordered
+ */
+ protected Element source;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected DerivedElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.DERIVED_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getBase_Element() {
+ if (base_Element != null && base_Element.eIsProxy()) {
+ InternalEObject oldBase_Element = (InternalEObject)base_Element;
+ base_Element = (Element)eResolveProxy(oldBase_Element);
+ if (base_Element != oldBase_Element) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.DERIVED_ELEMENT__BASE_ELEMENT, oldBase_Element, base_Element));
+ }
+ }
+ return base_Element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element basicGetBase_Element() {
+ return base_Element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Element(Element newBase_Element) {
+ Element oldBase_Element = base_Element;
+ base_Element = newBase_Element;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.DERIVED_ELEMENT__BASE_ELEMENT, oldBase_Element, base_Element));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getSource() {
+ if (source != null && source.eIsProxy()) {
+ InternalEObject oldSource = (InternalEObject)source;
+ source = (Element)eResolveProxy(oldSource);
+ if (source != oldSource) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.DERIVED_ELEMENT__SOURCE, oldSource, source));
+ }
+ }
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element basicGetSource() {
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSource(Element newSource) {
+ Element oldSource = source;
+ source = newSource;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.DERIVED_ELEMENT__SOURCE, oldSource, source));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.DERIVED_ELEMENT__BASE_ELEMENT:
+ if (resolve) return getBase_Element();
+ return basicGetBase_Element();
+ case FCMPackage.DERIVED_ELEMENT__SOURCE:
+ if (resolve) return getSource();
+ return basicGetSource();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.DERIVED_ELEMENT__BASE_ELEMENT:
+ setBase_Element((Element)newValue);
+ return;
+ case FCMPackage.DERIVED_ELEMENT__SOURCE:
+ setSource((Element)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.DERIVED_ELEMENT__BASE_ELEMENT:
+ setBase_Element((Element)null);
+ return;
+ case FCMPackage.DERIVED_ELEMENT__SOURCE:
+ setSource((Element)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.DERIVED_ELEMENT__BASE_ELEMENT:
+ return base_Element != null;
+ case FCMPackage.DERIVED_ELEMENT__SOURCE:
+ return source != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //DerivedElementImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ExtendedSignatureImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ExtendedSignatureImpl.java
new file mode 100644
index 00000000000..c504990689a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ExtendedSignatureImpl.java
@@ -0,0 +1,222 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ExtendedSignature;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.TemplateSignature;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Extended Signature</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ExtendedSignatureImpl#getBase_TemplateSignature <em>Base Template Signature</em>}</li>
+ * <li>{@link FCM.impl.ExtendedSignatureImpl#getBaseSignature <em>Base Signature</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExtendedSignatureImpl extends EObjectImpl implements ExtendedSignature {
+ /**
+ * The cached value of the '{@link #getBase_TemplateSignature() <em>Base Template Signature</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_TemplateSignature()
+ * @generated
+ * @ordered
+ */
+ protected TemplateSignature base_TemplateSignature;
+
+ /**
+ * The cached value of the '{@link #getBaseSignature() <em>Base Signature</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBaseSignature()
+ * @generated
+ * @ordered
+ */
+ protected TemplateSignature baseSignature;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExtendedSignatureImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.EXTENDED_SIGNATURE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateSignature getBase_TemplateSignature() {
+ if (base_TemplateSignature != null && base_TemplateSignature.eIsProxy()) {
+ InternalEObject oldBase_TemplateSignature = (InternalEObject)base_TemplateSignature;
+ base_TemplateSignature = (TemplateSignature)eResolveProxy(oldBase_TemplateSignature);
+ if (base_TemplateSignature != oldBase_TemplateSignature) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE, oldBase_TemplateSignature, base_TemplateSignature));
+ }
+ }
+ return base_TemplateSignature;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateSignature basicGetBase_TemplateSignature() {
+ return base_TemplateSignature;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_TemplateSignature(TemplateSignature newBase_TemplateSignature) {
+ TemplateSignature oldBase_TemplateSignature = base_TemplateSignature;
+ base_TemplateSignature = newBase_TemplateSignature;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE, oldBase_TemplateSignature, base_TemplateSignature));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateSignature getBaseSignature() {
+ if (baseSignature != null && baseSignature.eIsProxy()) {
+ InternalEObject oldBaseSignature = (InternalEObject)baseSignature;
+ baseSignature = (TemplateSignature)eResolveProxy(oldBaseSignature);
+ if (baseSignature != oldBaseSignature) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.EXTENDED_SIGNATURE__BASE_SIGNATURE, oldBaseSignature, baseSignature));
+ }
+ }
+ return baseSignature;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateSignature basicGetBaseSignature() {
+ return baseSignature;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBaseSignature(TemplateSignature newBaseSignature) {
+ TemplateSignature oldBaseSignature = baseSignature;
+ baseSignature = newBaseSignature;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.EXTENDED_SIGNATURE__BASE_SIGNATURE, oldBaseSignature, baseSignature));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE:
+ if (resolve) return getBase_TemplateSignature();
+ return basicGetBase_TemplateSignature();
+ case FCMPackage.EXTENDED_SIGNATURE__BASE_SIGNATURE:
+ if (resolve) return getBaseSignature();
+ return basicGetBaseSignature();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE:
+ setBase_TemplateSignature((TemplateSignature)newValue);
+ return;
+ case FCMPackage.EXTENDED_SIGNATURE__BASE_SIGNATURE:
+ setBaseSignature((TemplateSignature)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE:
+ setBase_TemplateSignature((TemplateSignature)null);
+ return;
+ case FCMPackage.EXTENDED_SIGNATURE__BASE_SIGNATURE:
+ setBaseSignature((TemplateSignature)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE:
+ return base_TemplateSignature != null;
+ case FCMPackage.EXTENDED_SIGNATURE__BASE_SIGNATURE:
+ return baseSignature != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExtendedSignatureImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ExternalLibraryImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ExternalLibraryImpl.java
new file mode 100644
index 00000000000..c82b9a1c26f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ExternalLibraryImpl.java
@@ -0,0 +1,160 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ExternalLibrary;
+import FCM.FCMPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>External Library</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ExternalLibraryImpl#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ExternalLibraryImpl extends EObjectImpl implements ExternalLibrary {
+ /**
+ * The cached value of the '{@link #getBase_Package() <em>Base Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Package()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Package base_Package;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ExternalLibraryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.EXTERNAL_LIBRARY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package getBase_Package() {
+ if (base_Package != null && base_Package.eIsProxy()) {
+ InternalEObject oldBase_Package = (InternalEObject)base_Package;
+ base_Package = (org.eclipse.uml2.uml.Package)eResolveProxy(oldBase_Package);
+ if (base_Package != oldBase_Package) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.EXTERNAL_LIBRARY__BASE_PACKAGE, oldBase_Package, base_Package));
+ }
+ }
+ return base_Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package basicGetBase_Package() {
+ return base_Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Package(org.eclipse.uml2.uml.Package newBase_Package) {
+ org.eclipse.uml2.uml.Package oldBase_Package = base_Package;
+ base_Package = newBase_Package;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.EXTERNAL_LIBRARY__BASE_PACKAGE, oldBase_Package, base_Package));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.EXTERNAL_LIBRARY__BASE_PACKAGE:
+ if (resolve) return getBase_Package();
+ return basicGetBase_Package();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.EXTERNAL_LIBRARY__BASE_PACKAGE:
+ setBase_Package((org.eclipse.uml2.uml.Package)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.EXTERNAL_LIBRARY__BASE_PACKAGE:
+ setBase_Package((org.eclipse.uml2.uml.Package)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.EXTERNAL_LIBRARY__BASE_PACKAGE:
+ return base_Package != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ExternalLibraryImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/FCMFactoryImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/FCMFactoryImpl.java
new file mode 100644
index 00000000000..04dacdd3575
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/FCMFactoryImpl.java
@@ -0,0 +1,611 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.*;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import FCM.ActualChoice;
+import FCM.AutoIndex;
+import FCM.AutoIndexPerNode;
+import FCM.CompImplTemplate;
+import FCM.ConfigOption;
+import FCM.Configuration;
+import FCM.ConfigurationProperty;
+import FCM.Connector;
+import FCM.ConnectorConfiguration;
+import FCM.ContainerPort;
+import FCM.ContainerRule;
+import FCM.CopyAttributeValue;
+import FCM.CppLibrary;
+import FCM.DeploymentPlan;
+import FCM.DerivedElement;
+import FCM.ExtendedSignature;
+import FCM.ExternalLibrary;
+import FCM.FCMFactory;
+import FCM.FCMPackage;
+import FCM.ImplementationGroup;
+import FCM.ImplementationProperties;
+import FCM.InitPrecedence;
+import FCM.InstanceConfigurator;
+import FCM.InteractionComponent;
+import FCM.InterceptionKind;
+import FCM.InterceptionRule;
+import FCM.JavaLibrary;
+import FCM.OperatingSystem;
+import FCM.Part;
+import FCM.Port;
+import FCM.PortKind;
+import FCM.RuleApplication;
+import FCM.Singleton;
+import FCM.Target;
+import FCM.TargetArchitecture;
+import FCM.Template;
+import FCM.TemplateKind;
+import FCM.UseInstanceConfigurator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FCMFactoryImpl extends EFactoryImpl implements FCMFactory {
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static FCMFactory init() {
+ try {
+ FCMFactory theFCMFactory = (FCMFactory)EPackage.Registry.INSTANCE.getEFactory("http://papyrus/FCMProfile/1");
+ if (theFCMFactory != null) {
+ return theFCMFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new FCMFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FCMFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case FCMPackage.TEMPLATE: return createTemplate();
+ case FCMPackage.CONFIGURATION_PROPERTY: return createConfigurationProperty();
+ case FCMPackage.IMPLEMENTATION_GROUP: return createImplementationGroup();
+ case FCMPackage.RULE_APPLICATION: return createRuleApplication();
+ case FCMPackage.CONTAINER_RULE: return createContainerRule();
+ case FCMPackage.CONFIG_OPTION: return createConfigOption();
+ case FCMPackage.SINGLETON: return createSingleton();
+ case FCMPackage.INTERACTION_COMPONENT: return createInteractionComponent();
+ case FCMPackage.PORT_KIND: return createPortKind();
+ case FCMPackage.PORT: return createPort();
+ case FCMPackage.CONNECTOR: return createConnector();
+ case FCMPackage.DEPLOYMENT_PLAN: return createDeploymentPlan();
+ case FCMPackage.DERIVED_ELEMENT: return createDerivedElement();
+ case FCMPackage.COMP_IMPL_TEMPLATE: return createCompImplTemplate();
+ case FCMPackage.CPP_LIBRARY: return createCppLibrary();
+ case FCMPackage.EXTERNAL_LIBRARY: return createExternalLibrary();
+ case FCMPackage.JAVA_LIBRARY: return createJavaLibrary();
+ case FCMPackage.IMPLEMENTATION_PROPERTIES: return createImplementationProperties();
+ case FCMPackage.OPERATING_SYSTEM: return createOperatingSystem();
+ case FCMPackage.TARGET_ARCHITECTURE: return createTargetArchitecture();
+ case FCMPackage.CONFIGURATION: return createConfiguration();
+ case FCMPackage.INTERCEPTION_RULE: return createInterceptionRule();
+ case FCMPackage.TARGET: return createTarget();
+ case FCMPackage.PART: return createPart();
+ case FCMPackage.COPY_ATTRIBUTE_VALUE: return createCopyAttributeValue();
+ case FCMPackage.AUTO_INDEX: return createAutoIndex();
+ case FCMPackage.AUTO_INDEX_PER_NODE: return createAutoIndexPerNode();
+ case FCMPackage.INIT_PRECEDENCE: return createInitPrecedence();
+ case FCMPackage.CONNECTOR_CONFIGURATION: return createConnectorConfiguration();
+ case FCMPackage.EXTENDED_SIGNATURE: return createExtendedSignature();
+ case FCMPackage.CONTAINER_PORT: return createContainerPort();
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR: return createUseInstanceConfigurator();
+ case FCMPackage.INSTANCE_CONFIGURATOR: return createInstanceConfigurator();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object createFromString(EDataType eDataType, String initialValue) {
+ switch (eDataType.getClassifierID()) {
+ case FCMPackage.TEMPLATE_KIND:
+ return createTemplateKindFromString(eDataType, initialValue);
+ case FCMPackage.ACTUAL_CHOICE:
+ return createActualChoiceFromString(eDataType, initialValue);
+ case FCMPackage.CONTAINER_RULE_KIND:
+ return createContainerRuleKindFromString(eDataType, initialValue);
+ case FCMPackage.INTERCEPTION_KIND:
+ return createInterceptionKindFromString(eDataType, initialValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String convertToString(EDataType eDataType, Object instanceValue) {
+ switch (eDataType.getClassifierID()) {
+ case FCMPackage.TEMPLATE_KIND:
+ return convertTemplateKindToString(eDataType, instanceValue);
+ case FCMPackage.ACTUAL_CHOICE:
+ return convertActualChoiceToString(eDataType, instanceValue);
+ case FCMPackage.CONTAINER_RULE_KIND:
+ return convertContainerRuleKindToString(eDataType, instanceValue);
+ case FCMPackage.INTERCEPTION_KIND:
+ return convertInterceptionKindToString(eDataType, instanceValue);
+ default:
+ throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Template createTemplate() {
+ TemplateImpl template = new TemplateImpl();
+ return template;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ContainerRule createContainerRule() {
+ ContainerRuleImpl containerRule = new ContainerRuleImpl();
+ return containerRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Port createPort() {
+ PortImpl port = new PortImpl();
+ return port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortKind createPortKind() {
+ PortKindImpl portKind = new PortKindImpl();
+ return portKind;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CompImplTemplate createCompImplTemplate() {
+ CompImplTemplateImpl compImplTemplate = new CompImplTemplateImpl();
+ return compImplTemplate;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ConfigOption createConfigOption() {
+ ConfigOptionImpl configOption = new ConfigOptionImpl();
+ return configOption;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Singleton createSingleton() {
+ SingletonImpl singleton = new SingletonImpl();
+ return singleton;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InteractionComponent createInteractionComponent() {
+ InteractionComponentImpl interactionComponent = new InteractionComponentImpl();
+ return interactionComponent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Connector createConnector() {
+ ConnectorImpl connector = new ConnectorImpl();
+ return connector;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ConfigurationProperty createConfigurationProperty() {
+ ConfigurationPropertyImpl configurationProperty = new ConfigurationPropertyImpl();
+ return configurationProperty;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DeploymentPlan createDeploymentPlan() {
+ DeploymentPlanImpl deploymentPlan = new DeploymentPlanImpl();
+ return deploymentPlan;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public DerivedElement createDerivedElement() {
+ DerivedElementImpl derivedElement = new DerivedElementImpl();
+ return derivedElement;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CppLibrary createCppLibrary() {
+ CppLibraryImpl cppLibrary = new CppLibraryImpl();
+ return cppLibrary;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExternalLibrary createExternalLibrary() {
+ ExternalLibraryImpl externalLibrary = new ExternalLibraryImpl();
+ return externalLibrary;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ImplementationGroup createImplementationGroup() {
+ ImplementationGroupImpl implementationGroup = new ImplementationGroupImpl();
+ return implementationGroup;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public RuleApplication createRuleApplication() {
+ RuleApplicationImpl ruleApplication = new RuleApplicationImpl();
+ return ruleApplication;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public JavaLibrary createJavaLibrary() {
+ JavaLibraryImpl javaLibrary = new JavaLibraryImpl();
+ return javaLibrary;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ImplementationProperties createImplementationProperties() {
+ ImplementationPropertiesImpl implementationProperties = new ImplementationPropertiesImpl();
+ return implementationProperties;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatingSystem createOperatingSystem() {
+ OperatingSystemImpl operatingSystem = new OperatingSystemImpl();
+ return operatingSystem;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TargetArchitecture createTargetArchitecture() {
+ TargetArchitectureImpl targetArchitecture = new TargetArchitectureImpl();
+ return targetArchitecture;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Target createTarget() {
+ TargetImpl target = new TargetImpl();
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Part createPart() {
+ PartImpl part = new PartImpl();
+ return part;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public CopyAttributeValue createCopyAttributeValue() {
+ CopyAttributeValueImpl copyAttributeValue = new CopyAttributeValueImpl();
+ return copyAttributeValue;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AutoIndex createAutoIndex() {
+ AutoIndexImpl autoIndex = new AutoIndexImpl();
+ return autoIndex;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public AutoIndexPerNode createAutoIndexPerNode() {
+ AutoIndexPerNodeImpl autoIndexPerNode = new AutoIndexPerNodeImpl();
+ return autoIndexPerNode;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InitPrecedence createInitPrecedence() {
+ InitPrecedenceImpl initPrecedence = new InitPrecedenceImpl();
+ return initPrecedence;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ConnectorConfiguration createConnectorConfiguration() {
+ ConnectorConfigurationImpl connectorConfiguration = new ConnectorConfigurationImpl();
+ return connectorConfiguration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ExtendedSignature createExtendedSignature() {
+ ExtendedSignatureImpl extendedSignature = new ExtendedSignatureImpl();
+ return extendedSignature;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ContainerPort createContainerPort() {
+ ContainerPortImpl containerPort = new ContainerPortImpl();
+ return containerPort;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UseInstanceConfigurator createUseInstanceConfigurator() {
+ UseInstanceConfiguratorImpl useInstanceConfigurator = new UseInstanceConfiguratorImpl();
+ return useInstanceConfigurator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanceConfigurator createInstanceConfigurator() {
+ InstanceConfiguratorImpl instanceConfigurator = new InstanceConfiguratorImpl();
+ return instanceConfigurator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Configuration createConfiguration() {
+ ConfigurationImpl configuration = new ConfigurationImpl();
+ return configuration;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterceptionRule createInterceptionRule() {
+ InterceptionRuleImpl interceptionRule = new InterceptionRuleImpl();
+ return interceptionRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateKind createTemplateKindFromString(EDataType eDataType, String initialValue) {
+ TemplateKind result = TemplateKind.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertTemplateKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActualChoice createActualChoiceFromString(EDataType eDataType, String initialValue) {
+ ActualChoice result = ActualChoice.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertActualChoiceToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ContainerRuleKind createContainerRuleKindFromString(EDataType eDataType, String initialValue) {
+ ContainerRuleKind result = ContainerRuleKind.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertContainerRuleKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterceptionKind createInterceptionKindFromString(EDataType eDataType, String initialValue) {
+ InterceptionKind result = InterceptionKind.get(initialValue);
+ if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+ return result;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String convertInterceptionKindToString(EDataType eDataType, Object instanceValue) {
+ return instanceValue == null ? null : instanceValue.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FCMPackage getFCMPackage() {
+ return (FCMPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static FCMPackage getPackage() {
+ return FCMPackage.eINSTANCE;
+ }
+
+} //FCMFactoryImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/FCMPackageImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/FCMPackageImpl.java
new file mode 100644
index 00000000000..b7e3ba7d3db
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/FCMPackageImpl.java
@@ -0,0 +1,1836 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.uml2.types.TypesPackage;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import FCM.ActualChoice;
+import FCM.AutoIndex;
+import FCM.AutoIndexPerNode;
+import FCM.CompImplTemplate;
+import FCM.ConfigOption;
+import FCM.ConfigurableElementInstance;
+import FCM.Configuration;
+import FCM.ConfigurationProperty;
+import FCM.Connector;
+import FCM.ConnectorConfiguration;
+import FCM.ContainerPort;
+import FCM.ContainerRule;
+import FCM.ContainerRuleKind;
+import FCM.CopyAttributeValue;
+import FCM.CppLibrary;
+import FCM.DeploymentPlan;
+import FCM.DerivedElement;
+import FCM.ExtendedSignature;
+import FCM.ExternalLibrary;
+import FCM.FCMFactory;
+import FCM.FCMPackage;
+import FCM.ImplementationGroup;
+import FCM.ImplementationProperties;
+import FCM.InitPrecedence;
+import FCM.InstanceConfigurator;
+import FCM.InteractionComponent;
+import FCM.InterceptionKind;
+import FCM.InterceptionRule;
+import FCM.JavaLibrary;
+import FCM.OperatingSystem;
+import FCM.Part;
+import FCM.Port;
+import FCM.PortKind;
+import FCM.RuleApplication;
+import FCM.Singleton;
+import FCM.Target;
+import FCM.TargetArchitecture;
+import FCM.Template;
+import FCM.TemplateKind;
+import FCM.UseInstanceConfigurator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FCMPackageImpl extends EPackageImpl implements FCMPackage {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass templateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass containerRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass portEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass configurableElementInstanceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass portKindEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass compImplTemplateEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass configOptionEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass singletonEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass interactionComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass connectorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass configurationPropertyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass deploymentPlanEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass derivedElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass cppLibraryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass externalLibraryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass implementationGroupEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass ruleApplicationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass javaLibraryEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass implementationPropertiesEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass operatingSystemEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass targetArchitectureEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass targetEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass partEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass copyAttributeValueEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass autoIndexEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass autoIndexPerNodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass initPrecedenceEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass connectorConfigurationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass extendedSignatureEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass containerPortEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass useInstanceConfiguratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass instanceConfiguratorEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass configurationEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass interceptionRuleEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum templateKindEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum actualChoiceEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum containerRuleKindEEnum = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EEnum interceptionKindEEnum = null;
+
+ /**
+ * Creates an instance of the model <b>Package</b>, registered with
+ * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+ * package URI value.
+ * <p>Note: the correct way to create the package is via the static
+ * factory method {@link #init init()}, which also performs
+ * initialization of the package, or returns the registered package,
+ * if one already exists.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see org.eclipse.emf.ecore.EPackage.Registry
+ * @see FCM.FCMPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private FCMPackageImpl() {
+ super(eNS_URI, FCMFactory.eINSTANCE);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static boolean isInited = false;
+
+ /**
+ * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+ *
+ * <p>This method is used to initialize {@link FCMPackage#eINSTANCE} when that field is accessed.
+ * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * @see #eNS_URI
+ * @see #createPackageContents()
+ * @see #initializePackageContents()
+ * @generated
+ */
+ public static FCMPackage init() {
+ if (isInited) return (FCMPackage)EPackage.Registry.INSTANCE.getEPackage(FCMPackage.eNS_URI);
+
+ // Obtain or create and register package
+ FCMPackageImpl theFCMPackage = (FCMPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FCMPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FCMPackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theFCMPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theFCMPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theFCMPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(FCMPackage.eNS_URI, theFCMPackage);
+ return theFCMPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTemplate() {
+ return templateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTemplate_TemplateParams() {
+ return (EReference)templateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTemplate_Base_Element() {
+ return (EReference)templateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTemplate_Kind() {
+ return (EAttribute)templateEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTemplate_ActualChoice() {
+ return (EAttribute)templateEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getContainerRule() {
+ return containerRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getContainerRule_Base_Class() {
+ return (EReference)containerRuleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getContainerRule_ForConfig() {
+ return (EReference)containerRuleEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getContainerRule_Kind() {
+ return (EAttribute)containerRuleEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPort() {
+ return portEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPort_Base_Port() {
+ return (EReference)portEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPort_Kind() {
+ return (EReference)portEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPort_ProvidedInterface() {
+ return (EReference)portEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPort_RequiredInterface() {
+ return (EReference)portEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPort_Conjugated() {
+ return (EAttribute)portEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConfigurableElementInstance() {
+ return configurableElementInstanceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConfigurableElementInstance_Configuration() {
+ return (EReference)configurableElementInstanceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPortKind() {
+ return portKindEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortKind_Base_Class() {
+ return (EReference)portKindEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortKind_ProvidedInterface() {
+ return (EReference)portKindEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPortKind_RequiredInterface() {
+ return (EReference)portKindEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getPortKind_ExtendedPort() {
+ return (EAttribute)portKindEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCompImplTemplate() {
+ return compImplTemplateEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCompImplTemplate_TemplateDefs() {
+ return (EAttribute)compImplTemplateEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCompImplTemplate_Base_Class() {
+ return (EReference)compImplTemplateEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConfigOption() {
+ return configOptionEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConfigOption_Base_Class() {
+ return (EReference)configOptionEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSingleton() {
+ return singletonEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSingleton_Base_Class() {
+ return (EReference)singletonEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInteractionComponent() {
+ return interactionComponentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInteractionComponent_ForDistribution() {
+ return (EAttribute)interactionComponentEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInteractionComponent_ConnectionPattern() {
+ return (EReference)interactionComponentEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInteractionComponent_Base_Class() {
+ return (EReference)interactionComponentEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConnector() {
+ return connectorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnector_Base_Connector() {
+ return (EReference)connectorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnector_Ic() {
+ return (EReference)connectorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnector_Base_Property() {
+ return (EReference)connectorEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConfigurationProperty() {
+ return configurationPropertyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConfigurationProperty_Base_Property() {
+ return (EReference)configurationPropertyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDeploymentPlan() {
+ return deploymentPlanEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeploymentPlan_MainInstance() {
+ return (EReference)deploymentPlanEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDeploymentPlan_Base_Package() {
+ return (EReference)deploymentPlanEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getDerivedElement() {
+ return derivedElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDerivedElement_Base_Element() {
+ return (EReference)derivedElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getDerivedElement_Source() {
+ return (EReference)derivedElementEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCppLibrary() {
+ return cppLibraryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppLibrary_Macros() {
+ return (EAttribute)cppLibraryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppLibrary_Libs() {
+ return (EAttribute)cppLibraryEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppLibrary_LibPaths() {
+ return (EAttribute)cppLibraryEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getCppLibrary_IncludePaths() {
+ return (EAttribute)cppLibraryEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExternalLibrary() {
+ return externalLibraryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExternalLibrary_Base_Package() {
+ return (EReference)externalLibraryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getImplementationGroup() {
+ return implementationGroupEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getImplementationGroup_Base_Class() {
+ return (EReference)implementationGroupEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getRuleApplication() {
+ return ruleApplicationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRuleApplication_Base_Class() {
+ return (EReference)ruleApplicationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRuleApplication_ContainerRule() {
+ return (EReference)ruleApplicationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getRuleApplication_Base_Package() {
+ return (EReference)ruleApplicationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getJavaLibrary() {
+ return javaLibraryEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getJavaLibrary_ClassPath() {
+ return (EAttribute)javaLibraryEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getImplementationProperties() {
+ return implementationPropertiesEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getImplementationProperties_SizeRAM() {
+ return (EAttribute)implementationPropertiesEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getImplementationProperties_SupportedOS() {
+ return (EReference)implementationPropertiesEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getImplementationProperties_Arch() {
+ return (EReference)implementationPropertiesEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getImplementationProperties_Base_Class() {
+ return (EReference)implementationPropertiesEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getImplementationProperties_SizeROM() {
+ return (EAttribute)implementationPropertiesEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getImplementationProperties_SupportedTargetArch() {
+ return (EReference)implementationPropertiesEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getOperatingSystem() {
+ return operatingSystemEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getOperatingSystem_Base_Class() {
+ return (EReference)operatingSystemEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTargetArchitecture() {
+ return targetArchitectureEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTargetArchitecture_Base_Class() {
+ return (EReference)targetArchitectureEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getTarget() {
+ return targetEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTarget_TargetArch() {
+ return (EReference)targetEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTarget_Options() {
+ return (EReference)targetEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTarget_Base_Node() {
+ return (EReference)targetEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getTarget_UsedOS() {
+ return (EReference)targetEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTarget_AvailRAM() {
+ return (EAttribute)targetEClass.getEStructuralFeatures().get(4);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getTarget_AvailROM() {
+ return (EAttribute)targetEClass.getEStructuralFeatures().get(5);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getPart() {
+ return partEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPart_Base_Property() {
+ return (EReference)partEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getPart_ColocateWithPort() {
+ return (EReference)partEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getCopyAttributeValue() {
+ return copyAttributeValueEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCopyAttributeValue_Source() {
+ return (EReference)copyAttributeValueEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getCopyAttributeValue_Base_Property() {
+ return (EReference)copyAttributeValueEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAutoIndex() {
+ return autoIndexEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getAutoIndex_Base_Property() {
+ return (EReference)autoIndexEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getAutoIndexPerNode() {
+ return autoIndexPerNodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInitPrecedence() {
+ return initPrecedenceEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInitPrecedence_InvokeAfter() {
+ return (EReference)initPrecedenceEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInitPrecedence_InvokeBefore() {
+ return (EReference)initPrecedenceEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInitPrecedence_Base_Class() {
+ return (EReference)initPrecedenceEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConnectorConfiguration() {
+ return connectorConfigurationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnectorConfiguration_Base_Slot() {
+ return (EReference)connectorConfigurationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConnectorConfiguration_Connector() {
+ return (EReference)connectorConfigurationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getExtendedSignature() {
+ return extendedSignatureEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExtendedSignature_Base_TemplateSignature() {
+ return (EReference)extendedSignatureEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getExtendedSignature_BaseSignature() {
+ return (EReference)extendedSignatureEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getContainerPort() {
+ return containerPortEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getUseInstanceConfigurator() {
+ return useInstanceConfiguratorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUseInstanceConfigurator_Base_Class() {
+ return (EReference)useInstanceConfiguratorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getUseInstanceConfigurator_Configurator() {
+ return (EReference)useInstanceConfiguratorEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInstanceConfigurator() {
+ return instanceConfiguratorEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInstanceConfigurator_Base_Class() {
+ return (EReference)instanceConfiguratorEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getConfiguration() {
+ return configurationEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConfiguration_Base_Class() {
+ return (EReference)configurationEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConfiguration_ConfigOptions() {
+ return (EReference)configurationEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getConfiguration_DeploymentPlan() {
+ return (EReference)configurationEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getInterceptionRule() {
+ return interceptionRuleEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getInterceptionRule_InterceptionKind() {
+ return (EAttribute)interceptionRuleEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInterceptionRule_InterceptionSet() {
+ return (EReference)interceptionRuleEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInterceptionRule_Base_Property() {
+ return (EReference)interceptionRuleEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getInterceptionRule_Base_Operation() {
+ return (EReference)interceptionRuleEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getTemplateKind() {
+ return templateKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getActualChoice() {
+ return actualChoiceEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getContainerRuleKind() {
+ return containerRuleKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EEnum getInterceptionKind() {
+ return interceptionKindEEnum;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FCMFactory getFCMFactory() {
+ return (FCMFactory)getEFactoryInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isCreated = false;
+
+ /**
+ * Creates the meta-model objects for the package. This method is
+ * guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void createPackageContents() {
+ if (isCreated) return;
+ isCreated = true;
+
+ // Create classes and their features
+ templateEClass = createEClass(TEMPLATE);
+ createEReference(templateEClass, TEMPLATE__TEMPLATE_PARAMS);
+ createEReference(templateEClass, TEMPLATE__BASE_ELEMENT);
+ createEAttribute(templateEClass, TEMPLATE__KIND);
+ createEAttribute(templateEClass, TEMPLATE__ACTUAL_CHOICE);
+
+ configurationPropertyEClass = createEClass(CONFIGURATION_PROPERTY);
+ createEReference(configurationPropertyEClass, CONFIGURATION_PROPERTY__BASE_PROPERTY);
+
+ implementationGroupEClass = createEClass(IMPLEMENTATION_GROUP);
+ createEReference(implementationGroupEClass, IMPLEMENTATION_GROUP__BASE_CLASS);
+
+ ruleApplicationEClass = createEClass(RULE_APPLICATION);
+ createEReference(ruleApplicationEClass, RULE_APPLICATION__BASE_CLASS);
+ createEReference(ruleApplicationEClass, RULE_APPLICATION__CONTAINER_RULE);
+ createEReference(ruleApplicationEClass, RULE_APPLICATION__BASE_PACKAGE);
+
+ containerRuleEClass = createEClass(CONTAINER_RULE);
+ createEReference(containerRuleEClass, CONTAINER_RULE__BASE_CLASS);
+ createEReference(containerRuleEClass, CONTAINER_RULE__FOR_CONFIG);
+ createEAttribute(containerRuleEClass, CONTAINER_RULE__KIND);
+
+ configOptionEClass = createEClass(CONFIG_OPTION);
+ createEReference(configOptionEClass, CONFIG_OPTION__BASE_CLASS);
+
+ singletonEClass = createEClass(SINGLETON);
+ createEReference(singletonEClass, SINGLETON__BASE_CLASS);
+
+ interactionComponentEClass = createEClass(INTERACTION_COMPONENT);
+ createEAttribute(interactionComponentEClass, INTERACTION_COMPONENT__FOR_DISTRIBUTION);
+ createEReference(interactionComponentEClass, INTERACTION_COMPONENT__CONNECTION_PATTERN);
+ createEReference(interactionComponentEClass, INTERACTION_COMPONENT__BASE_CLASS);
+
+ portKindEClass = createEClass(PORT_KIND);
+ createEReference(portKindEClass, PORT_KIND__BASE_CLASS);
+ createEReference(portKindEClass, PORT_KIND__PROVIDED_INTERFACE);
+ createEReference(portKindEClass, PORT_KIND__REQUIRED_INTERFACE);
+ createEAttribute(portKindEClass, PORT_KIND__EXTENDED_PORT);
+
+ portEClass = createEClass(PORT);
+ createEReference(portEClass, PORT__BASE_PORT);
+ createEReference(portEClass, PORT__KIND);
+ createEReference(portEClass, PORT__PROVIDED_INTERFACE);
+ createEReference(portEClass, PORT__REQUIRED_INTERFACE);
+ createEAttribute(portEClass, PORT__CONJUGATED);
+
+ configurableElementInstanceEClass = createEClass(CONFIGURABLE_ELEMENT_INSTANCE);
+ createEReference(configurableElementInstanceEClass, CONFIGURABLE_ELEMENT_INSTANCE__CONFIGURATION);
+
+ connectorEClass = createEClass(CONNECTOR);
+ createEReference(connectorEClass, CONNECTOR__BASE_CONNECTOR);
+ createEReference(connectorEClass, CONNECTOR__IC);
+ createEReference(connectorEClass, CONNECTOR__BASE_PROPERTY);
+
+ deploymentPlanEClass = createEClass(DEPLOYMENT_PLAN);
+ createEReference(deploymentPlanEClass, DEPLOYMENT_PLAN__MAIN_INSTANCE);
+ createEReference(deploymentPlanEClass, DEPLOYMENT_PLAN__BASE_PACKAGE);
+
+ derivedElementEClass = createEClass(DERIVED_ELEMENT);
+ createEReference(derivedElementEClass, DERIVED_ELEMENT__BASE_ELEMENT);
+ createEReference(derivedElementEClass, DERIVED_ELEMENT__SOURCE);
+
+ compImplTemplateEClass = createEClass(COMP_IMPL_TEMPLATE);
+ createEAttribute(compImplTemplateEClass, COMP_IMPL_TEMPLATE__TEMPLATE_DEFS);
+ createEReference(compImplTemplateEClass, COMP_IMPL_TEMPLATE__BASE_CLASS);
+
+ cppLibraryEClass = createEClass(CPP_LIBRARY);
+ createEAttribute(cppLibraryEClass, CPP_LIBRARY__MACROS);
+ createEAttribute(cppLibraryEClass, CPP_LIBRARY__LIBS);
+ createEAttribute(cppLibraryEClass, CPP_LIBRARY__LIB_PATHS);
+ createEAttribute(cppLibraryEClass, CPP_LIBRARY__INCLUDE_PATHS);
+
+ externalLibraryEClass = createEClass(EXTERNAL_LIBRARY);
+ createEReference(externalLibraryEClass, EXTERNAL_LIBRARY__BASE_PACKAGE);
+
+ javaLibraryEClass = createEClass(JAVA_LIBRARY);
+ createEAttribute(javaLibraryEClass, JAVA_LIBRARY__CLASS_PATH);
+
+ implementationPropertiesEClass = createEClass(IMPLEMENTATION_PROPERTIES);
+ createEAttribute(implementationPropertiesEClass, IMPLEMENTATION_PROPERTIES__SIZE_RAM);
+ createEReference(implementationPropertiesEClass, IMPLEMENTATION_PROPERTIES__SUPPORTED_OS);
+ createEReference(implementationPropertiesEClass, IMPLEMENTATION_PROPERTIES__ARCH);
+ createEReference(implementationPropertiesEClass, IMPLEMENTATION_PROPERTIES__BASE_CLASS);
+ createEAttribute(implementationPropertiesEClass, IMPLEMENTATION_PROPERTIES__SIZE_ROM);
+ createEReference(implementationPropertiesEClass, IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH);
+
+ operatingSystemEClass = createEClass(OPERATING_SYSTEM);
+ createEReference(operatingSystemEClass, OPERATING_SYSTEM__BASE_CLASS);
+
+ targetArchitectureEClass = createEClass(TARGET_ARCHITECTURE);
+ createEReference(targetArchitectureEClass, TARGET_ARCHITECTURE__BASE_CLASS);
+
+ configurationEClass = createEClass(CONFIGURATION);
+ createEReference(configurationEClass, CONFIGURATION__BASE_CLASS);
+ createEReference(configurationEClass, CONFIGURATION__CONFIG_OPTIONS);
+ createEReference(configurationEClass, CONFIGURATION__DEPLOYMENT_PLAN);
+
+ interceptionRuleEClass = createEClass(INTERCEPTION_RULE);
+ createEAttribute(interceptionRuleEClass, INTERCEPTION_RULE__INTERCEPTION_KIND);
+ createEReference(interceptionRuleEClass, INTERCEPTION_RULE__INTERCEPTION_SET);
+ createEReference(interceptionRuleEClass, INTERCEPTION_RULE__BASE_PROPERTY);
+ createEReference(interceptionRuleEClass, INTERCEPTION_RULE__BASE_OPERATION);
+
+ targetEClass = createEClass(TARGET);
+ createEReference(targetEClass, TARGET__TARGET_ARCH);
+ createEReference(targetEClass, TARGET__OPTIONS);
+ createEReference(targetEClass, TARGET__BASE_NODE);
+ createEReference(targetEClass, TARGET__USED_OS);
+ createEAttribute(targetEClass, TARGET__AVAIL_RAM);
+ createEAttribute(targetEClass, TARGET__AVAIL_ROM);
+
+ partEClass = createEClass(PART);
+ createEReference(partEClass, PART__BASE_PROPERTY);
+ createEReference(partEClass, PART__COLOCATE_WITH_PORT);
+
+ copyAttributeValueEClass = createEClass(COPY_ATTRIBUTE_VALUE);
+ createEReference(copyAttributeValueEClass, COPY_ATTRIBUTE_VALUE__SOURCE);
+ createEReference(copyAttributeValueEClass, COPY_ATTRIBUTE_VALUE__BASE_PROPERTY);
+
+ autoIndexEClass = createEClass(AUTO_INDEX);
+ createEReference(autoIndexEClass, AUTO_INDEX__BASE_PROPERTY);
+
+ autoIndexPerNodeEClass = createEClass(AUTO_INDEX_PER_NODE);
+
+ initPrecedenceEClass = createEClass(INIT_PRECEDENCE);
+ createEReference(initPrecedenceEClass, INIT_PRECEDENCE__INVOKE_AFTER);
+ createEReference(initPrecedenceEClass, INIT_PRECEDENCE__INVOKE_BEFORE);
+ createEReference(initPrecedenceEClass, INIT_PRECEDENCE__BASE_CLASS);
+
+ connectorConfigurationEClass = createEClass(CONNECTOR_CONFIGURATION);
+ createEReference(connectorConfigurationEClass, CONNECTOR_CONFIGURATION__BASE_SLOT);
+ createEReference(connectorConfigurationEClass, CONNECTOR_CONFIGURATION__CONNECTOR);
+
+ extendedSignatureEClass = createEClass(EXTENDED_SIGNATURE);
+ createEReference(extendedSignatureEClass, EXTENDED_SIGNATURE__BASE_TEMPLATE_SIGNATURE);
+ createEReference(extendedSignatureEClass, EXTENDED_SIGNATURE__BASE_SIGNATURE);
+
+ containerPortEClass = createEClass(CONTAINER_PORT);
+
+ useInstanceConfiguratorEClass = createEClass(USE_INSTANCE_CONFIGURATOR);
+ createEReference(useInstanceConfiguratorEClass, USE_INSTANCE_CONFIGURATOR__BASE_CLASS);
+ createEReference(useInstanceConfiguratorEClass, USE_INSTANCE_CONFIGURATOR__CONFIGURATOR);
+
+ instanceConfiguratorEClass = createEClass(INSTANCE_CONFIGURATOR);
+ createEReference(instanceConfiguratorEClass, INSTANCE_CONFIGURATOR__BASE_CLASS);
+
+ // Create enums
+ templateKindEEnum = createEEnum(TEMPLATE_KIND);
+ actualChoiceEEnum = createEEnum(ACTUAL_CHOICE);
+ containerRuleKindEEnum = createEEnum(CONTAINER_RULE_KIND);
+ interceptionKindEEnum = createEEnum(INTERCEPTION_KIND);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+ TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ portEClass.getESuperTypes().add(this.getConfigurableElementInstance());
+ connectorEClass.getESuperTypes().add(this.getConfigurableElementInstance());
+ cppLibraryEClass.getESuperTypes().add(this.getExternalLibrary());
+ javaLibraryEClass.getESuperTypes().add(this.getExternalLibrary());
+ autoIndexPerNodeEClass.getESuperTypes().add(this.getAutoIndex());
+ containerPortEClass.getESuperTypes().add(this.getPort());
+
+ // Initialize classes and features; add operations and parameters
+ initEClass(templateEClass, Template.class, "Template", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTemplate_TemplateParams(), theUMLPackage.getClassifier(), null, "templateParams", null, 0, -1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getTemplate_Base_Element(), theUMLPackage.getElement(), null, "base_Element", null, 1, 1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getTemplate_Kind(), this.getTemplateKind(), "kind", null, 1, 1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getTemplate_ActualChoice(), this.getActualChoice(), "actualChoice", null, 0, 1, Template.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(configurationPropertyEClass, ConfigurationProperty.class, "ConfigurationProperty", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConfigurationProperty_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, ConfigurationProperty.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(implementationGroupEClass, ImplementationGroup.class, "ImplementationGroup", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getImplementationGroup_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, ImplementationGroup.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(ruleApplicationEClass, RuleApplication.class, "RuleApplication", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getRuleApplication_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, RuleApplication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getRuleApplication_ContainerRule(), this.getContainerRule(), null, "containerRule", null, 0, -1, RuleApplication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getRuleApplication_Base_Package(), theUMLPackage.getPackage(), null, "base_Package", null, 1, 1, RuleApplication.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(containerRuleEClass, ContainerRule.class, "ContainerRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getContainerRule_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, ContainerRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getContainerRule_ForConfig(), this.getConfigOption(), null, "forConfig", null, 0, -1, ContainerRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getContainerRule_Kind(), this.getContainerRuleKind(), "kind", null, 1, 1, ContainerRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(configOptionEClass, ConfigOption.class, "ConfigOption", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConfigOption_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, ConfigOption.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(singletonEClass, Singleton.class, "Singleton", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getSingleton_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, Singleton.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(interactionComponentEClass, InteractionComponent.class, "InteractionComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getInteractionComponent_ForDistribution(), theTypesPackage.getBoolean(), "forDistribution", "false", 1, 1, InteractionComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getInteractionComponent_ConnectionPattern(), theUMLPackage.getCollaboration(), null, "connectionPattern", null, 0, 1, InteractionComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getInteractionComponent_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, InteractionComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(portKindEClass, PortKind.class, "PortKind", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPortKind_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, PortKind.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPortKind_ProvidedInterface(), theUMLPackage.getInterface(), null, "providedInterface", null, 0, 1, PortKind.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPortKind_RequiredInterface(), theUMLPackage.getInterface(), null, "requiredInterface", null, 0, 1, PortKind.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getPortKind_ExtendedPort(), theTypesPackage.getBoolean(), "extendedPort", null, 1, 1, PortKind.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+
+ initEClass(portEClass, Port.class, "Port", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPort_Base_Port(), theUMLPackage.getPort(), null, "base_Port", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPort_Kind(), this.getPortKind(), null, "kind", null, 0, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPort_ProvidedInterface(), theUMLPackage.getInterface(), null, "providedInterface", null, 0, 1, Port.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, !IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+ initEReference(getPort_RequiredInterface(), theUMLPackage.getInterface(), null, "requiredInterface", null, 0, 1, Port.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, IS_UNSETTABLE, !IS_UNIQUE, IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getPort_Conjugated(), theTypesPackage.getBoolean(), "conjugated", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(configurableElementInstanceEClass, ConfigurableElementInstance.class, "ConfigurableElementInstance", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConfigurableElementInstance_Configuration(), theUMLPackage.getInstanceSpecification(), null, "configuration", null, 0, 1, ConfigurableElementInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(connectorEClass, Connector.class, "Connector", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConnector_Base_Connector(), theUMLPackage.getConnector(), null, "base_Connector", null, 1, 1, Connector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getConnector_Ic(), this.getInteractionComponent(), null, "ic", null, 0, 1, Connector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getConnector_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, Connector.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(deploymentPlanEClass, DeploymentPlan.class, "DeploymentPlan", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDeploymentPlan_MainInstance(), theUMLPackage.getInstanceSpecification(), null, "mainInstance", null, 1, 1, DeploymentPlan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getDeploymentPlan_Base_Package(), theUMLPackage.getPackage(), null, "base_Package", null, 1, 1, DeploymentPlan.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(derivedElementEClass, DerivedElement.class, "DerivedElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getDerivedElement_Base_Element(), theUMLPackage.getElement(), null, "base_Element", null, 1, 1, DerivedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getDerivedElement_Source(), theUMLPackage.getElement(), null, "source", null, 1, 1, DerivedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(compImplTemplateEClass, CompImplTemplate.class, "CompImplTemplate", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCompImplTemplate_TemplateDefs(), theTypesPackage.getString(), "templateDefs", null, 0, 1, CompImplTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCompImplTemplate_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, CompImplTemplate.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(cppLibraryEClass, CppLibrary.class, "CppLibrary", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getCppLibrary_Macros(), theTypesPackage.getString(), "macros", null, 0, -1, CppLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCppLibrary_Libs(), theTypesPackage.getString(), "libs", null, 0, -1, CppLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCppLibrary_LibPaths(), theTypesPackage.getString(), "libPaths", null, 0, -1, CppLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getCppLibrary_IncludePaths(), theTypesPackage.getString(), "includePaths", null, 0, -1, CppLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(externalLibraryEClass, ExternalLibrary.class, "ExternalLibrary", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExternalLibrary_Base_Package(), theUMLPackage.getPackage(), null, "base_Package", null, 1, 1, ExternalLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(javaLibraryEClass, JavaLibrary.class, "JavaLibrary", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getJavaLibrary_ClassPath(), theTypesPackage.getString(), "classPath", null, 0, -1, JavaLibrary.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(implementationPropertiesEClass, ImplementationProperties.class, "ImplementationProperties", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getImplementationProperties_SizeRAM(), theTypesPackage.getInteger(), "sizeRAM", null, 1, 1, ImplementationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getImplementationProperties_SupportedOS(), this.getOperatingSystem(), null, "supportedOS", null, 0, -1, ImplementationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getImplementationProperties_Arch(), this.getTargetArchitecture(), null, "arch", null, 0, -1, ImplementationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getImplementationProperties_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, ImplementationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getImplementationProperties_SizeROM(), theTypesPackage.getInteger(), "sizeROM", null, 1, 1, ImplementationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getImplementationProperties_SupportedTargetArch(), this.getTargetArchitecture(), null, "supportedTargetArch", null, 1, 1, ImplementationProperties.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(operatingSystemEClass, OperatingSystem.class, "OperatingSystem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getOperatingSystem_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, OperatingSystem.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(targetArchitectureEClass, TargetArchitecture.class, "TargetArchitecture", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTargetArchitecture_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, TargetArchitecture.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(configurationEClass, Configuration.class, "Configuration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConfiguration_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, Configuration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getConfiguration_ConfigOptions(), this.getConfigOption(), null, "configOptions", null, 0, -1, Configuration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getConfiguration_DeploymentPlan(), this.getDeploymentPlan(), null, "deploymentPlan", null, 1, 1, Configuration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(interceptionRuleEClass, InterceptionRule.class, "InterceptionRule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEAttribute(getInterceptionRule_InterceptionKind(), this.getInterceptionKind(), "interceptionKind", null, 1, 1, InterceptionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getInterceptionRule_InterceptionSet(), theUMLPackage.getFeature(), null, "interceptionSet", null, 0, -1, InterceptionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getInterceptionRule_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, InterceptionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getInterceptionRule_Base_Operation(), theUMLPackage.getOperation(), null, "base_Operation", null, 1, 1, InterceptionRule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(targetEClass, Target.class, "Target", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getTarget_TargetArch(), this.getTargetArchitecture(), null, "targetArch", null, 1, 1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getTarget_Options(), this.getConfigOption(), null, "options", null, 0, -1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getTarget_Base_Node(), theUMLPackage.getNode(), null, "base_Node", null, 1, 1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getTarget_UsedOS(), this.getOperatingSystem(), null, "usedOS", null, 1, 1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getTarget_AvailRAM(), theTypesPackage.getInteger(), "availRAM", null, 1, 1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEAttribute(getTarget_AvailROM(), theTypesPackage.getInteger(), "availROM", null, 1, 1, Target.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(partEClass, Part.class, "Part", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getPart_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, Part.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getPart_ColocateWithPort(), theUMLPackage.getPort(), null, "colocateWithPort", null, 0, -1, Part.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(copyAttributeValueEClass, CopyAttributeValue.class, "CopyAttributeValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getCopyAttributeValue_Source(), theUMLPackage.getProperty(), null, "source", null, 1, 1, CopyAttributeValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getCopyAttributeValue_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, CopyAttributeValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(autoIndexEClass, AutoIndex.class, "AutoIndex", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getAutoIndex_Base_Property(), theUMLPackage.getProperty(), null, "base_Property", null, 1, 1, AutoIndex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(autoIndexPerNodeEClass, AutoIndexPerNode.class, "AutoIndexPerNode", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(initPrecedenceEClass, InitPrecedence.class, "InitPrecedence", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getInitPrecedence_InvokeAfter(), theUMLPackage.getClass_(), null, "invokeAfter", null, 0, -1, InitPrecedence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getInitPrecedence_InvokeBefore(), theUMLPackage.getClass_(), null, "invokeBefore", null, 0, -1, InitPrecedence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getInitPrecedence_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, InitPrecedence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(connectorConfigurationEClass, ConnectorConfiguration.class, "ConnectorConfiguration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getConnectorConfiguration_Base_Slot(), theUMLPackage.getSlot(), null, "base_Slot", null, 1, 1, ConnectorConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getConnectorConfiguration_Connector(), this.getConnector(), null, "connector", null, 1, 1, ConnectorConfiguration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(extendedSignatureEClass, ExtendedSignature.class, "ExtendedSignature", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getExtendedSignature_Base_TemplateSignature(), theUMLPackage.getTemplateSignature(), null, "base_TemplateSignature", null, 1, 1, ExtendedSignature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getExtendedSignature_BaseSignature(), theUMLPackage.getTemplateSignature(), null, "baseSignature", null, 1, 1, ExtendedSignature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(containerPortEClass, ContainerPort.class, "ContainerPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+ initEClass(useInstanceConfiguratorEClass, UseInstanceConfigurator.class, "UseInstanceConfigurator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getUseInstanceConfigurator_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, UseInstanceConfigurator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+ initEReference(getUseInstanceConfigurator_Configurator(), this.getInstanceConfigurator(), null, "configurator", null, 1, 1, UseInstanceConfigurator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ initEClass(instanceConfiguratorEClass, InstanceConfigurator.class, "InstanceConfigurator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getInstanceConfigurator_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 1, 1, InstanceConfigurator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+ // Initialize enums and add enum literals
+ initEEnum(templateKindEEnum, TemplateKind.class, "TemplateKind");
+ addEEnumLiteral(templateKindEEnum, TemplateKind.PASS_FORMAL);
+ addEEnumLiteral(templateKindEEnum, TemplateKind.LOOP_OPERATIONS);
+ addEEnumLiteral(templateKindEEnum, TemplateKind.LOOP_PROPERTY);
+ addEEnumLiteral(templateKindEEnum, TemplateKind.ACCUMULATE);
+ addEEnumLiteral(templateKindEEnum, TemplateKind.LOOP_LITERALS);
+ addEEnumLiteral(templateKindEEnum, TemplateKind.LATE_EVALUATION);
+ addEEnumLiteral(templateKindEEnum, TemplateKind.LOOP_PORTS);
+ addEEnumLiteral(templateKindEEnum, TemplateKind.PASS_CLASSIFIER);
+
+ initEEnum(actualChoiceEEnum, ActualChoice.class, "ActualChoice");
+ addEEnumLiteral(actualChoiceEEnum, ActualChoice.PASS_ACTUAL);
+ addEEnumLiteral(actualChoiceEEnum, ActualChoice.INTERFACE_OF_PPORT);
+ addEEnumLiteral(actualChoiceEEnum, ActualChoice.INTERFACE_OF_RPORT);
+
+ initEEnum(containerRuleKindEEnum, ContainerRuleKind.class, "ContainerRuleKind");
+ addEEnumLiteral(containerRuleKindEEnum, ContainerRuleKind.COMPONENT_RULE);
+ addEEnumLiteral(containerRuleKindEEnum, ContainerRuleKind.LIGHT_WEIGHT_OO_RULE);
+
+ initEEnum(interceptionKindEEnum, InterceptionKind.class, "InterceptionKind");
+ addEEnumLiteral(interceptionKindEEnum, InterceptionKind.INTERCEPT_SOME);
+ addEEnumLiteral(interceptionKindEEnum, InterceptionKind.INTERCEPT_ALL);
+ addEEnumLiteral(interceptionKindEEnum, InterceptionKind.INTERCEPT_ALL_OUT);
+ addEEnumLiteral(interceptionKindEEnum, InterceptionKind.INTERCEPT_ALL_IN);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //FCMPackageImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ImplementationGroupImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ImplementationGroupImpl.java
new file mode 100644
index 00000000000..68be598ed2a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ImplementationGroupImpl.java
@@ -0,0 +1,159 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import FCM.FCMPackage;
+import FCM.ImplementationGroup;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Implementation Group</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ImplementationGroupImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ImplementationGroupImpl extends EObjectImpl implements ImplementationGroup {
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ImplementationGroupImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.IMPLEMENTATION_GROUP;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.IMPLEMENTATION_GROUP__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.IMPLEMENTATION_GROUP__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.IMPLEMENTATION_GROUP__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.IMPLEMENTATION_GROUP__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.IMPLEMENTATION_GROUP__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.IMPLEMENTATION_GROUP__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //ImplementationGroupImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ImplementationPropertiesImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ImplementationPropertiesImpl.java
new file mode 100644
index 00000000000..f5444023802
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/ImplementationPropertiesImpl.java
@@ -0,0 +1,419 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.ImplementationProperties;
+import FCM.OperatingSystem;
+import FCM.TargetArchitecture;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Implementation Properties</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.ImplementationPropertiesImpl#getSizeRAM <em>Size RAM</em>}</li>
+ * <li>{@link FCM.impl.ImplementationPropertiesImpl#getSupportedOS <em>Supported OS</em>}</li>
+ * <li>{@link FCM.impl.ImplementationPropertiesImpl#getArch <em>Arch</em>}</li>
+ * <li>{@link FCM.impl.ImplementationPropertiesImpl#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.impl.ImplementationPropertiesImpl#getSizeROM <em>Size ROM</em>}</li>
+ * <li>{@link FCM.impl.ImplementationPropertiesImpl#getSupportedTargetArch <em>Supported Target Arch</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ImplementationPropertiesImpl extends EObjectImpl implements ImplementationProperties {
+ /**
+ * The default value of the '{@link #getSizeRAM() <em>Size RAM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSizeRAM()
+ * @generated
+ * @ordered
+ */
+ protected static final int SIZE_RAM_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getSizeRAM() <em>Size RAM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSizeRAM()
+ * @generated
+ * @ordered
+ */
+ protected int sizeRAM = SIZE_RAM_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSupportedOS() <em>Supported OS</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSupportedOS()
+ * @generated
+ * @ordered
+ */
+ protected EList<OperatingSystem> supportedOS;
+
+ /**
+ * The cached value of the '{@link #getArch() <em>Arch</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getArch()
+ * @generated
+ * @ordered
+ */
+ protected EList<TargetArchitecture> arch;
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * The default value of the '{@link #getSizeROM() <em>Size ROM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSizeROM()
+ * @generated
+ * @ordered
+ */
+ protected static final int SIZE_ROM_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getSizeROM() <em>Size ROM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSizeROM()
+ * @generated
+ * @ordered
+ */
+ protected int sizeROM = SIZE_ROM_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getSupportedTargetArch() <em>Supported Target Arch</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSupportedTargetArch()
+ * @generated
+ * @ordered
+ */
+ protected TargetArchitecture supportedTargetArch;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ImplementationPropertiesImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.IMPLEMENTATION_PROPERTIES;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getSizeRAM() {
+ return sizeRAM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSizeRAM(int newSizeRAM) {
+ int oldSizeRAM = sizeRAM;
+ sizeRAM = newSizeRAM;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_RAM, oldSizeRAM, sizeRAM));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<OperatingSystem> getSupportedOS() {
+ if (supportedOS == null) {
+ supportedOS = new EObjectResolvingEList<OperatingSystem>(OperatingSystem.class, this, FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_OS);
+ }
+ return supportedOS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<TargetArchitecture> getArch() {
+ if (arch == null) {
+ arch = new EObjectResolvingEList<TargetArchitecture>(TargetArchitecture.class, this, FCMPackage.IMPLEMENTATION_PROPERTIES__ARCH);
+ }
+ return arch;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.IMPLEMENTATION_PROPERTIES__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.IMPLEMENTATION_PROPERTIES__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getSizeROM() {
+ return sizeROM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSizeROM(int newSizeROM) {
+ int oldSizeROM = sizeROM;
+ sizeROM = newSizeROM;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_ROM, oldSizeROM, sizeROM));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TargetArchitecture getSupportedTargetArch() {
+ if (supportedTargetArch != null && supportedTargetArch.eIsProxy()) {
+ InternalEObject oldSupportedTargetArch = (InternalEObject)supportedTargetArch;
+ supportedTargetArch = (TargetArchitecture)eResolveProxy(oldSupportedTargetArch);
+ if (supportedTargetArch != oldSupportedTargetArch) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH, oldSupportedTargetArch, supportedTargetArch));
+ }
+ }
+ return supportedTargetArch;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TargetArchitecture basicGetSupportedTargetArch() {
+ return supportedTargetArch;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSupportedTargetArch(TargetArchitecture newSupportedTargetArch) {
+ TargetArchitecture oldSupportedTargetArch = supportedTargetArch;
+ supportedTargetArch = newSupportedTargetArch;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH, oldSupportedTargetArch, supportedTargetArch));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_RAM:
+ return getSizeRAM();
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_OS:
+ return getSupportedOS();
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__ARCH:
+ return getArch();
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_ROM:
+ return getSizeROM();
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH:
+ if (resolve) return getSupportedTargetArch();
+ return basicGetSupportedTargetArch();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_RAM:
+ setSizeRAM((Integer)newValue);
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_OS:
+ getSupportedOS().clear();
+ getSupportedOS().addAll((Collection<? extends OperatingSystem>)newValue);
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__ARCH:
+ getArch().clear();
+ getArch().addAll((Collection<? extends TargetArchitecture>)newValue);
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_ROM:
+ setSizeROM((Integer)newValue);
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH:
+ setSupportedTargetArch((TargetArchitecture)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_RAM:
+ setSizeRAM(SIZE_RAM_EDEFAULT);
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_OS:
+ getSupportedOS().clear();
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__ARCH:
+ getArch().clear();
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_ROM:
+ setSizeROM(SIZE_ROM_EDEFAULT);
+ return;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH:
+ setSupportedTargetArch((TargetArchitecture)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_RAM:
+ return sizeRAM != SIZE_RAM_EDEFAULT;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_OS:
+ return supportedOS != null && !supportedOS.isEmpty();
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__ARCH:
+ return arch != null && !arch.isEmpty();
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__BASE_CLASS:
+ return base_Class != null;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SIZE_ROM:
+ return sizeROM != SIZE_ROM_EDEFAULT;
+ case FCMPackage.IMPLEMENTATION_PROPERTIES__SUPPORTED_TARGET_ARCH:
+ return supportedTargetArch != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (sizeRAM: ");
+ result.append(sizeRAM);
+ result.append(", sizeROM: ");
+ result.append(sizeROM);
+ result.append(')');
+ return result.toString();
+ }
+
+} //ImplementationPropertiesImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InitPrecedenceImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InitPrecedenceImpl.java
new file mode 100644
index 00000000000..df00803d1a2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InitPrecedenceImpl.java
@@ -0,0 +1,235 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.InitPrecedence;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Init Precedence</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.InitPrecedenceImpl#getInvokeAfter <em>Invoke After</em>}</li>
+ * <li>{@link FCM.impl.InitPrecedenceImpl#getInvokeBefore <em>Invoke Before</em>}</li>
+ * <li>{@link FCM.impl.InitPrecedenceImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InitPrecedenceImpl extends EObjectImpl implements InitPrecedence {
+ /**
+ * The cached value of the '{@link #getInvokeAfter() <em>Invoke After</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInvokeAfter()
+ * @generated
+ * @ordered
+ */
+ protected EList<org.eclipse.uml2.uml.Class> invokeAfter;
+
+ /**
+ * The cached value of the '{@link #getInvokeBefore() <em>Invoke Before</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInvokeBefore()
+ * @generated
+ * @ordered
+ */
+ protected EList<org.eclipse.uml2.uml.Class> invokeBefore;
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InitPrecedenceImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.INIT_PRECEDENCE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<org.eclipse.uml2.uml.Class> getInvokeAfter() {
+ if (invokeAfter == null) {
+ invokeAfter = new EObjectResolvingEList<org.eclipse.uml2.uml.Class>(org.eclipse.uml2.uml.Class.class, this, FCMPackage.INIT_PRECEDENCE__INVOKE_AFTER);
+ }
+ return invokeAfter;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<org.eclipse.uml2.uml.Class> getInvokeBefore() {
+ if (invokeBefore == null) {
+ invokeBefore = new EObjectResolvingEList<org.eclipse.uml2.uml.Class>(org.eclipse.uml2.uml.Class.class, this, FCMPackage.INIT_PRECEDENCE__INVOKE_BEFORE);
+ }
+ return invokeBefore;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.INIT_PRECEDENCE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.INIT_PRECEDENCE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.INIT_PRECEDENCE__INVOKE_AFTER:
+ return getInvokeAfter();
+ case FCMPackage.INIT_PRECEDENCE__INVOKE_BEFORE:
+ return getInvokeBefore();
+ case FCMPackage.INIT_PRECEDENCE__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.INIT_PRECEDENCE__INVOKE_AFTER:
+ getInvokeAfter().clear();
+ getInvokeAfter().addAll((Collection<? extends org.eclipse.uml2.uml.Class>)newValue);
+ return;
+ case FCMPackage.INIT_PRECEDENCE__INVOKE_BEFORE:
+ getInvokeBefore().clear();
+ getInvokeBefore().addAll((Collection<? extends org.eclipse.uml2.uml.Class>)newValue);
+ return;
+ case FCMPackage.INIT_PRECEDENCE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.INIT_PRECEDENCE__INVOKE_AFTER:
+ getInvokeAfter().clear();
+ return;
+ case FCMPackage.INIT_PRECEDENCE__INVOKE_BEFORE:
+ getInvokeBefore().clear();
+ return;
+ case FCMPackage.INIT_PRECEDENCE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.INIT_PRECEDENCE__INVOKE_AFTER:
+ return invokeAfter != null && !invokeAfter.isEmpty();
+ case FCMPackage.INIT_PRECEDENCE__INVOKE_BEFORE:
+ return invokeBefore != null && !invokeBefore.isEmpty();
+ case FCMPackage.INIT_PRECEDENCE__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //InitPrecedenceImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InstanceConfiguratorImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InstanceConfiguratorImpl.java
new file mode 100644
index 00000000000..e2c99fff218
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InstanceConfiguratorImpl.java
@@ -0,0 +1,160 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.InstanceConfigurator;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instance Configurator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.InstanceConfiguratorImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InstanceConfiguratorImpl extends EObjectImpl implements InstanceConfigurator {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InstanceConfiguratorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.INSTANCE_CONFIGURATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.INSTANCE_CONFIGURATOR__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.INSTANCE_CONFIGURATOR__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.INSTANCE_CONFIGURATOR__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.INSTANCE_CONFIGURATOR__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.INSTANCE_CONFIGURATOR__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.INSTANCE_CONFIGURATOR__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //InstanceConfiguratorImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InteractionComponentImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InteractionComponentImpl.java
new file mode 100644
index 00000000000..66c1289f287
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InteractionComponentImpl.java
@@ -0,0 +1,290 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.InteractionComponent;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.uml2.uml.Collaboration;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Interaction Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.InteractionComponentImpl#isForDistribution <em>For Distribution</em>}</li>
+ * <li>{@link FCM.impl.InteractionComponentImpl#getConnectionPattern <em>Connection Pattern</em>}</li>
+ * <li>{@link FCM.impl.InteractionComponentImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InteractionComponentImpl extends EObjectImpl implements InteractionComponent {
+ /**
+ * The default value of the '{@link #isForDistribution() <em>For Distribution</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isForDistribution()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean FOR_DISTRIBUTION_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isForDistribution() <em>For Distribution</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isForDistribution()
+ * @generated
+ * @ordered
+ */
+ protected boolean forDistribution = FOR_DISTRIBUTION_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getConnectionPattern() <em>Connection Pattern</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConnectionPattern()
+ * @generated
+ * @ordered
+ */
+ protected Collaboration connectionPattern;
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InteractionComponentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.INTERACTION_COMPONENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isForDistribution() {
+ return forDistribution;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setForDistribution(boolean newForDistribution) {
+ boolean oldForDistribution = forDistribution;
+ forDistribution = newForDistribution;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.INTERACTION_COMPONENT__FOR_DISTRIBUTION, oldForDistribution, forDistribution));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Collaboration getConnectionPattern() {
+ if (connectionPattern != null && connectionPattern.eIsProxy()) {
+ InternalEObject oldConnectionPattern = (InternalEObject)connectionPattern;
+ connectionPattern = (Collaboration)eResolveProxy(oldConnectionPattern);
+ if (connectionPattern != oldConnectionPattern) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.INTERACTION_COMPONENT__CONNECTION_PATTERN, oldConnectionPattern, connectionPattern));
+ }
+ }
+ return connectionPattern;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Collaboration basicGetConnectionPattern() {
+ return connectionPattern;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConnectionPattern(Collaboration newConnectionPattern) {
+ Collaboration oldConnectionPattern = connectionPattern;
+ connectionPattern = newConnectionPattern;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.INTERACTION_COMPONENT__CONNECTION_PATTERN, oldConnectionPattern, connectionPattern));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.INTERACTION_COMPONENT__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.INTERACTION_COMPONENT__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.INTERACTION_COMPONENT__FOR_DISTRIBUTION:
+ return isForDistribution();
+ case FCMPackage.INTERACTION_COMPONENT__CONNECTION_PATTERN:
+ if (resolve) return getConnectionPattern();
+ return basicGetConnectionPattern();
+ case FCMPackage.INTERACTION_COMPONENT__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.INTERACTION_COMPONENT__FOR_DISTRIBUTION:
+ setForDistribution((Boolean)newValue);
+ return;
+ case FCMPackage.INTERACTION_COMPONENT__CONNECTION_PATTERN:
+ setConnectionPattern((Collaboration)newValue);
+ return;
+ case FCMPackage.INTERACTION_COMPONENT__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.INTERACTION_COMPONENT__FOR_DISTRIBUTION:
+ setForDistribution(FOR_DISTRIBUTION_EDEFAULT);
+ return;
+ case FCMPackage.INTERACTION_COMPONENT__CONNECTION_PATTERN:
+ setConnectionPattern((Collaboration)null);
+ return;
+ case FCMPackage.INTERACTION_COMPONENT__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.INTERACTION_COMPONENT__FOR_DISTRIBUTION:
+ return forDistribution != FOR_DISTRIBUTION_EDEFAULT;
+ case FCMPackage.INTERACTION_COMPONENT__CONNECTION_PATTERN:
+ return connectionPattern != null;
+ case FCMPackage.INTERACTION_COMPONENT__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (forDistribution: ");
+ result.append(forDistribution);
+ result.append(')');
+ return result.toString();
+ }
+
+} //InteractionComponentImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InterceptionRuleImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InterceptionRuleImpl.java
new file mode 100644
index 00000000000..7f560b67b56
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/InterceptionRuleImpl.java
@@ -0,0 +1,331 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Property;
+
+import FCM.FCMPackage;
+import FCM.InterceptionKind;
+import FCM.InterceptionRule;
+import FCM.Port;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Interception Rule</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.InterceptionRuleImpl#getInterceptionKind <em>Interception Kind</em>}</li>
+ * <li>{@link FCM.impl.InterceptionRuleImpl#getInterceptionSet <em>Interception Set</em>}</li>
+ * <li>{@link FCM.impl.InterceptionRuleImpl#getBase_Property <em>Base Property</em>}</li>
+ * <li>{@link FCM.impl.InterceptionRuleImpl#getBase_Operation <em>Base Operation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InterceptionRuleImpl extends EObjectImpl implements InterceptionRule {
+
+ /**
+ * The default value of the '{@link #getInterceptionKind() <em>Interception Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInterceptionKind()
+ * @generated
+ * @ordered
+ */
+ protected static final InterceptionKind INTERCEPTION_KIND_EDEFAULT = InterceptionKind.INTERCEPT_SOME;
+
+ /**
+ * The cached value of the '{@link #getInterceptionKind() <em>Interception Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInterceptionKind()
+ * @generated
+ * @ordered
+ */
+ protected InterceptionKind interceptionKind = INTERCEPTION_KIND_EDEFAULT;
+
+ /**
+ * The cached value of the '{@link #getInterceptionSet() <em>Interception Set</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getInterceptionSet()
+ * @generated
+ * @ordered
+ */
+ protected EList<Feature> interceptionSet;
+
+ /**
+ * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_Property;
+
+ /**
+ * The cached value of the '{@link #getBase_Operation() <em>Base Operation</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Operation()
+ * @generated
+ * @ordered
+ */
+ protected Operation base_Operation;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected InterceptionRuleImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.INTERCEPTION_RULE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InterceptionKind getInterceptionKind() {
+ return interceptionKind;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setInterceptionKind(InterceptionKind newInterceptionKind) {
+ InterceptionKind oldInterceptionKind = interceptionKind;
+ interceptionKind = newInterceptionKind == null ? INTERCEPTION_KIND_EDEFAULT : newInterceptionKind;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.INTERCEPTION_RULE__INTERCEPTION_KIND, oldInterceptionKind, interceptionKind));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Feature> getInterceptionSet() {
+ if (interceptionSet == null) {
+ interceptionSet = new EObjectResolvingEList<Feature>(Feature.class, this, FCMPackage.INTERCEPTION_RULE__INTERCEPTION_SET);
+ }
+ return interceptionSet;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_Property() {
+ if (base_Property != null && base_Property.eIsProxy()) {
+ InternalEObject oldBase_Property = (InternalEObject)base_Property;
+ base_Property = (Property)eResolveProxy(oldBase_Property);
+ if (base_Property != oldBase_Property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.INTERCEPTION_RULE__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+ }
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_Property() {
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Property(Property newBase_Property) {
+ Property oldBase_Property = base_Property;
+ base_Property = newBase_Property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.INTERCEPTION_RULE__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation getBase_Operation() {
+ if (base_Operation != null && base_Operation.eIsProxy()) {
+ InternalEObject oldBase_Operation = (InternalEObject)base_Operation;
+ base_Operation = (Operation)eResolveProxy(oldBase_Operation);
+ if (base_Operation != oldBase_Operation) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.INTERCEPTION_RULE__BASE_OPERATION, oldBase_Operation, base_Operation));
+ }
+ }
+ return base_Operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Operation basicGetBase_Operation() {
+ return base_Operation;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Operation(Operation newBase_Operation) {
+ Operation oldBase_Operation = base_Operation;
+ base_Operation = newBase_Operation;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.INTERCEPTION_RULE__BASE_OPERATION, oldBase_Operation, base_Operation));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.INTERCEPTION_RULE__INTERCEPTION_KIND:
+ return getInterceptionKind();
+ case FCMPackage.INTERCEPTION_RULE__INTERCEPTION_SET:
+ return getInterceptionSet();
+ case FCMPackage.INTERCEPTION_RULE__BASE_PROPERTY:
+ if (resolve) return getBase_Property();
+ return basicGetBase_Property();
+ case FCMPackage.INTERCEPTION_RULE__BASE_OPERATION:
+ if (resolve) return getBase_Operation();
+ return basicGetBase_Operation();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.INTERCEPTION_RULE__INTERCEPTION_KIND:
+ setInterceptionKind((InterceptionKind)newValue);
+ return;
+ case FCMPackage.INTERCEPTION_RULE__INTERCEPTION_SET:
+ getInterceptionSet().clear();
+ getInterceptionSet().addAll((Collection<? extends Feature>)newValue);
+ return;
+ case FCMPackage.INTERCEPTION_RULE__BASE_PROPERTY:
+ setBase_Property((Property)newValue);
+ return;
+ case FCMPackage.INTERCEPTION_RULE__BASE_OPERATION:
+ setBase_Operation((Operation)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.INTERCEPTION_RULE__INTERCEPTION_KIND:
+ setInterceptionKind(INTERCEPTION_KIND_EDEFAULT);
+ return;
+ case FCMPackage.INTERCEPTION_RULE__INTERCEPTION_SET:
+ getInterceptionSet().clear();
+ return;
+ case FCMPackage.INTERCEPTION_RULE__BASE_PROPERTY:
+ setBase_Property((Property)null);
+ return;
+ case FCMPackage.INTERCEPTION_RULE__BASE_OPERATION:
+ setBase_Operation((Operation)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.INTERCEPTION_RULE__INTERCEPTION_KIND:
+ return interceptionKind != INTERCEPTION_KIND_EDEFAULT;
+ case FCMPackage.INTERCEPTION_RULE__INTERCEPTION_SET:
+ return interceptionSet != null && !interceptionSet.isEmpty();
+ case FCMPackage.INTERCEPTION_RULE__BASE_PROPERTY:
+ return base_Property != null;
+ case FCMPackage.INTERCEPTION_RULE__BASE_OPERATION:
+ return base_Operation != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (interceptionKind: ");
+ result.append(interceptionKind);
+ result.append(')');
+ return result.toString();
+ }
+
+} //InterceptionRuleImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/JavaLibraryImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/JavaLibraryImpl.java
new file mode 100644
index 00000000000..e1ad76102dd
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/JavaLibraryImpl.java
@@ -0,0 +1,149 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+
+import FCM.FCMPackage;
+import FCM.JavaLibrary;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Java Library</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.JavaLibraryImpl#getClassPath <em>Class Path</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class JavaLibraryImpl extends ExternalLibraryImpl implements JavaLibrary {
+ /**
+ * The cached value of the '{@link #getClassPath() <em>Class Path</em>}' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getClassPath()
+ * @generated
+ * @ordered
+ */
+ protected EList<String> classPath;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected JavaLibraryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.JAVA_LIBRARY;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<String> getClassPath() {
+ if (classPath == null) {
+ classPath = new EDataTypeEList<String>(String.class, this, FCMPackage.JAVA_LIBRARY__CLASS_PATH);
+ }
+ return classPath;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.JAVA_LIBRARY__CLASS_PATH:
+ return getClassPath();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.JAVA_LIBRARY__CLASS_PATH:
+ getClassPath().clear();
+ getClassPath().addAll((Collection<? extends String>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.JAVA_LIBRARY__CLASS_PATH:
+ getClassPath().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.JAVA_LIBRARY__CLASS_PATH:
+ return classPath != null && !classPath.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (classPath: ");
+ result.append(classPath);
+ result.append(')');
+ return result.toString();
+ }
+
+} //JavaLibraryImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/OperatingSystemImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/OperatingSystemImpl.java
new file mode 100644
index 00000000000..11ab82eb7b4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/OperatingSystemImpl.java
@@ -0,0 +1,160 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.OperatingSystem;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Operating System</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.OperatingSystemImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OperatingSystemImpl extends EObjectImpl implements OperatingSystem {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected OperatingSystemImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.OPERATING_SYSTEM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.OPERATING_SYSTEM__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.OPERATING_SYSTEM__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.OPERATING_SYSTEM__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.OPERATING_SYSTEM__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.OPERATING_SYSTEM__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.OPERATING_SYSTEM__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //OperatingSystemImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PartImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PartImpl.java
new file mode 100644
index 00000000000..4ac525c5d78
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PartImpl.java
@@ -0,0 +1,201 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.Part;
+
+import java.util.Collection;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Part</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.PartImpl#getBase_Property <em>Base Property</em>}</li>
+ * <li>{@link FCM.impl.PartImpl#getColocateWithPort <em>Colocate With Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PartImpl extends EObjectImpl implements Part {
+ /**
+ * The cached value of the '{@link #getBase_Property() <em>Base Property</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Property()
+ * @generated
+ * @ordered
+ */
+ protected Property base_Property;
+
+ /**
+ * The cached value of the '{@link #getColocateWithPort() <em>Colocate With Port</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getColocateWithPort()
+ * @generated
+ * @ordered
+ */
+ protected EList<Port> colocateWithPort;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PartImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.PART;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property getBase_Property() {
+ if (base_Property != null && base_Property.eIsProxy()) {
+ InternalEObject oldBase_Property = (InternalEObject)base_Property;
+ base_Property = (Property)eResolveProxy(oldBase_Property);
+ if (base_Property != oldBase_Property) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.PART__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+ }
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Property basicGetBase_Property() {
+ return base_Property;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Property(Property newBase_Property) {
+ Property oldBase_Property = base_Property;
+ base_Property = newBase_Property;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.PART__BASE_PROPERTY, oldBase_Property, base_Property));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Port> getColocateWithPort() {
+ if (colocateWithPort == null) {
+ colocateWithPort = new EObjectResolvingEList<Port>(Port.class, this, FCMPackage.PART__COLOCATE_WITH_PORT);
+ }
+ return colocateWithPort;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.PART__BASE_PROPERTY:
+ if (resolve) return getBase_Property();
+ return basicGetBase_Property();
+ case FCMPackage.PART__COLOCATE_WITH_PORT:
+ return getColocateWithPort();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.PART__BASE_PROPERTY:
+ setBase_Property((Property)newValue);
+ return;
+ case FCMPackage.PART__COLOCATE_WITH_PORT:
+ getColocateWithPort().clear();
+ getColocateWithPort().addAll((Collection<? extends Port>)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.PART__BASE_PROPERTY:
+ setBase_Property((Property)null);
+ return;
+ case FCMPackage.PART__COLOCATE_WITH_PORT:
+ getColocateWithPort().clear();
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.PART__BASE_PROPERTY:
+ return base_Property != null;
+ case FCMPackage.PART__COLOCATE_WITH_PORT:
+ return colocateWithPort != null && !colocateWithPort.isEmpty();
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //PartImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PortImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PortImpl.java
new file mode 100644
index 00000000000..23c62392f6d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PortImpl.java
@@ -0,0 +1,409 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Image;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Stereotype;
+
+import FCM.FCMPackage;
+import FCM.Port;
+import FCM.PortKind;
+import FCM.util.MapUtil;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.PortImpl#getBase_Port <em>Base Port</em>}</li>
+ * <li>{@link FCM.impl.PortImpl#getKind <em>Kind</em>}</li>
+ * <li>{@link FCM.impl.PortImpl#getProvidedInterface <em>Provided Interface</em>}</li>
+ * <li>{@link FCM.impl.PortImpl#getRequiredInterface <em>Required Interface</em>}</li>
+ * <li>{@link FCM.impl.PortImpl#isConjugated <em>Conjugated</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PortImpl extends ConfigurableElementInstanceImpl implements Port {
+
+ /**
+ * The cached value of the '{@link #getBase_Port() <em>Base Port</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Port()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Port base_Port;
+
+ /**
+ * The cached value of the '{@link #getKind() <em>Kind</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKind()
+ * @generated
+ * @ordered
+ */
+ protected PortKind kind;
+
+ /**
+ * The default value of the '{@link #isConjugated() <em>Conjugated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isConjugated()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean CONJUGATED_EDEFAULT = false;
+
+ /**
+ * The cached value of the '{@link #isConjugated() <em>Conjugated</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isConjugated()
+ * @generated
+ * @ordered
+ */
+ protected boolean conjugated = CONJUGATED_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PortImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.PORT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Port getBase_Port() {
+ if (base_Port != null && base_Port.eIsProxy()) {
+ InternalEObject oldBase_Port = (InternalEObject)base_Port;
+ base_Port = (org.eclipse.uml2.uml.Port)eResolveProxy(oldBase_Port);
+ if (base_Port != oldBase_Port) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.PORT__BASE_PORT, oldBase_Port, base_Port));
+ }
+ }
+ return base_Port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Port basicGetBase_Port() {
+ return base_Port;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Port(org.eclipse.uml2.uml.Port newBase_Port) {
+ org.eclipse.uml2.uml.Port oldBase_Port = base_Port;
+ base_Port = newBase_Port;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.PORT__BASE_PORT, oldBase_Port, base_Port));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortKind getKind() {
+ if (kind != null && kind.eIsProxy()) {
+ InternalEObject oldKind = (InternalEObject)kind;
+ kind = (PortKind)eResolveProxy(oldKind);
+ if (kind != oldKind) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.PORT__KIND, oldKind, kind));
+ }
+ }
+ return kind;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public PortKind basicGetKind() {
+ return kind;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKind(PortKind newKind) {
+ PortKind oldKind = kind;
+ kind = newKind;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.PORT__KIND, oldKind, kind));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Interface getProvidedInterface() {
+ Interface providedInterface = basicGetProvidedInterface();
+ return providedInterface != null && providedInterface.eIsProxy() ? (Interface)eResolveProxy((InternalEObject)providedInterface) : providedInterface;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public Interface basicGetProvidedInterface() {
+ if(conjugated) {
+ return MapUtil.getRequiredInterface(this);
+ }
+ else {
+ return MapUtil.getProvidedInterface(this);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public boolean isSetProvidedInterface() {
+ return (getProvidedInterface() != null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Interface getRequiredInterface() {
+ Interface requiredInterface = basicGetRequiredInterface();
+ return requiredInterface != null && requiredInterface.eIsProxy() ? (Interface)eResolveProxy((InternalEObject)requiredInterface) : requiredInterface;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public Interface basicGetRequiredInterface() {
+ if(!conjugated) {
+ return MapUtil.getRequiredInterface(this);
+ }
+ else {
+ return MapUtil.getProvidedInterface(this);
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public boolean isSetRequiredInterface() {
+ return (getRequiredInterface() != null);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public boolean isConjugated() {
+ return conjugated;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConjugated(boolean newConjugated) {
+ boolean oldConjugated = conjugated;
+ conjugated = newConjugated;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.PORT__CONJUGATED, oldConjugated, conjugated));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.PORT__BASE_PORT:
+ if (resolve) return getBase_Port();
+ return basicGetBase_Port();
+ case FCMPackage.PORT__KIND:
+ if (resolve) return getKind();
+ return basicGetKind();
+ case FCMPackage.PORT__PROVIDED_INTERFACE:
+ if (resolve) return getProvidedInterface();
+ return basicGetProvidedInterface();
+ case FCMPackage.PORT__REQUIRED_INTERFACE:
+ if (resolve) return getRequiredInterface();
+ return basicGetRequiredInterface();
+ case FCMPackage.PORT__CONJUGATED:
+ return isConjugated();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.PORT__BASE_PORT:
+ setBase_Port((org.eclipse.uml2.uml.Port)newValue);
+ return;
+ case FCMPackage.PORT__KIND:
+ setKind((PortKind)newValue);
+ return;
+ case FCMPackage.PORT__CONJUGATED:
+ setConjugated((Boolean)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.PORT__BASE_PORT:
+ setBase_Port((org.eclipse.uml2.uml.Port)null);
+ return;
+ case FCMPackage.PORT__KIND:
+ setKind((PortKind)null);
+ return;
+ case FCMPackage.PORT__CONJUGATED:
+ setConjugated(CONJUGATED_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.PORT__BASE_PORT:
+ return base_Port != null;
+ case FCMPackage.PORT__KIND:
+ return kind != null;
+ case FCMPackage.PORT__PROVIDED_INTERFACE:
+ return isSetProvidedInterface();
+ case FCMPackage.PORT__REQUIRED_INTERFACE:
+ return isSetRequiredInterface();
+ case FCMPackage.PORT__CONJUGATED:
+ return conjugated != CONJUGATED_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (conjugated: ");
+ result.append(conjugated);
+ result.append(')');
+ return result.toString();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * * @generated NOT
+ */
+ static EList<Interface> emptyList = new BasicEList<Interface>();
+
+ /**
+ * @return icon (serialized in port kind)
+ * @generated NOT
+ */
+ public Image getIcon()
+ {
+ if(getKind() != null) {
+ Class clazz = getKind().getBase_Class();
+
+ if(clazz instanceof Stereotype) {
+ EList<Image> icons = ((Stereotype)clazz).getIcons();
+ if(isConjugated()) {
+ if(icons.size() > 1) {
+ // standard position for conjugated icon
+ return icons.get(1);
+ }
+ }
+ else {
+ if(icons.size() > 0) {
+ return icons.get(0);
+ }
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PortKindImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PortKindImpl.java
new file mode 100644
index 00000000000..c2fa4eca6a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/PortKindImpl.java
@@ -0,0 +1,338 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Image;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Stereotype;
+
+import FCM.FCMPackage;
+import FCM.PortKind;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Port Kind</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.PortKindImpl#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.impl.PortKindImpl#getProvidedInterface <em>Provided Interface</em>}</li>
+ * <li>{@link FCM.impl.PortKindImpl#getRequiredInterface <em>Required Interface</em>}</li>
+ * <li>{@link FCM.impl.PortKindImpl#isExtendedPort <em>Extended Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class PortKindImpl extends EObjectImpl implements PortKind {
+
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * The cached value of the '{@link #getProvidedInterface() <em>Provided Interface</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getProvidedInterface()
+ * @generated
+ * @ordered
+ */
+ protected Interface providedInterface;
+
+ /**
+ * The cached value of the '{@link #getRequiredInterface() <em>Required Interface</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getRequiredInterface()
+ * @generated
+ * @ordered
+ */
+ protected Interface requiredInterface;
+
+ /**
+ * The default value of the '{@link #isExtendedPort() <em>Extended Port</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #isExtendedPort()
+ * @generated
+ * @ordered
+ */
+ protected static final boolean EXTENDED_PORT_EDEFAULT = false;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected PortKindImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.PORT_KIND;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.PORT_KIND__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.PORT_KIND__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Interface getProvidedInterface() {
+ if (providedInterface != null && providedInterface.eIsProxy()) {
+ InternalEObject oldProvidedInterface = (InternalEObject)providedInterface;
+ providedInterface = (Interface)eResolveProxy(oldProvidedInterface);
+ if (providedInterface != oldProvidedInterface) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.PORT_KIND__PROVIDED_INTERFACE, oldProvidedInterface, providedInterface));
+ }
+ }
+ return providedInterface;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Interface basicGetProvidedInterface() {
+ return providedInterface;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setProvidedInterface(Interface newProvidedInterface) {
+ Interface oldProvidedInterface = providedInterface;
+ providedInterface = newProvidedInterface;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.PORT_KIND__PROVIDED_INTERFACE, oldProvidedInterface, providedInterface));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Interface getRequiredInterface() {
+ if (requiredInterface != null && requiredInterface.eIsProxy()) {
+ InternalEObject oldRequiredInterface = (InternalEObject)requiredInterface;
+ requiredInterface = (Interface)eResolveProxy(oldRequiredInterface);
+ if (requiredInterface != oldRequiredInterface) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.PORT_KIND__REQUIRED_INTERFACE, oldRequiredInterface, requiredInterface));
+ }
+ }
+ return requiredInterface;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Interface basicGetRequiredInterface() {
+ return requiredInterface;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setRequiredInterface(Interface newRequiredInterface) {
+ Interface oldRequiredInterface = requiredInterface;
+ requiredInterface = newRequiredInterface;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.PORT_KIND__REQUIRED_INTERFACE, oldRequiredInterface, requiredInterface));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public boolean isExtendedPort() {
+ if(getBase_Class() != null) {
+ return getBase_Class().getOwnedPorts().size() > 0;
+ }
+ return false;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ public boolean isSetExtendedPort() {
+ return true;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.PORT_KIND__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ case FCMPackage.PORT_KIND__PROVIDED_INTERFACE:
+ if (resolve) return getProvidedInterface();
+ return basicGetProvidedInterface();
+ case FCMPackage.PORT_KIND__REQUIRED_INTERFACE:
+ if (resolve) return getRequiredInterface();
+ return basicGetRequiredInterface();
+ case FCMPackage.PORT_KIND__EXTENDED_PORT:
+ return isExtendedPort();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.PORT_KIND__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ case FCMPackage.PORT_KIND__PROVIDED_INTERFACE:
+ setProvidedInterface((Interface)newValue);
+ return;
+ case FCMPackage.PORT_KIND__REQUIRED_INTERFACE:
+ setRequiredInterface((Interface)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.PORT_KIND__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ case FCMPackage.PORT_KIND__PROVIDED_INTERFACE:
+ setProvidedInterface((Interface)null);
+ return;
+ case FCMPackage.PORT_KIND__REQUIRED_INTERFACE:
+ setRequiredInterface((Interface)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.PORT_KIND__BASE_CLASS:
+ return base_Class != null;
+ case FCMPackage.PORT_KIND__PROVIDED_INTERFACE:
+ return providedInterface != null;
+ case FCMPackage.PORT_KIND__REQUIRED_INTERFACE:
+ return requiredInterface != null;
+ case FCMPackage.PORT_KIND__EXTENDED_PORT:
+ return isSetExtendedPort();
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * @return icon (serialized in port kind)
+ * @generated NOT
+ */
+ public Image getIcon()
+ {
+ Class clazz = getBase_Class();
+
+ if(clazz instanceof Stereotype) {
+ EList<Image> icons = ((Stereotype)clazz).getIcons();
+ if(icons.size() > 0) {
+ return icons.get(0);
+ }
+ }
+ return null;
+ }
+} //PortKindImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/RuleApplicationImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/RuleApplicationImpl.java
new file mode 100644
index 00000000000..c94d52805e5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/RuleApplicationImpl.java
@@ -0,0 +1,263 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ContainerRule;
+import FCM.FCMPackage;
+import FCM.RuleApplication;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rule Application</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.RuleApplicationImpl#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.impl.RuleApplicationImpl#getContainerRule <em>Container Rule</em>}</li>
+ * <li>{@link FCM.impl.RuleApplicationImpl#getBase_Package <em>Base Package</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RuleApplicationImpl extends EObjectImpl implements RuleApplication {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * The cached value of the '{@link #getContainerRule() <em>Container Rule</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getContainerRule()
+ * @generated
+ * @ordered
+ */
+ protected EList<ContainerRule> containerRule;
+
+ /**
+ * The cached value of the '{@link #getBase_Package() <em>Base Package</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Package()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Package base_Package;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected RuleApplicationImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.RULE_APPLICATION;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.RULE_APPLICATION__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.RULE_APPLICATION__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ContainerRule> getContainerRule() {
+ if (containerRule == null) {
+ containerRule = new EObjectResolvingEList<ContainerRule>(ContainerRule.class, this, FCMPackage.RULE_APPLICATION__CONTAINER_RULE);
+ }
+ return containerRule;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package getBase_Package() {
+ if (base_Package != null && base_Package.eIsProxy()) {
+ InternalEObject oldBase_Package = (InternalEObject)base_Package;
+ base_Package = (org.eclipse.uml2.uml.Package)eResolveProxy(oldBase_Package);
+ if (base_Package != oldBase_Package) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.RULE_APPLICATION__BASE_PACKAGE, oldBase_Package, base_Package));
+ }
+ }
+ return base_Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Package basicGetBase_Package() {
+ return base_Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Package(org.eclipse.uml2.uml.Package newBase_Package) {
+ org.eclipse.uml2.uml.Package oldBase_Package = base_Package;
+ base_Package = newBase_Package;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.RULE_APPLICATION__BASE_PACKAGE, oldBase_Package, base_Package));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.RULE_APPLICATION__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ case FCMPackage.RULE_APPLICATION__CONTAINER_RULE:
+ return getContainerRule();
+ case FCMPackage.RULE_APPLICATION__BASE_PACKAGE:
+ if (resolve) return getBase_Package();
+ return basicGetBase_Package();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.RULE_APPLICATION__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ case FCMPackage.RULE_APPLICATION__CONTAINER_RULE:
+ getContainerRule().clear();
+ getContainerRule().addAll((Collection<? extends ContainerRule>)newValue);
+ return;
+ case FCMPackage.RULE_APPLICATION__BASE_PACKAGE:
+ setBase_Package((org.eclipse.uml2.uml.Package)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.RULE_APPLICATION__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ case FCMPackage.RULE_APPLICATION__CONTAINER_RULE:
+ getContainerRule().clear();
+ return;
+ case FCMPackage.RULE_APPLICATION__BASE_PACKAGE:
+ setBase_Package((org.eclipse.uml2.uml.Package)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.RULE_APPLICATION__BASE_CLASS:
+ return base_Class != null;
+ case FCMPackage.RULE_APPLICATION__CONTAINER_RULE:
+ return containerRule != null && !containerRule.isEmpty();
+ case FCMPackage.RULE_APPLICATION__BASE_PACKAGE:
+ return base_Package != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //RuleApplicationImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/SingletonImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/SingletonImpl.java
new file mode 100644
index 00000000000..09683d54e85
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/SingletonImpl.java
@@ -0,0 +1,160 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.Singleton;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Singleton</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.SingletonImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SingletonImpl extends EObjectImpl implements Singleton {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SingletonImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.SINGLETON;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.SINGLETON__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.SINGLETON__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.SINGLETON__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.SINGLETON__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.SINGLETON__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.SINGLETON__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SingletonImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TargetArchitectureImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TargetArchitectureImpl.java
new file mode 100644
index 00000000000..0d0c1a3f672
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TargetArchitectureImpl.java
@@ -0,0 +1,160 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.TargetArchitecture;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Target Architecture</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.TargetArchitectureImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TargetArchitectureImpl extends EObjectImpl implements TargetArchitecture {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TargetArchitectureImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.TARGET_ARCHITECTURE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.TARGET_ARCHITECTURE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TARGET_ARCHITECTURE__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.TARGET_ARCHITECTURE__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.TARGET_ARCHITECTURE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.TARGET_ARCHITECTURE__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.TARGET_ARCHITECTURE__BASE_CLASS:
+ return base_Class != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //TargetArchitectureImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TargetImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TargetImpl.java
new file mode 100644
index 00000000000..e8b666337d1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TargetImpl.java
@@ -0,0 +1,447 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ConfigOption;
+import FCM.FCMPackage;
+import FCM.OperatingSystem;
+import FCM.Target;
+import FCM.TargetArchitecture;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.uml2.uml.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Target</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.TargetImpl#getTargetArch <em>Target Arch</em>}</li>
+ * <li>{@link FCM.impl.TargetImpl#getOptions <em>Options</em>}</li>
+ * <li>{@link FCM.impl.TargetImpl#getBase_Node <em>Base Node</em>}</li>
+ * <li>{@link FCM.impl.TargetImpl#getUsedOS <em>Used OS</em>}</li>
+ * <li>{@link FCM.impl.TargetImpl#getAvailRAM <em>Avail RAM</em>}</li>
+ * <li>{@link FCM.impl.TargetImpl#getAvailROM <em>Avail ROM</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TargetImpl extends EObjectImpl implements Target {
+ /**
+ * The cached value of the '{@link #getTargetArch() <em>Target Arch</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTargetArch()
+ * @generated
+ * @ordered
+ */
+ protected TargetArchitecture targetArch;
+
+ /**
+ * The cached value of the '{@link #getOptions() <em>Options</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOptions()
+ * @generated
+ * @ordered
+ */
+ protected EList<ConfigOption> options;
+
+ /**
+ * The cached value of the '{@link #getBase_Node() <em>Base Node</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Node()
+ * @generated
+ * @ordered
+ */
+ protected Node base_Node;
+
+ /**
+ * The cached value of the '{@link #getUsedOS() <em>Used OS</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getUsedOS()
+ * @generated
+ * @ordered
+ */
+ protected OperatingSystem usedOS;
+
+ /**
+ * The default value of the '{@link #getAvailRAM() <em>Avail RAM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAvailRAM()
+ * @generated
+ * @ordered
+ */
+ protected static final int AVAIL_RAM_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getAvailRAM() <em>Avail RAM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAvailRAM()
+ * @generated
+ * @ordered
+ */
+ protected int availRAM = AVAIL_RAM_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getAvailROM() <em>Avail ROM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAvailROM()
+ * @generated
+ * @ordered
+ */
+ protected static final int AVAIL_ROM_EDEFAULT = 0;
+
+ /**
+ * The cached value of the '{@link #getAvailROM() <em>Avail ROM</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getAvailROM()
+ * @generated
+ * @ordered
+ */
+ protected int availROM = AVAIL_ROM_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TargetImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.TARGET;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TargetArchitecture getTargetArch() {
+ if (targetArch != null && targetArch.eIsProxy()) {
+ InternalEObject oldTargetArch = (InternalEObject)targetArch;
+ targetArch = (TargetArchitecture)eResolveProxy(oldTargetArch);
+ if (targetArch != oldTargetArch) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.TARGET__TARGET_ARCH, oldTargetArch, targetArch));
+ }
+ }
+ return targetArch;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TargetArchitecture basicGetTargetArch() {
+ return targetArch;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTargetArch(TargetArchitecture newTargetArch) {
+ TargetArchitecture oldTargetArch = targetArch;
+ targetArch = newTargetArch;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TARGET__TARGET_ARCH, oldTargetArch, targetArch));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<ConfigOption> getOptions() {
+ if (options == null) {
+ options = new EObjectResolvingEList<ConfigOption>(ConfigOption.class, this, FCMPackage.TARGET__OPTIONS);
+ }
+ return options;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getBase_Node() {
+ if (base_Node != null && base_Node.eIsProxy()) {
+ InternalEObject oldBase_Node = (InternalEObject)base_Node;
+ base_Node = (Node)eResolveProxy(oldBase_Node);
+ if (base_Node != oldBase_Node) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.TARGET__BASE_NODE, oldBase_Node, base_Node));
+ }
+ }
+ return base_Node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetBase_Node() {
+ return base_Node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Node(Node newBase_Node) {
+ Node oldBase_Node = base_Node;
+ base_Node = newBase_Node;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TARGET__BASE_NODE, oldBase_Node, base_Node));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatingSystem getUsedOS() {
+ if (usedOS != null && usedOS.eIsProxy()) {
+ InternalEObject oldUsedOS = (InternalEObject)usedOS;
+ usedOS = (OperatingSystem)eResolveProxy(oldUsedOS);
+ if (usedOS != oldUsedOS) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.TARGET__USED_OS, oldUsedOS, usedOS));
+ }
+ }
+ return usedOS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public OperatingSystem basicGetUsedOS() {
+ return usedOS;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setUsedOS(OperatingSystem newUsedOS) {
+ OperatingSystem oldUsedOS = usedOS;
+ usedOS = newUsedOS;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TARGET__USED_OS, oldUsedOS, usedOS));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getAvailRAM() {
+ return availRAM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAvailRAM(int newAvailRAM) {
+ int oldAvailRAM = availRAM;
+ availRAM = newAvailRAM;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TARGET__AVAIL_RAM, oldAvailRAM, availRAM));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public int getAvailROM() {
+ return availROM;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setAvailROM(int newAvailROM) {
+ int oldAvailROM = availROM;
+ availROM = newAvailROM;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TARGET__AVAIL_ROM, oldAvailROM, availROM));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.TARGET__TARGET_ARCH:
+ if (resolve) return getTargetArch();
+ return basicGetTargetArch();
+ case FCMPackage.TARGET__OPTIONS:
+ return getOptions();
+ case FCMPackage.TARGET__BASE_NODE:
+ if (resolve) return getBase_Node();
+ return basicGetBase_Node();
+ case FCMPackage.TARGET__USED_OS:
+ if (resolve) return getUsedOS();
+ return basicGetUsedOS();
+ case FCMPackage.TARGET__AVAIL_RAM:
+ return getAvailRAM();
+ case FCMPackage.TARGET__AVAIL_ROM:
+ return getAvailROM();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.TARGET__TARGET_ARCH:
+ setTargetArch((TargetArchitecture)newValue);
+ return;
+ case FCMPackage.TARGET__OPTIONS:
+ getOptions().clear();
+ getOptions().addAll((Collection<? extends ConfigOption>)newValue);
+ return;
+ case FCMPackage.TARGET__BASE_NODE:
+ setBase_Node((Node)newValue);
+ return;
+ case FCMPackage.TARGET__USED_OS:
+ setUsedOS((OperatingSystem)newValue);
+ return;
+ case FCMPackage.TARGET__AVAIL_RAM:
+ setAvailRAM((Integer)newValue);
+ return;
+ case FCMPackage.TARGET__AVAIL_ROM:
+ setAvailROM((Integer)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.TARGET__TARGET_ARCH:
+ setTargetArch((TargetArchitecture)null);
+ return;
+ case FCMPackage.TARGET__OPTIONS:
+ getOptions().clear();
+ return;
+ case FCMPackage.TARGET__BASE_NODE:
+ setBase_Node((Node)null);
+ return;
+ case FCMPackage.TARGET__USED_OS:
+ setUsedOS((OperatingSystem)null);
+ return;
+ case FCMPackage.TARGET__AVAIL_RAM:
+ setAvailRAM(AVAIL_RAM_EDEFAULT);
+ return;
+ case FCMPackage.TARGET__AVAIL_ROM:
+ setAvailROM(AVAIL_ROM_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.TARGET__TARGET_ARCH:
+ return targetArch != null;
+ case FCMPackage.TARGET__OPTIONS:
+ return options != null && !options.isEmpty();
+ case FCMPackage.TARGET__BASE_NODE:
+ return base_Node != null;
+ case FCMPackage.TARGET__USED_OS:
+ return usedOS != null;
+ case FCMPackage.TARGET__AVAIL_RAM:
+ return availRAM != AVAIL_RAM_EDEFAULT;
+ case FCMPackage.TARGET__AVAIL_ROM:
+ return availROM != AVAIL_ROM_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (availRAM: ");
+ result.append(availRAM);
+ result.append(", availROM: ");
+ result.append(availROM);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TargetImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TemplateImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TemplateImpl.java
new file mode 100644
index 00000000000..2feecbd256d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/TemplateImpl.java
@@ -0,0 +1,328 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.ActualChoice;
+import FCM.FCMPackage;
+import FCM.Template;
+import FCM.TemplateKind;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Template</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.TemplateImpl#getTemplateParams <em>Template Params</em>}</li>
+ * <li>{@link FCM.impl.TemplateImpl#getBase_Element <em>Base Element</em>}</li>
+ * <li>{@link FCM.impl.TemplateImpl#getKind <em>Kind</em>}</li>
+ * <li>{@link FCM.impl.TemplateImpl#getActualChoice <em>Actual Choice</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class TemplateImpl extends EObjectImpl implements Template {
+ /**
+ * The cached value of the '{@link #getTemplateParams() <em>Template Params</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTemplateParams()
+ * @generated
+ * @ordered
+ */
+ protected EList<Classifier> templateParams;
+
+ /**
+ * The cached value of the '{@link #getBase_Element() <em>Base Element</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Element()
+ * @generated
+ * @ordered
+ */
+ protected Element base_Element;
+
+ /**
+ * The default value of the '{@link #getKind() <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKind()
+ * @generated
+ * @ordered
+ */
+ protected static final TemplateKind KIND_EDEFAULT = TemplateKind.PASS_FORMAL;
+
+ /**
+ * The cached value of the '{@link #getKind() <em>Kind</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getKind()
+ * @generated
+ * @ordered
+ */
+ protected TemplateKind kind = KIND_EDEFAULT;
+
+ /**
+ * The default value of the '{@link #getActualChoice() <em>Actual Choice</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActualChoice()
+ * @generated
+ * @ordered
+ */
+ protected static final ActualChoice ACTUAL_CHOICE_EDEFAULT = ActualChoice.PASS_ACTUAL;
+
+ /**
+ * The cached value of the '{@link #getActualChoice() <em>Actual Choice</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getActualChoice()
+ * @generated
+ * @ordered
+ */
+ protected ActualChoice actualChoice = ACTUAL_CHOICE_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected TemplateImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.TEMPLATE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Classifier> getTemplateParams() {
+ if (templateParams == null) {
+ templateParams = new EObjectResolvingEList<Classifier>(Classifier.class, this, FCMPackage.TEMPLATE__TEMPLATE_PARAMS);
+ }
+ return templateParams;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element getBase_Element() {
+ if (base_Element != null && base_Element.eIsProxy()) {
+ InternalEObject oldBase_Element = (InternalEObject)base_Element;
+ base_Element = (Element)eResolveProxy(oldBase_Element);
+ if (base_Element != oldBase_Element) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.TEMPLATE__BASE_ELEMENT, oldBase_Element, base_Element));
+ }
+ }
+ return base_Element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Element basicGetBase_Element() {
+ return base_Element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Element(Element newBase_Element) {
+ Element oldBase_Element = base_Element;
+ base_Element = newBase_Element;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TEMPLATE__BASE_ELEMENT, oldBase_Element, base_Element));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public TemplateKind getKind() {
+ return kind;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setKind(TemplateKind newKind) {
+ TemplateKind oldKind = kind;
+ kind = newKind == null ? KIND_EDEFAULT : newKind;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TEMPLATE__KIND, oldKind, kind));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public ActualChoice getActualChoice() {
+ return actualChoice;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setActualChoice(ActualChoice newActualChoice) {
+ ActualChoice oldActualChoice = actualChoice;
+ actualChoice = newActualChoice == null ? ACTUAL_CHOICE_EDEFAULT : newActualChoice;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.TEMPLATE__ACTUAL_CHOICE, oldActualChoice, actualChoice));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.TEMPLATE__TEMPLATE_PARAMS:
+ return getTemplateParams();
+ case FCMPackage.TEMPLATE__BASE_ELEMENT:
+ if (resolve) return getBase_Element();
+ return basicGetBase_Element();
+ case FCMPackage.TEMPLATE__KIND:
+ return getKind();
+ case FCMPackage.TEMPLATE__ACTUAL_CHOICE:
+ return getActualChoice();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.TEMPLATE__TEMPLATE_PARAMS:
+ getTemplateParams().clear();
+ getTemplateParams().addAll((Collection<? extends Classifier>)newValue);
+ return;
+ case FCMPackage.TEMPLATE__BASE_ELEMENT:
+ setBase_Element((Element)newValue);
+ return;
+ case FCMPackage.TEMPLATE__KIND:
+ setKind((TemplateKind)newValue);
+ return;
+ case FCMPackage.TEMPLATE__ACTUAL_CHOICE:
+ setActualChoice((ActualChoice)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.TEMPLATE__TEMPLATE_PARAMS:
+ getTemplateParams().clear();
+ return;
+ case FCMPackage.TEMPLATE__BASE_ELEMENT:
+ setBase_Element((Element)null);
+ return;
+ case FCMPackage.TEMPLATE__KIND:
+ setKind(KIND_EDEFAULT);
+ return;
+ case FCMPackage.TEMPLATE__ACTUAL_CHOICE:
+ setActualChoice(ACTUAL_CHOICE_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.TEMPLATE__TEMPLATE_PARAMS:
+ return templateParams != null && !templateParams.isEmpty();
+ case FCMPackage.TEMPLATE__BASE_ELEMENT:
+ return base_Element != null;
+ case FCMPackage.TEMPLATE__KIND:
+ return kind != KIND_EDEFAULT;
+ case FCMPackage.TEMPLATE__ACTUAL_CHOICE:
+ return actualChoice != ACTUAL_CHOICE_EDEFAULT;
+ }
+ return super.eIsSet(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String toString() {
+ if (eIsProxy()) return super.toString();
+
+ StringBuffer result = new StringBuffer(super.toString());
+ result.append(" (kind: ");
+ result.append(kind);
+ result.append(", actualChoice: ");
+ result.append(actualChoice);
+ result.append(')');
+ return result.toString();
+ }
+
+} //TemplateImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/UseInstanceConfiguratorImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/UseInstanceConfiguratorImpl.java
new file mode 100644
index 00000000000..6473ffdf0e5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/impl/UseInstanceConfiguratorImpl.java
@@ -0,0 +1,221 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.impl;
+
+import FCM.FCMPackage;
+import FCM.InstanceConfigurator;
+import FCM.UseInstanceConfigurator;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Use Instance Configurator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link FCM.impl.UseInstanceConfiguratorImpl#getBase_Class <em>Base Class</em>}</li>
+ * <li>{@link FCM.impl.UseInstanceConfiguratorImpl#getConfigurator <em>Configurator</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class UseInstanceConfiguratorImpl extends EObjectImpl implements UseInstanceConfigurator {
+ /**
+ * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Class()
+ * @generated
+ * @ordered
+ */
+ protected org.eclipse.uml2.uml.Class base_Class;
+
+ /**
+ * The cached value of the '{@link #getConfigurator() <em>Configurator</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getConfigurator()
+ * @generated
+ * @ordered
+ */
+ protected InstanceConfigurator configurator;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected UseInstanceConfiguratorImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return FCMPackage.Literals.USE_INSTANCE_CONFIGURATOR;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class getBase_Class() {
+ if (base_Class != null && base_Class.eIsProxy()) {
+ InternalEObject oldBase_Class = (InternalEObject)base_Class;
+ base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+ if (base_Class != oldBase_Class) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.USE_INSTANCE_CONFIGURATOR__BASE_CLASS, oldBase_Class, base_Class));
+ }
+ }
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+ return base_Class;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+ org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+ base_Class = newBase_Class;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.USE_INSTANCE_CONFIGURATOR__BASE_CLASS, oldBase_Class, base_Class));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanceConfigurator getConfigurator() {
+ if (configurator != null && configurator.eIsProxy()) {
+ InternalEObject oldConfigurator = (InternalEObject)configurator;
+ configurator = (InstanceConfigurator)eResolveProxy(oldConfigurator);
+ if (configurator != oldConfigurator) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, FCMPackage.USE_INSTANCE_CONFIGURATOR__CONFIGURATOR, oldConfigurator, configurator));
+ }
+ }
+ return configurator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public InstanceConfigurator basicGetConfigurator() {
+ return configurator;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setConfigurator(InstanceConfigurator newConfigurator) {
+ InstanceConfigurator oldConfigurator = configurator;
+ configurator = newConfigurator;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, FCMPackage.USE_INSTANCE_CONFIGURATOR__CONFIGURATOR, oldConfigurator, configurator));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR__BASE_CLASS:
+ if (resolve) return getBase_Class();
+ return basicGetBase_Class();
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR__CONFIGURATOR:
+ if (resolve) return getConfigurator();
+ return basicGetConfigurator();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+ return;
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR__CONFIGURATOR:
+ setConfigurator((InstanceConfigurator)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR__BASE_CLASS:
+ setBase_Class((org.eclipse.uml2.uml.Class)null);
+ return;
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR__CONFIGURATOR:
+ setConfigurator((InstanceConfigurator)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR__BASE_CLASS:
+ return base_Class != null;
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR__CONFIGURATOR:
+ return configurator != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //UseInstanceConfiguratorImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/CommandSupport.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/CommandSupport.java
new file mode 100644
index 00000000000..daa796f4e09
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/CommandSupport.java
@@ -0,0 +1,58 @@
+package FCM.util;
+
+import java.util.Collections;
+
+import org.eclipse.core.commands.common.CommandException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.OperationHistoryFactory;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.impl.InternalTransaction;
+import org.eclipse.emf.transaction.impl.InternalTransactionalEditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+
+/**
+ * Utility function. Allow adaption to command stack
+ *
+ * @author ansgar
+ *
+ */
+public class CommandSupport
+{
+ public static boolean isWriteTransactionActive(TransactionalEditingDomain domain) {
+ if (domain instanceof InternalTransactionalEditingDomain) {
+ InternalTransactionalEditingDomain internalDomain = (InternalTransactionalEditingDomain) domain;
+ InternalTransaction transaction = internalDomain.getActiveTransaction();
+ if (transaction != null && !transaction.isReadOnly()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ /**
+ * Execute the passed Runnable within a command
+ * @param label
+ * @param command
+ */
+ public static void exec (TransactionalEditingDomain domain, String label, final Runnable command)
+ {
+ IOperationHistory history = OperationHistoryFactory.getOperationHistory();
+ try {
+ AbstractTransactionalCommand transactionCommand = new AbstractTransactionalCommand (domain, label, Collections.EMPTY_LIST) {
+ public CommandResult doExecuteWithResult (IProgressMonitor dummy, IAdaptable info) {
+ command.run ();
+ return CommandResult.newOKCommandResult();
+ }
+ };
+
+ history.execute (transactionCommand, null, null);
+ }
+ catch (CommandException e) {
+ e.printStackTrace ();
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/ConnectorTypeUtil.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/ConnectorTypeUtil.java
new file mode 100644
index 00000000000..da81611bafb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/ConnectorTypeUtil.java
@@ -0,0 +1,29 @@
+package FCM.util;
+
+import java.util.ArrayList;
+
+import org.eclipse.uml2.uml.Collaboration;
+
+import FCM.InteractionComponent;
+
+public class ConnectorTypeUtil {
+
+ protected Collaboration connectionPattern = null;
+
+ protected InteractionComponent connectorComp = null;
+
+ protected FCMUtil.RoleBindingTable bindingTable = null;
+
+ public FCMUtil.RoleBindingTable getRoleBindings(FCM.Connector connector) {
+ if(connector.getIc() instanceof InteractionComponent) {
+ connectorComp = (InteractionComponent)connector.getIc();
+ connectionPattern = connectorComp.getConnectionPattern();
+ bindingTable = new FCMUtil.RoleBindingTable();
+ for(org.eclipse.uml2.uml.ConnectableElement role : connectionPattern.getRoles()) {
+ bindingTable.addEntry(role, new ArrayList<org.eclipse.uml2.uml.NamedElement>());
+ }
+ return bindingTable;
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMAdapterFactory.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMAdapterFactory.java
new file mode 100644
index 00000000000..4ee5e6b3990
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMAdapterFactory.java
@@ -0,0 +1,718 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.util;
+
+import FCM.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see FCM.FCMPackage
+ * @generated
+ */
+public class FCMAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static FCMPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FCMAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = FCMPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Returns whether this factory is applicable for the type of the object.
+ * <!-- begin-user-doc -->
+ * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+ * <!-- end-user-doc -->
+ * @return whether this factory is applicable for the type of the object.
+ * @generated
+ */
+ @Override
+ public boolean isFactoryForType(Object object) {
+ if (object == modelPackage) {
+ return true;
+ }
+ if (object instanceof EObject) {
+ return ((EObject)object).eClass().getEPackage() == modelPackage;
+ }
+ return false;
+ }
+
+ /**
+ * The switch that delegates to the <code>createXXX</code> methods.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected FCMSwitch<Adapter> modelSwitch =
+ new FCMSwitch<Adapter>() {
+ @Override
+ public Adapter caseTemplate(Template object) {
+ return createTemplateAdapter();
+ }
+ @Override
+ public Adapter caseConfigurationProperty(ConfigurationProperty object) {
+ return createConfigurationPropertyAdapter();
+ }
+ @Override
+ public Adapter caseImplementationGroup(ImplementationGroup object) {
+ return createImplementationGroupAdapter();
+ }
+ @Override
+ public Adapter caseRuleApplication(RuleApplication object) {
+ return createRuleApplicationAdapter();
+ }
+ @Override
+ public Adapter caseContainerRule(ContainerRule object) {
+ return createContainerRuleAdapter();
+ }
+ @Override
+ public Adapter caseConfigOption(ConfigOption object) {
+ return createConfigOptionAdapter();
+ }
+ @Override
+ public Adapter caseSingleton(Singleton object) {
+ return createSingletonAdapter();
+ }
+ @Override
+ public Adapter caseInteractionComponent(InteractionComponent object) {
+ return createInteractionComponentAdapter();
+ }
+ @Override
+ public Adapter casePortKind(PortKind object) {
+ return createPortKindAdapter();
+ }
+ @Override
+ public Adapter casePort(Port object) {
+ return createPortAdapter();
+ }
+ @Override
+ public Adapter caseConfigurableElementInstance(ConfigurableElementInstance object) {
+ return createConfigurableElementInstanceAdapter();
+ }
+ @Override
+ public Adapter caseConnector(Connector object) {
+ return createConnectorAdapter();
+ }
+ @Override
+ public Adapter caseDeploymentPlan(DeploymentPlan object) {
+ return createDeploymentPlanAdapter();
+ }
+ @Override
+ public Adapter caseDerivedElement(DerivedElement object) {
+ return createDerivedElementAdapter();
+ }
+ @Override
+ public Adapter caseCompImplTemplate(CompImplTemplate object) {
+ return createCompImplTemplateAdapter();
+ }
+ @Override
+ public Adapter caseCppLibrary(CppLibrary object) {
+ return createCppLibraryAdapter();
+ }
+ @Override
+ public Adapter caseExternalLibrary(ExternalLibrary object) {
+ return createExternalLibraryAdapter();
+ }
+ @Override
+ public Adapter caseJavaLibrary(JavaLibrary object) {
+ return createJavaLibraryAdapter();
+ }
+ @Override
+ public Adapter caseImplementationProperties(ImplementationProperties object) {
+ return createImplementationPropertiesAdapter();
+ }
+ @Override
+ public Adapter caseOperatingSystem(OperatingSystem object) {
+ return createOperatingSystemAdapter();
+ }
+ @Override
+ public Adapter caseTargetArchitecture(TargetArchitecture object) {
+ return createTargetArchitectureAdapter();
+ }
+ @Override
+ public Adapter caseConfiguration(Configuration object) {
+ return createConfigurationAdapter();
+ }
+ @Override
+ public Adapter caseInterceptionRule(InterceptionRule object) {
+ return createInterceptionRuleAdapter();
+ }
+ @Override
+ public Adapter caseTarget(Target object) {
+ return createTargetAdapter();
+ }
+ @Override
+ public Adapter casePart(Part object) {
+ return createPartAdapter();
+ }
+ @Override
+ public Adapter caseCopyAttributeValue(CopyAttributeValue object) {
+ return createCopyAttributeValueAdapter();
+ }
+ @Override
+ public Adapter caseAutoIndex(AutoIndex object) {
+ return createAutoIndexAdapter();
+ }
+ @Override
+ public Adapter caseAutoIndexPerNode(AutoIndexPerNode object) {
+ return createAutoIndexPerNodeAdapter();
+ }
+ @Override
+ public Adapter caseInitPrecedence(InitPrecedence object) {
+ return createInitPrecedenceAdapter();
+ }
+ @Override
+ public Adapter caseConnectorConfiguration(ConnectorConfiguration object) {
+ return createConnectorConfigurationAdapter();
+ }
+ @Override
+ public Adapter caseExtendedSignature(ExtendedSignature object) {
+ return createExtendedSignatureAdapter();
+ }
+ @Override
+ public Adapter caseContainerPort(ContainerPort object) {
+ return createContainerPortAdapter();
+ }
+ @Override
+ public Adapter caseUseInstanceConfigurator(UseInstanceConfigurator object) {
+ return createUseInstanceConfiguratorAdapter();
+ }
+ @Override
+ public Adapter caseInstanceConfigurator(InstanceConfigurator object) {
+ return createInstanceConfiguratorAdapter();
+ }
+ @Override
+ public Adapter defaultCase(EObject object) {
+ return createEObjectAdapter();
+ }
+ };
+
+ /**
+ * Creates an adapter for the <code>target</code>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param target the object to adapt.
+ * @return the adapter for the <code>target</code>.
+ * @generated
+ */
+ @Override
+ public Adapter createAdapter(Notifier target) {
+ return modelSwitch.doSwitch((EObject)target);
+ }
+
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.Template <em>Template</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.Template
+ * @generated
+ */
+ public Adapter createTemplateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.CompImplTemplate <em>Comp Impl Template</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.CompImplTemplate
+ * @generated
+ */
+ public Adapter createCompImplTemplateAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.PortKind <em>Port Kind</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.PortKind
+ * @generated
+ */
+ public Adapter createPortKindAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.Port <em>Port</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.Port
+ * @generated
+ */
+ public Adapter createPortAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ConfigurableElementInstance <em>Configurable Element Instance</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ConfigurableElementInstance
+ * @generated
+ */
+ public Adapter createConfigurableElementInstanceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.Connector <em>Connector</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.Connector
+ * @generated
+ */
+ public Adapter createConnectorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ConfigurationProperty <em>Configuration Property</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ConfigurationProperty
+ * @generated
+ */
+ public Adapter createConfigurationPropertyAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.DeploymentPlan <em>Deployment Plan</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.DeploymentPlan
+ * @generated
+ */
+ public Adapter createDeploymentPlanAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.DerivedElement <em>Derived Element</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.DerivedElement
+ * @generated
+ */
+ public Adapter createDerivedElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ContainerRule <em>Container Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ContainerRule
+ * @generated
+ */
+ public Adapter createContainerRuleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ConfigOption <em>Config Option</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ConfigOption
+ * @generated
+ */
+ public Adapter createConfigOptionAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.Singleton <em>Singleton</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.Singleton
+ * @generated
+ */
+ public Adapter createSingletonAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.InteractionComponent <em>Interaction Component</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.InteractionComponent
+ * @generated
+ */
+ public Adapter createInteractionComponentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.Configuration <em>Configuration</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.Configuration
+ * @generated
+ */
+ public Adapter createConfigurationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.InterceptionRule <em>Interception Rule</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.InterceptionRule
+ * @generated
+ */
+ public Adapter createInterceptionRuleAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.CppLibrary <em>Cpp Library</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.CppLibrary
+ * @generated
+ */
+ public Adapter createCppLibraryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ExternalLibrary <em>External Library</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ExternalLibrary
+ * @generated
+ */
+ public Adapter createExternalLibraryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ImplementationGroup <em>Implementation Group</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ImplementationGroup
+ * @generated
+ */
+ public Adapter createImplementationGroupAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.RuleApplication <em>Rule Application</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.RuleApplication
+ * @generated
+ */
+ public Adapter createRuleApplicationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.JavaLibrary <em>Java Library</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.JavaLibrary
+ * @generated
+ */
+ public Adapter createJavaLibraryAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ImplementationProperties <em>Implementation Properties</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ImplementationProperties
+ * @generated
+ */
+ public Adapter createImplementationPropertiesAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.OperatingSystem <em>Operating System</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.OperatingSystem
+ * @generated
+ */
+ public Adapter createOperatingSystemAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.TargetArchitecture <em>Target Architecture</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.TargetArchitecture
+ * @generated
+ */
+ public Adapter createTargetArchitectureAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.Target <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.Target
+ * @generated
+ */
+ public Adapter createTargetAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.Part <em>Part</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.Part
+ * @generated
+ */
+ public Adapter createPartAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.CopyAttributeValue <em>Copy Attribute Value</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.CopyAttributeValue
+ * @generated
+ */
+ public Adapter createCopyAttributeValueAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.AutoIndex <em>Auto Index</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.AutoIndex
+ * @generated
+ */
+ public Adapter createAutoIndexAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.AutoIndexPerNode <em>Auto Index Per Node</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.AutoIndexPerNode
+ * @generated
+ */
+ public Adapter createAutoIndexPerNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.InitPrecedence <em>Init Precedence</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.InitPrecedence
+ * @generated
+ */
+ public Adapter createInitPrecedenceAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ConnectorConfiguration <em>Connector Configuration</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ConnectorConfiguration
+ * @generated
+ */
+ public Adapter createConnectorConfigurationAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ExtendedSignature <em>Extended Signature</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ExtendedSignature
+ * @generated
+ */
+ public Adapter createExtendedSignatureAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.ContainerPort <em>Container Port</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.ContainerPort
+ * @generated
+ */
+ public Adapter createContainerPortAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.UseInstanceConfigurator <em>Use Instance Configurator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.UseInstanceConfigurator
+ * @generated
+ */
+ public Adapter createUseInstanceConfiguratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link FCM.InstanceConfigurator <em>Instance Configurator</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see FCM.InstanceConfigurator
+ * @generated
+ */
+ public Adapter createInstanceConfiguratorAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for the default case.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @generated
+ */
+ public Adapter createEObjectAdapter() {
+ return null;
+ }
+
+} //FCMAdapterFactory
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMResourceFactoryImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMResourceFactoryImpl.java
new file mode 100644
index 00000000000..a70f727773c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMResourceFactoryImpl.java
@@ -0,0 +1,56 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see FCM.util.FCMResourceImpl
+ * @generated
+ */
+public class FCMResourceFactoryImpl extends ResourceFactoryImpl {
+ /**
+ * Creates an instance of the resource factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FCMResourceFactoryImpl() {
+ super();
+ }
+
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Resource createResource(URI uri) {
+ XMLResource result = new FCMResourceImpl(uri);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+ result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+ result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+ return result;
+ }
+
+} //FCMResourceFactoryImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMResourceImpl.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMResourceImpl.java
new file mode 100644
index 00000000000..0774a848d46
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMResourceImpl.java
@@ -0,0 +1,32 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see FCM.util.FCMResourceFactoryImpl
+ * @generated
+ */
+public class FCMResourceImpl extends XMLResourceImpl {
+ /**
+ * Creates an instance of the resource.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param uri the URI of the new resource.
+ * @generated
+ */
+ public FCMResourceImpl(URI uri) {
+ super(uri);
+ }
+
+} //FCMResourceImpl
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMSwitch.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMSwitch.java
new file mode 100644
index 00000000000..ba2a6fe6874
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMSwitch.java
@@ -0,0 +1,848 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.util;
+
+import FCM.*;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+
+import FCM.AutoIndex;
+import FCM.AutoIndexPerNode;
+import FCM.CompImplTemplate;
+import FCM.ConfigOption;
+import FCM.ConfigurableElementInstance;
+import FCM.Configuration;
+import FCM.ConfigurationProperty;
+import FCM.Connector;
+import FCM.ConnectorConfiguration;
+import FCM.ContainerPort;
+import FCM.ContainerRule;
+import FCM.CopyAttributeValue;
+import FCM.CppLibrary;
+import FCM.DeploymentPlan;
+import FCM.DerivedElement;
+import FCM.ExtendedSignature;
+import FCM.ExternalLibrary;
+import FCM.FCMPackage;
+import FCM.ImplementationGroup;
+import FCM.ImplementationProperties;
+import FCM.InitPrecedence;
+import FCM.InstanceConfigurator;
+import FCM.InteractionComponent;
+import FCM.InterceptionRule;
+import FCM.JavaLibrary;
+import FCM.OperatingSystem;
+import FCM.Part;
+import FCM.Port;
+import FCM.PortKind;
+import FCM.RuleApplication;
+import FCM.Singleton;
+import FCM.Target;
+import FCM.TargetArchitecture;
+import FCM.Template;
+import FCM.UseInstanceConfigurator;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)} to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see FCM.FCMPackage
+ * @generated
+ */
+public class FCMSwitch<T> extends Switch<T> {
+
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static FCMPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FCMSwitch() {
+ if (modelPackage == null) {
+ modelPackage = FCMPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @parameter ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case FCMPackage.TEMPLATE: {
+ Template template = (Template)theEObject;
+ T result = caseTemplate(template);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CONFIGURATION_PROPERTY: {
+ ConfigurationProperty configurationProperty = (ConfigurationProperty)theEObject;
+ T result = caseConfigurationProperty(configurationProperty);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.IMPLEMENTATION_GROUP: {
+ ImplementationGroup implementationGroup = (ImplementationGroup)theEObject;
+ T result = caseImplementationGroup(implementationGroup);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.RULE_APPLICATION: {
+ RuleApplication ruleApplication = (RuleApplication)theEObject;
+ T result = caseRuleApplication(ruleApplication);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CONTAINER_RULE: {
+ ContainerRule containerRule = (ContainerRule)theEObject;
+ T result = caseContainerRule(containerRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CONFIG_OPTION: {
+ ConfigOption configOption = (ConfigOption)theEObject;
+ T result = caseConfigOption(configOption);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.SINGLETON: {
+ Singleton singleton = (Singleton)theEObject;
+ T result = caseSingleton(singleton);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.INTERACTION_COMPONENT: {
+ InteractionComponent interactionComponent = (InteractionComponent)theEObject;
+ T result = caseInteractionComponent(interactionComponent);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.PORT_KIND: {
+ PortKind portKind = (PortKind)theEObject;
+ T result = casePortKind(portKind);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.PORT: {
+ Port port = (Port)theEObject;
+ T result = casePort(port);
+ if (result == null) result = caseConfigurableElementInstance(port);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CONFIGURABLE_ELEMENT_INSTANCE: {
+ ConfigurableElementInstance configurableElementInstance = (ConfigurableElementInstance)theEObject;
+ T result = caseConfigurableElementInstance(configurableElementInstance);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CONNECTOR: {
+ Connector connector = (Connector)theEObject;
+ T result = caseConnector(connector);
+ if (result == null) result = caseConfigurableElementInstance(connector);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.DEPLOYMENT_PLAN: {
+ DeploymentPlan deploymentPlan = (DeploymentPlan)theEObject;
+ T result = caseDeploymentPlan(deploymentPlan);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.DERIVED_ELEMENT: {
+ DerivedElement derivedElement = (DerivedElement)theEObject;
+ T result = caseDerivedElement(derivedElement);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.COMP_IMPL_TEMPLATE: {
+ CompImplTemplate compImplTemplate = (CompImplTemplate)theEObject;
+ T result = caseCompImplTemplate(compImplTemplate);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CPP_LIBRARY: {
+ CppLibrary cppLibrary = (CppLibrary)theEObject;
+ T result = caseCppLibrary(cppLibrary);
+ if (result == null) result = caseExternalLibrary(cppLibrary);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.EXTERNAL_LIBRARY: {
+ ExternalLibrary externalLibrary = (ExternalLibrary)theEObject;
+ T result = caseExternalLibrary(externalLibrary);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.JAVA_LIBRARY: {
+ JavaLibrary javaLibrary = (JavaLibrary)theEObject;
+ T result = caseJavaLibrary(javaLibrary);
+ if (result == null) result = caseExternalLibrary(javaLibrary);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.IMPLEMENTATION_PROPERTIES: {
+ ImplementationProperties implementationProperties = (ImplementationProperties)theEObject;
+ T result = caseImplementationProperties(implementationProperties);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.OPERATING_SYSTEM: {
+ OperatingSystem operatingSystem = (OperatingSystem)theEObject;
+ T result = caseOperatingSystem(operatingSystem);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.TARGET_ARCHITECTURE: {
+ TargetArchitecture targetArchitecture = (TargetArchitecture)theEObject;
+ T result = caseTargetArchitecture(targetArchitecture);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CONFIGURATION: {
+ Configuration configuration = (Configuration)theEObject;
+ T result = caseConfiguration(configuration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.INTERCEPTION_RULE: {
+ InterceptionRule interceptionRule = (InterceptionRule)theEObject;
+ T result = caseInterceptionRule(interceptionRule);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.TARGET: {
+ Target target = (Target)theEObject;
+ T result = caseTarget(target);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.PART: {
+ Part part = (Part)theEObject;
+ T result = casePart(part);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.COPY_ATTRIBUTE_VALUE: {
+ CopyAttributeValue copyAttributeValue = (CopyAttributeValue)theEObject;
+ T result = caseCopyAttributeValue(copyAttributeValue);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.AUTO_INDEX: {
+ AutoIndex autoIndex = (AutoIndex)theEObject;
+ T result = caseAutoIndex(autoIndex);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.AUTO_INDEX_PER_NODE: {
+ AutoIndexPerNode autoIndexPerNode = (AutoIndexPerNode)theEObject;
+ T result = caseAutoIndexPerNode(autoIndexPerNode);
+ if (result == null) result = caseAutoIndex(autoIndexPerNode);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.INIT_PRECEDENCE: {
+ InitPrecedence initPrecedence = (InitPrecedence)theEObject;
+ T result = caseInitPrecedence(initPrecedence);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CONNECTOR_CONFIGURATION: {
+ ConnectorConfiguration connectorConfiguration = (ConnectorConfiguration)theEObject;
+ T result = caseConnectorConfiguration(connectorConfiguration);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.EXTENDED_SIGNATURE: {
+ ExtendedSignature extendedSignature = (ExtendedSignature)theEObject;
+ T result = caseExtendedSignature(extendedSignature);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.CONTAINER_PORT: {
+ ContainerPort containerPort = (ContainerPort)theEObject;
+ T result = caseContainerPort(containerPort);
+ if (result == null) result = casePort(containerPort);
+ if (result == null) result = caseConfigurableElementInstance(containerPort);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.USE_INSTANCE_CONFIGURATOR: {
+ UseInstanceConfigurator useInstanceConfigurator = (UseInstanceConfigurator)theEObject;
+ T result = caseUseInstanceConfigurator(useInstanceConfigurator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case FCMPackage.INSTANCE_CONFIGURATOR: {
+ InstanceConfigurator instanceConfigurator = (InstanceConfigurator)theEObject;
+ T result = caseInstanceConfigurator(instanceConfigurator);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Template</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Template</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTemplate(Template object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Comp Impl Template</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Comp Impl Template</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCompImplTemplate(CompImplTemplate object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Port Kind</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Port Kind</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePortKind(PortKind object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Port</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Port</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePort(Port object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Configurable Element Instance</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Configurable Element Instance</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConfigurableElementInstance(ConfigurableElementInstance object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Connector</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Connector</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConnector(Connector object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Configuration Property</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Configuration Property</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConfigurationProperty(ConfigurationProperty object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Deployment Plan</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Deployment Plan</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDeploymentPlan(DeploymentPlan object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Derived Element</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Derived Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseDerivedElement(DerivedElement object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Container Rule</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Container Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseContainerRule(ContainerRule object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Config Option</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Config Option</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConfigOption(ConfigOption object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Singleton</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Singleton</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSingleton(Singleton object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Interaction Component</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Interaction Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInteractionComponent(InteractionComponent object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Configuration</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Configuration</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConfiguration(Configuration object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Interception Rule</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Interception Rule</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInterceptionRule(InterceptionRule object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Cpp Library</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Cpp Library</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCppLibrary(CppLibrary object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>External Library</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>External Library</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExternalLibrary(ExternalLibrary object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Implementation Group</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Implementation Group</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseImplementationGroup(ImplementationGroup object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Rule Application</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Rule Application</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseRuleApplication(RuleApplication object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Java Library</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Java Library</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseJavaLibrary(JavaLibrary object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Implementation Properties</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Implementation Properties</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseImplementationProperties(ImplementationProperties object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Operating System</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Operating System</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseOperatingSystem(OperatingSystem object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Target Architecture</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Target Architecture</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTargetArchitecture(TargetArchitecture object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Target</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Target</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseTarget(Target object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Part</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Part</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T casePart(Part object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Copy Attribute Value</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Copy Attribute Value</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseCopyAttributeValue(CopyAttributeValue object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Auto Index</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Auto Index</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAutoIndex(AutoIndex object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Auto Index Per Node</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Auto Index Per Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseAutoIndexPerNode(AutoIndexPerNode object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Init Precedence</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Init Precedence</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInitPrecedence(InitPrecedence object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Connector Configuration</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Connector Configuration</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseConnectorConfiguration(ConnectorConfiguration object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Extended Signature</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Extended Signature</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseExtendedSignature(ExtendedSignature object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Container Port</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Container Port</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseContainerPort(ContainerPort object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Use Instance Configurator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Use Instance Configurator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseUseInstanceConfigurator(UseInstanceConfigurator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Instance Configurator</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>Instance Configurator</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseInstanceConfigurator(InstanceConfigurator object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch, but this is the last case anyway.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+ * @generated
+ */
+ @Override
+ public T defaultCase(EObject object) {
+ return null;
+ }
+
+} //FCMSwitch
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMUtil.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMUtil.java
new file mode 100644
index 00000000000..b12037baa29
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMUtil.java
@@ -0,0 +1,233 @@
+package FCM.util;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.CollaborationUse;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import FCM.Connector;
+import FCM.ContainerRule;
+import FCM.InteractionComponent;
+import FCM.RuleApplication;
+
+
+public class FCMUtil {
+
+ /**
+ * @param specification
+ * @param configPropertyName
+ * @return
+ */
+ public static EList<ValueSpecification> getConfigurationValue(InstanceSpecification specification, String configPropertyName) {
+ if(specification != null) {
+ for(Iterator<Slot> i = specification.getSlots().iterator(); i.hasNext();) {
+ Slot currentSlot = i.next();
+ if(currentSlot.getDefiningFeature() != null &&
+ currentSlot.getDefiningFeature().getName().equals(configPropertyName))
+ return currentSlot.getValues();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * @param interfaces
+ * @param interfaceName
+ * @return
+ */
+ public static Interface findInterfaceByName(EList<Interface> interfaces, String interfaceName) {
+ for(Iterator<Interface> i = interfaces.iterator(); i.hasNext();) {
+ Interface currentInterface = i.next();
+ if(currentInterface.getName().equals(interfaceName))
+ return currentInterface;
+ }
+ return null;
+ }
+
+ /**
+ * A data structure to be used for the specification of how the roles of the collaboration associated with
+ * the type of param "connector" are bound to actual elements of the composite containing param "connector".
+ * This data structure contains an hashmap<ConnectableElement, List<Element>>:
+ * - keys must be roles of a Collaboration
+ * - values must be list of elements playing this role in the context of a particular composite
+ *
+ * @author ac221913
+ *
+ */
+ public static final class RoleBindingTable {
+
+ private HashMap<org.eclipse.uml2.uml.ConnectableElement, List<org.eclipse.uml2.uml.NamedElement>> table;
+
+ public RoleBindingTable() {
+ this.table = new HashMap<org.eclipse.uml2.uml.ConnectableElement,
+ List<org.eclipse.uml2.uml.NamedElement>>();
+ }
+
+ public void addEntry(org.eclipse.uml2.uml.ConnectableElement role,
+ List<org.eclipse.uml2.uml.NamedElement> playedBy) {
+ table.put(role, playedBy);
+ }
+
+ public List<org.eclipse.uml2.uml.NamedElement> getEntry(org.eclipse.uml2.uml.ConnectableElement role) {
+ return table.get(role);
+ }
+
+ public Iterator<org.eclipse.uml2.uml.ConnectableElement> iterator() {
+ return table.keySet().iterator();
+ }
+
+ public HashMap<org.eclipse.uml2.uml.ConnectableElement, List<org.eclipse.uml2.uml.NamedElement>> getTable() {
+ return table;
+ }
+
+ public ConnectableElement getRoleKeyByName(String roleName) {
+ for(ConnectableElement role : table.keySet()) {
+ if(role.getName().equals(roleName)) {
+ return role;
+ }
+ }
+ return null;
+ }
+ }
+
+ public static void generateDefaultConnectionPattern(InteractionComponent connectorComp) {
+ org.eclipse.uml2.uml.Collaboration connectionPattern =
+ UMLFactory.eINSTANCE.createCollaboration();
+
+ //((org.eclipse.uml2.uml.Package)connectorComp.getBase_Class().getOwner()).getPackagedElements().add(connectionPattern) ;
+ connectorComp.getBase_Class().getNestedClassifiers().add(connectionPattern);
+ connectionPattern.setName(connectorComp.getBase_Class().getName() + "ConnectionPattern");
+
+ org.eclipse.uml2.uml.Property connectorRole =
+ connectionPattern.createOwnedAttribute("connector", connectorComp.getBase_Class(), 1, 1);
+ for(Iterator<org.eclipse.uml2.uml.Port> i = connectorComp.getBase_Class().getOwnedPorts().iterator(); i.hasNext();) {
+ org.eclipse.uml2.uml.Port port = i.next();
+ org.eclipse.uml2.uml.Property role;
+ org.eclipse.uml2.uml.Connector connector;
+ role = connectionPattern.createOwnedAttribute(port.getName(), null);
+ connector = connectionPattern.createOwnedConnector("");
+ org.eclipse.uml2.uml.ConnectorEnd source, target;
+ source = connector.createEnd();
+ source.setRole(port);
+ source.setPartWithPort(connectorRole);
+ target = connector.createEnd();
+ target.setRole(role);
+ }
+
+ connectorComp.setConnectionPattern(connectionPattern);
+ }
+
+ /**
+ * TODO Move this method in ConnectorReification.java (once Manel has finished to modify the file)
+ *
+ * @author ac221913
+ *
+ */
+ public static void generateCollaborationUse(Connector connector) {
+
+ InteractionComponent connectorCompGen = connector.getIc();
+
+ if(!(connectorCompGen instanceof InteractionComponent)) {
+ return;
+ }
+ InteractionComponent connectorComp = (InteractionComponent)connectorCompGen;
+ org.eclipse.uml2.uml.Collaboration connectionPattern =
+ connectorComp.getConnectionPattern();
+
+ if(connectionPattern == null) {
+ FCMUtil.generateDefaultConnectionPattern(connectorComp);
+ connectionPattern = connectorComp.getConnectionPattern();
+ }
+
+ Class composite = (Class)connector.getBase_Connector().getOwner();
+ CollaborationUse collaborationUse;
+ RoleBindingTable bindingTable = getConnectorRoleBindings(connector);
+
+ if(bindingTable == null)
+ return;
+
+ collaborationUse = composite.createCollaborationUse("useOf" + connectionPattern.getName());
+ collaborationUse.setType(connectionPattern);
+ for(Iterator<org.eclipse.uml2.uml.ConnectableElement> i = bindingTable.iterator(); i.hasNext();) {
+ org.eclipse.uml2.uml.ConnectableElement role = i.next();
+ org.eclipse.uml2.uml.Dependency roleBinding;
+ roleBinding = collaborationUse.createRoleBinding(role.getName() + "RoleBinding");
+ roleBinding.getSuppliers().add(role);
+ for(Iterator<org.eclipse.uml2.uml.NamedElement> j = bindingTable.getEntry(role).iterator(); j.hasNext();) {
+ roleBinding.getClients().add(j.next());
+ }
+ }
+ }
+
+ /**
+ * Computes a RoleBindingTable for a given ConnectorComp
+ * Implies that a java class has been defined in FCMProfile.util for this ConnectorComp,
+ * and that it encapsulates corresponding role binding rule
+ *
+ * @author ac221913
+ *
+ */
+ public static RoleBindingTable getConnectorRoleBindings(Connector connector) {
+ InteractionComponent connectorCompGen = connector.getIc();
+
+ if(!(connectorCompGen instanceof InteractionComponent)) {
+ return null;
+ }
+ InteractionComponent type = (InteractionComponent)connectorCompGen;
+
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] configElements = reg.getConfigurationElementsFor("fcmEmbeddingRule");
+ for(IConfigurationElement configElement : configElements) {
+ try {
+ final String extConnName = configElement.getAttribute("connectorName");
+ if(extConnName.equals(type.getBase_Class().getName())) {
+ final Object obj = configElement.createExecutableExtension("class");
+ if(obj instanceof IEmbeddingRule) {
+ return ((IEmbeddingRule)obj).getRoleBindings(connector);
+ }
+ }
+ } catch (CoreException exception) {
+ exception.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ /*
+ * return a list of all rules based on containment packages of rules
+ * from owning elements
+ */
+ public static EList<ContainerRule> getAllContainerRules(Element element) {
+ EList<ContainerRule> list = new UniqueEList<ContainerRule>();
+ if(element != null) {
+ for(EObject eObj : element.getStereotypeApplications()) {
+ if(eObj instanceof RuleApplication) {
+ list.addAll(((RuleApplication)eObj).getContainerRule());
+ break;
+ }
+ }
+ element = element.getOwner();
+ if(element != null) {
+ list.addAll(getAllContainerRules(element));
+ }
+ }
+ return list;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMXMLProcessor.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMXMLProcessor.java
new file mode 100644
index 00000000000..4e3e5e73be0
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/FCMXMLProcessor.java
@@ -0,0 +1,54 @@
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package FCM.util;
+
+import FCM.FCMPackage;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FCMXMLProcessor extends XMLProcessor {
+
+ /**
+ * Public constructor to instantiate the helper.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public FCMXMLProcessor() {
+ super((EPackage.Registry.INSTANCE));
+ FCMPackage.eINSTANCE.eClass();
+ }
+
+ /**
+ * Register for "*" and "xml" file extensions the FCMResourceFactoryImpl factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected Map<String, Resource.Factory> getRegistrations() {
+ if (registrations == null) {
+ super.getRegistrations();
+ registrations.put(XML_EXTENSION, new FCMResourceFactoryImpl());
+ registrations.put(STAR_EXTENSION, new FCMResourceFactoryImpl());
+ }
+ return registrations;
+ }
+
+} //FCMXMLProcessor
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/IEmbeddingRule.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/IEmbeddingRule.java
new file mode 100644
index 00000000000..24c41d1434c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/IEmbeddingRule.java
@@ -0,0 +1,16 @@
+package FCM.util;
+
+import FCM.Connector;
+
+/**
+ * Interface used by extension point for embedding rules
+ */
+public interface IEmbeddingRule {
+ /**
+ * Return a role binding table for a given connector
+ * @param connector the connector
+ * @return role binding table
+ */
+ public FCMUtil.RoleBindingTable getRoleBindings (Connector connector);
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/IMappingRule.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/IMappingRule.java
new file mode 100644
index 00000000000..ff8795d48c9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/IMappingRule.java
@@ -0,0 +1,41 @@
+package FCM.util;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+
+import FCM.Port;
+
+/**
+ * Interface used by extension point for evaluation of interface mappings
+ *
+ */
+public interface IMappingRule {
+ static final int NONE = 0;
+ static final int PROVIDED = 1;
+ static final int REQUIRED = 2;
+ static final int BOTH = 3;
+
+ /**
+ * return true, if the getProvided call below needs a transaction, i.e.
+ * potentially modifies the model
+ */
+ public int needsTransaction ();
+
+ /**
+ * Return a list of provided interfaces for a given p (and in
+ * the context of a configuration c)
+ * @param p the port
+ * @param config the configuration
+ * @return the list of provided interfaces
+ */
+ public Interface getProvided(Port p, InstanceSpecification config);
+
+ /**
+ * Return a list of provided interfaces for a given p (and in
+ * the context of a configuration c)
+ * @param p the port
+ * @param config the configuration
+ * @return the list of provided interfaces
+ */
+ public Interface getRequired(Port p, InstanceSpecification config);
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/MapUtil.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/MapUtil.java
new file mode 100644
index 00000000000..52e6cd4d082
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/FCM/util/MapUtil.java
@@ -0,0 +1,405 @@
+package FCM.util;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.papyrus.fcm.profile.Activator;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.DerivedElement;
+import FCM.Port;
+import FCM.PortKind;
+
+
+public class MapUtil
+{
+
+ // specific treatment of "root" model that is created by eC3M for deployment
+ // It avoids that copies of derived interfaces are created at different places
+ // [better alternative: avoid problem by using set of models instead of single large one]
+ // [other option?: no-update flag?]
+ public static final String rootModelName = "root";
+
+ public static final String MAPPING_RULE_ID = "fcmPortMappingRule";
+
+ /**
+ * return the top-level owner of an element. This function returns the same value
+ * as getModel, if the top-level element is a model. While this is the case for
+ * models, model libraries have a top-level package (not a model). In this case,
+ * getTop returns the top-level package whereas getModel would return null.
+ *
+ * @param element
+ * @return the top-level owning package
+ */
+ public static Package getTop(Element element)
+ {
+ while(element != null) {
+ Element owner = element.getOwner();
+ if(owner == null) {
+ if(element instanceof Package) {
+ return (Package)element;
+ }
+ }
+ else if((owner instanceof Package) && (owner.getOwner() == null) &&
+ ((Package)owner).getName().equals(rootModelName)) {
+ // Hack: assure that no new derived interface folder is created in "root" model
+ // that eC3M creates for deployment
+ if(element instanceof Package) {
+ return (Package)element;
+ }
+ }
+ element = owner;
+ }
+ return null;
+ }
+
+ /**
+ * Apply the derived element stereotype to a model element
+ *
+ * @param element
+ * @return
+ */
+ public static DerivedElement applyDE(Element element)
+ {
+ Stereotype stereotype = element.getApplicableStereotype("FCM::DerivedElement");
+ if(stereotype != null) {
+ EObject alreadyApplied = element.getStereotypeApplication(stereotype);
+ if(alreadyApplied instanceof DerivedElement) {
+ return (DerivedElement)alreadyApplied;
+ }
+ alreadyApplied = element.applyStereotype(stereotype);
+ if(alreadyApplied instanceof DerivedElement) {
+ return (DerivedElement)alreadyApplied;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Get or create a package within another package (often the root of a model), i.e. return
+ * a package with the passed name, if it exists or create a new one of this name
+ *
+ * @param root
+ * a package potentially owning a certain element
+ * @param name
+ * the name of a package that should be be returned.
+ * @return a package
+ */
+ public static Package getAndCreate(Package root, String name)
+ {
+ NamedElement pkg = root.getOwnedMember(name);
+ if(pkg == null) {
+ pkg = root.createNestedPackage(name);
+ }
+ return (Package)pkg;
+ }
+
+ /**
+ * Get or create a derived interface for a port using the convention that the interface name
+ * is a concatenation (separated by parameter separation) of the port kind name and the type name.
+ *
+ * @param kind
+ * the port kind
+ * @param separation
+ * separation string between kind and type name
+ * @param type
+ * the type of the port
+ * @return
+ */
+ public static Interface getOrCreateDerivedInterface(Port port, String separation, Type type)
+ {
+ return getOrCreateDerivedInterface(port, separation, type, false);
+ }
+
+ /**
+ * Get a derived interface for a port using the convention that the interface name
+ * is a concatenation (separated by parameter separation) of the port kind name and the type name.
+ *
+ * @param kind
+ * the port kind
+ * @param separation
+ * separation string between kind and type name
+ * @param type
+ * the type of the port
+ * @return
+ */
+ public static Interface getDerivedInterface(Port port, String separation, Type type)
+ {
+ return getOrCreateDerivedInterface(port, separation, type, true);
+ }
+
+ /**
+ * Get a derived interface for a port using the convention that the interface name
+ * is a concatenation (separated by parameter separation) of the port kind name and the type name.
+ *
+ * @param kind
+ * the port kind
+ * @param separation
+ * separation string between kind and type name
+ * @param type
+ * the type of the port
+ * @return
+ */
+ public static Interface getOrCreateDerivedInterface(Port port, String separation, Type type, boolean getOnly)
+ {
+ if(port == null) {
+ return null;
+ }
+ PortKind kind = port.getKind();
+ if(kind == null) {
+ return null;
+ }
+ return getOrCreateDerivedInterfaceIntern(port, kind.getBase_Class().getName() + separation, type, getOnly);
+ }
+
+ /**
+ * Get or create a derived interface for a port using a fixed prefix
+ * type name
+ *
+ * @param prefix
+ * prefix string
+ * @param type
+ * type name
+ * @return the derived interface or null (if it cannot be created)
+ */
+ public static Interface getOrCreateDerivedInterfaceFP(Port port, String prefix, Type type)
+ {
+ return getOrCreateDerivedInterfaceIntern(port, prefix, type, false);
+ }
+
+ /**
+ * Get a derived interface for a port using the name given by concatenation of prefix and
+ * type name
+ *
+ * @param prefix
+ * prefix string
+ * @param type
+ * type name
+ * @return the derived interface or null
+ */
+ public static Interface getDerivedInterfaceFP(Port port, String prefix, Type type)
+ {
+ return getOrCreateDerivedInterfaceIntern(port, prefix, type, true);
+ }
+
+ /**
+ * This function returns a Package reference that corresponds to a qualified name.
+ * Packages are created, if not existing yet - the function is thus a bit similar to
+ * the unix "mkdir -p" command. Note that the main model within the list of name-spaces is
+ * ignored, in order to avoid that a sub-package within a model starts with the name
+ * of the model.
+ *
+ * @param model
+ * a model
+ * @param list
+ * a list of namespace elements (as can be obtained via allNamespaces),
+ * the top-level element is the last within the list.
+ * @param skipTop
+ * if true, skip top level namespace element
+ * @return
+ */
+ public static Package getAndCreate(Package root, EList<Namespace> list) {
+ boolean first = true;
+ for(int i = list.size() - 1; i >= 0; i--) {
+ Namespace ns = list.get(i);
+
+ if(first) {
+ first = false;
+ // Hack: if rootModel is used, skip top
+ // (avoid that new derived interface with "root" prefix is created)
+ if(ns.getName().equals(rootModelName)) {
+ continue;
+ }
+ }
+ NamedElement pkg = root.getOwnedMember(ns.getName());
+ if(pkg == null) {
+ // package does not exist => create it.
+ pkg = root.createNestedPackage(ns.getName());
+ // copy stereotype to create package
+ }
+ if(!(pkg instanceof Package)) {
+ break;
+ }
+ root = (Package)pkg;
+ }
+ return root;
+ }
+
+ /**
+ * Get or create a derived interface for a port using the name given by concatenation of prefix and
+ * type name
+ *
+ * @param port
+ * The port for which to create a derived interface. Only used to determine the place where the
+ * derived interface is placed
+ * @param prefix
+ * prefix string
+ * @param type
+ * type name
+ * @param getOnly
+ * if true, do not create non-existing elements
+ * @return
+ */
+ private static Interface getOrCreateDerivedInterfaceIntern(Port port, String prefix, Type type, boolean getOnly)
+ {
+ String interfaceName = "D_" + prefix + type.getName();
+
+ // create derived element in "derivedInterface" package within the model owning
+ // the port (which must be an FCM model, since the port carries the FCM stereotype)
+ Package baseModelOfPort = getTop(port.getBase_Port());
+ Package derivedInterfaces = getAndCreate(baseModelOfPort, "derivedInterfaces");
+ Package owner = getAndCreate(derivedInterfaces, type.allNamespaces());
+ Interface intf = null;
+
+ PackageableElement pe = owner.getPackagedElement(interfaceName);
+ if(pe instanceof Interface) {
+ // interface already exists
+ return (Interface)pe;
+ }
+ else if(!getOnly) {
+ // System.out.println ("Derived port types: create new interface " + interfaceName + " in package " + owner.getQualifiedName ());
+ intf = owner.createOwnedInterface(interfaceName);
+
+ // System.out.println ("Derived port types: Apply derived stereotype annotation to interface: " + intf.getQualifiedName());
+ DerivedElement de = applyDE(intf);
+ if(de != null) {
+ // de may be null, if FCM is not properly applied
+ de.setSource(type);
+ }
+ return intf;
+ }
+ return null;
+ }
+
+ public static Interface getProvidedInterface(final Port port)
+ {
+ if(port.getBase_Port() == null) {
+ // should not happen, but can occur in case of corrupted XMI files
+ return null;
+ }
+ PortKind portKind = port.getKind();
+ if(portKind == null) {
+ if(port.getBase_Port().getProvideds().size() > 0) {
+ return port.getBase_Port().getProvideds().get(0);
+ }
+ }
+ else if(portKind.getBase_Class() != null) {
+ String ruleName = portKind.isExtendedPort() ? "ExtendedPort" : portKind.getBase_Class().getName();
+ final IMappingRule mappingRule = getMappingRule(ruleName);
+ if(mappingRule != null) {
+ // EList<Interface> temp = new EObjectEList<Interface>(Interface.class, (PortImpl) port,
+ // FCMPackage.PORT__PROVIDED_INTERFACE);
+ Runnable rule = new Runnable() {
+
+ public void run() {
+ intf = mappingRule.getProvided(port, port.getConfiguration());
+ }
+ };
+ if((mappingRule.needsTransaction() == IMappingRule.BOTH) ||
+ (mappingRule.needsTransaction() == IMappingRule.PROVIDED)) {
+ TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(port);
+ if(CommandSupport.isWriteTransactionActive(domain) || (domain == null)) {
+ // don't start a new transaction, if there is already an active write transition
+ try {
+ rule.run();
+ } catch (Exception e) {
+ // Happens with current version of Papyrus (ValidationCommand is a
+ // transaction which spawn an additional thread). Needs fix on Papyrus side
+ System.err.println(e);
+ }
+ }
+ else {
+ CommandSupport.exec(domain, "calculate derived interface", rule);
+ }
+ }
+ else {
+ rule.run();
+ }
+ return intf;
+ }
+ }
+ return null;
+ }
+
+ private static Interface intf;
+
+ public static Interface getRequiredInterface(final Port port)
+ {
+ PortKind portKind = port.getKind();
+ if(port.getBase_Port() == null) {
+ // should not happen, but can occur in case of corrupted XMI files
+ return null;
+ }
+ if(portKind == null) {
+ if(port.getBase_Port().getRequireds().size() > 0) {
+ return port.getBase_Port().getRequireds().get(0);
+ }
+ }
+ else if(portKind.getBase_Class() != null) {
+ String ruleName = portKind.isExtendedPort() ? "ExtendedPort" : portKind.getBase_Class().getName();
+ final IMappingRule mappingRule = getMappingRule(ruleName);
+ if(mappingRule != null) {
+ Runnable rule = new Runnable() {
+
+ public void run() {
+ intf = mappingRule.getRequired(port, port.getConfiguration());
+ }
+ };
+ if((mappingRule.needsTransaction() == IMappingRule.BOTH) ||
+ (mappingRule.needsTransaction() == IMappingRule.REQUIRED)) {
+ TransactionalEditingDomain domain = TransactionUtil.getEditingDomain(port);
+ if(CommandSupport.isWriteTransactionActive(domain) || (domain == null)) {
+ // don't start a new transaction, if there is already an active write transition
+ try {
+ rule.run();
+ } catch (Exception e) {
+ // Happens with current version of Papyrus (ValidationCommand is a
+ // transaction which spawn an additional thread). Needs fix on Papyrus side
+ System.err.println(e);
+ }
+ }
+ else {
+ CommandSupport.exec(domain, "calculate derived interface", rule);
+ }
+ }
+ else {
+ rule.run();
+ }
+ return intf;
+ }
+ }
+ return null;
+ }
+
+ public static IMappingRule getMappingRule(String portKindName)
+ {
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] configElements = reg.getConfigurationElementsFor(Activator.PLUGIN_ID + "." + MAPPING_RULE_ID);
+ for(IConfigurationElement configElement : configElements) {
+ try {
+ final String extPortKindName = configElement.getAttribute("portKindName");
+ if(extPortKindName.equals(portKindName)) {
+ final Object obj = configElement.createExecutableExtension("class");
+ if(obj instanceof IMappingRule) {
+ return (IMappingRule)obj;
+ }
+ }
+ } catch (CoreException exception) {
+ exception.printStackTrace();
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/fcm/profile/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/fcm/profile/Activator.java
new file mode 100644
index 00000000000..9c7445fb83f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/fcm/profile/Activator.java
@@ -0,0 +1,51 @@
+package org.eclipse.papyrus.fcm.profile;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.fcm.profile";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.project
new file mode 100644
index 00000000000..83d9e6e6a00
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.designer.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.acceleo.ide.ui.acceleoBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.acceleo.ide.ui.acceleoNature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..31ea8d13994
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF
@@ -0,0 +1,45 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.core;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.designer.core.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide,
+ org.eclipse.papyrus.fcm.profile;bundle-version="0.9.2",
+ org.eclipse.emf.edit.ui,
+ org.eclipse.papyrus.marte.static.profile;bundle-version="0.7.4",
+ org.eclipse.papyrus.qompass.designer.vsl;bundle-version="0.9.2",
+ org.eclipse.papyrus.uml.modelexplorer.widgets;bundle-version="0.9.2",
+ org.eclipse.emf.compare;bundle-version="1.2.0",
+ org.eclipse.emf.compare.diff;bundle-version="1.2.1",
+ org.eclipse.emf.compare.match;bundle-version="1.2.1",
+ org.eclipse.papyrus.uml.diagram.common;bundle-version="0.9.2",
+ org.eclipse.papyrus.infra.gmfdiag.widgets;bundle-version="0.9.2",
+ org.eclipse.draw2d;bundle-version="3.8.0",
+ org.eclipse.papyrus.uml.modelexplorer;bundle-version="0.9.2",
+ org.eclipse.gef;bundle-version="3.8.0",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
+ org.eclipse.papyrus.uml.profile;bundle-version="0.9.2",
+ org.eclipse.papyrus.uml.properties;bundle-version="0.9.2",
+ org.eclipse.papyrus.uml.tools;bundle-version="0.9.2",
+ org.eclipse.acceleo.engine;bundle-version="3.1.0",
+ org.eclipse.acceleo.parser;bundle-version="3.1.0",
+ org.eclipse.papyrus.cpp.profile;bundle-version="0.9.2"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.qompass.designer.core,
+ org.eclipse.papyrus.qompass.designer.core.acceleo,
+ org.eclipse.papyrus.qompass.designer.core.deployment,
+ org.eclipse.papyrus.qompass.designer.core.dialogs,
+ org.eclipse.papyrus.qompass.designer.core.extensions,
+ org.eclipse.papyrus.qompass.designer.core.handlers,
+ org.eclipse.papyrus.qompass.designer.core.preferences,
+ org.eclipse.papyrus.qompass.designer.core.templates,
+ org.eclipse.papyrus.qompass.designer.core.transformations
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Localization: plugin
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/about.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/about.properties
new file mode 100644
index 00000000000..c06246d0761
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/about.properties
@@ -0,0 +1,12 @@
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+
+featureText=Qompass \n\
+\n\
+Copyright (c) 2010 CEA LIST
+\n\
+Qompass is a component oriented model based on the connector and container patterns. The implementation produces executable
+models a user model and a set of imported model libraries. \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.acceleo b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.acceleo
new file mode 100644
index 00000000000..601303c5e8a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.acceleo
@@ -0,0 +1,26 @@
+<!-- ===================================================================== -->
+<!-- Custom targets. -->
+<!-- Set customBuildCallbacks = build.acceleo in your build.properties. -->
+<!-- ===================================================================== -->
+<project name="Build Acceleo Module" default="noDefault">
+ <!-- ================================================================= -->
+ <!-- Default target -->
+ <!-- ================================================================= -->
+ <target name="noDefault">
+ <echo message="This file must be called with explicit targets" />
+ </target>
+
+ <!-- ================================================================= -->
+ <!-- This will be called automatically after the compilation of each -->
+ <!-- Bundle... in dependency order. -->
+ <!-- ================================================================= -->
+ <target name="post.compile.@dot">
+ <acceleoCompiler
+ sourceFolder="${target.folder}"
+ outputFolder="${target.folder}"
+ dependencies="${target.folder}/../../org.eclipse.uml2.uml;${target.folder}/../../org.eclipse.papyrus.fcm.profile;${target.folder}/../../org.eclipse.papyrus.qompass.designer.vsl;${target.folder}/../../org.eclipse.papyrus.marte.vsl;${target.folder}/../../org.eclipse.papyrus.cpp.profile;"
+ binaryResource="false"
+ packagesToRegister="">
+ </acceleoCompiler>
+ </target>
+</project>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.properties
new file mode 100644
index 00000000000..ac38eb76e73
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ icons/,\
+ build.properties,\
+ about.properties,\
+ build.acceleo,\
+ about.html,\
+ plugin.properties,\
+ schema/
+customBuildCallbacks = build.acceleo
+src.includes = about.html
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ADLInFlowPort.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ADLInFlowPort.gif
new file mode 100644
index 00000000000..e2b32c65cac
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ADLInFlowPort.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif
new file mode 100644
index 00000000000..c47d52ad211
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/Stereotype.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/Stereotype.gif
new file mode 100644
index 00000000000..145e5d589d8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/Stereotype.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/allocation.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/allocation.gif
new file mode 100644
index 00000000000..ced634f9c9c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/allocation.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/depPlan.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/depPlan.gif
new file mode 100644
index 00000000000..712a2485f8d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/depPlan.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/deploy.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/deploy.gif
new file mode 100644
index 00000000000..7a7ced35f3d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/deploy.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ec3m-16x16.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ec3m-16x16.gif
new file mode 100644
index 00000000000..327caa73f59
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ec3m-16x16.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ec3m-32x32.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ec3m-32x32.gif
new file mode 100644
index 00000000000..9e1527b778f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/ec3m-32x32.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/sample.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/sample.gif
new file mode 100644
index 00000000000..34fb3c9d8cb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/sample.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/selConnector.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/selConnector.gif
new file mode 100644
index 00000000000..e47528e5447
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/selConnector.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/selContainer.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/selContainer.gif
new file mode 100644
index 00000000000..c16516c624b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/selContainer.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/sync.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/sync.gif
new file mode 100644
index 00000000000..5935eb3cbba
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/icons/sync.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.properties
new file mode 100644
index 00000000000..25c07e8c396
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass Designer core (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml
new file mode 100644
index 00000000000..89898e3b569
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml
@@ -0,0 +1,347 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension-point id="language" name="languageSupport" schema="schema/language.exsd"/>
+ <extension-point id="instanceConfig" name="instanceConfigName" schema="schema/instanceConfig.exsd"/>
+ <extension-point id="externalGenerator" name="externalGenerator" schema="schema/externalGenerator.exsd"/>
+ <extension
+ point="org.eclipse.papyrus.infra.core.modelListener">
+ <listener
+ name="Qompass.modelListener"
+ realization="org.eclipse.papyrus.qompass.designer.core.listeners.ModelListener">
+ </listener>
+ </extension>
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.CreateDepPlanHandler"
+ description="Create deployment plan"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.CreateDepPlanCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.CreatePlatformHandler"
+ description="Create platform definition"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.CreatePlatformCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.InstantiateDepPlanHandler"
+ description="Generate deployment models and code from plan"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.InstantiateDepPlanCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.SyncHandler"
+ description="Synchronize derived elements"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SyncCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.SelectConnectorHandler"
+ description="Choose connector type and implementation"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionConnectorCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.SelectContainerHandler"
+ description="Choose container properties"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionContainerCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.ConfigureInstanceHandler"
+ description="Configure instance"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigureInstanceCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.ConfigurePortHandler"
+ description="Configure ports"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigurePortsCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.AddProfileAndModelLibsHandler"
+ description="Add Qompass profiles and model libraries"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.AddProfileAndModelLibsCmd"
+ name="dummy">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.qompass.designer.core.handlers.AllocateHandler"
+ description="Allocate to node"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.AllocateCmd"
+ name="dummy">
+ </command>
+ </extension>
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.papyrus.views.modelexplorer.modelexplorer.popup">
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.CreateDepPlanCmd"
+ icon="icons/depPlan.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.CreateDepPlanMenu"
+ label="Qompass: Create deployment plan"
+ mnemonic="d"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.CreatePlatformCmd"
+ icon="icons/depPlan.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.CreatePlatformMenu"
+ label="Qompass: Create platform definition"
+ mnemonic="d"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.SyncCmd"
+ icon="icons/sync.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SyncMenu"
+ label="Qompass: Synchronize derived elements"
+ mnemonic="s"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.InstantiateDepPlanCmd"
+ icon="icons/deploy.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.CreateDepPlanMenu"
+ label="Qompass: Generate deployment models and code from plan"
+ mnemonic="g"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionConnectorCmd"
+ icon="icons/selConnector.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionConnectorMenu"
+ label="Qompass: Show / choose connector type and implementation"
+ mnemonic="C"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionContainerCmd"
+ icon="icons/selContainer.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionContainerMenu"
+ label="Qompass: Show / choose container properties"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigureInstanceCmd"
+ icon="icons/selContainer.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigureInstanceMenu"
+ label="Qompass: Configure instance properties"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigurePortsCmd"
+ icon="icons/selContainer.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigurePortsMenu"
+ label="Qompass: Configure ports"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.AddProfileAndModelLibsCmd"
+ icon="icons/Stereotype.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.AddProfileAndModelLibsMenu"
+ label="Qompass: Add profiles and model libraries"
+ mnemonic="P"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.AllocateCmd"
+ icon="icons/allocation.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.AllocateMenu"
+ label="Qompass: Allocate to node"
+ mnemonic="A"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ <menuContribution
+ allPopups="false"
+ locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu">
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.CreateDepPlanCmd"
+ icon="icons/depPlan.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.CreateDepPlanMenu"
+ label="Qompass: Create deployment plan"
+ mnemonic="d"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.CreatePlatformCmd"
+ icon="icons/depPlan.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.CreatePlatformMenu"
+ label="Qompass: Create platform definition"
+ mnemonic="d"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.SyncCmd"
+ icon="icons/sync.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SyncMenu"
+ label="Qompass: Synchronize derived elements"
+ mnemonic="s"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.InstantiateDepPlanCmd"
+ icon="icons/deploy.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.CreateDepPlanMenu"
+ label="Qompass: Generate deployment models and code from plan"
+ mnemonic="g"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionConnectorCmd"
+ icon="icons/selConnector.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionConnectorMenu"
+ label="Qompass: Show / choose connector type and implementation"
+ mnemonic="C"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionContainerCmd"
+ icon="icons/selContainer.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.SelectionContainerMenu"
+ label="Qompass: Show / choose container properties"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigureInstanceCmd"
+ icon="icons/selContainer.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigureInstanceMenu"
+ label="Qompass: Configure instance properties"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigurePortsCmd"
+ icon="icons/selContainer.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.ConfigurePortsMenu"
+ label="Qompass: Configure ports"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.AddProfileAndModelLibsCmd"
+ icon="icons/Stereotype.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.AddProfileAndModelLibsMenu"
+ label="Qompass: Add profiles and model libraries"
+ mnemonic="P"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.qompass.designer.core.menuActions.AllocateCmd"
+ icon="icons/allocation.gif"
+ id="org.eclipse.papyrus.qompass.designer.core.menuActions.AllocateMenu"
+ label="Qompass: Allocate to node"
+ mnemonic="A"
+ mode="FORCE_TEXT"
+ style="push">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ </command>
+ </menuContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.papyrus.infra.core.sasheditor.preferences.generalcategory"
+ class="org.eclipse.papyrus.qompass.designer.core.preferences.QompassPreferencePage"
+ id="org.eclipse.papyrus.qompass.designer.core.preferences.QompassPreferencePage_ID"
+ name="Qompass preferences">
+ </page>
+ </extension>
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer
+ class="org.eclipse.papyrus.qompass.designer.core.preferences.QompassPreferenceInitializer">
+ </initializer>
+ </extension>
+</plugin>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd
new file mode 100644
index 00000000000..d9c048f3cf0
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.qompass.designer.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.papyrus.qompass.designer.core" id="instanceConfig" name="instanceConfigName"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="client"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="client">
+ <complexType>
+ <attribute name="generatorID" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.qompass.designer.core.extensions.IExternalGenerator"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/instanceConfig.exsd b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/instanceConfig.exsd
new file mode 100644
index 00000000000..9ebd4f01529
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/instanceConfig.exsd
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.qompass.designer.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.papyrus.qompass.designer.core" id="instanceConfig" name="instanceConfigName"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="client"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="client">
+ <complexType>
+ <attribute name="configuratorID" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.qompass.designer.core.extensions.IInstanceConfigurator"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/language.exsd b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/language.exsd
new file mode 100644
index 00000000000..9e7e950f59b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/language.exsd
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.qompass.designer.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.papyrus.qompass.designer.core" id="language" name="languageSupport"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="client"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="client">
+ <complexType>
+ <attribute name="language" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.qompass.designer.core.ILangSupport"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Activator.java
new file mode 100644
index 00000000000..d3971354858
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Activator.java
@@ -0,0 +1,52 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.designer.core";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CommandSupport.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CommandSupport.java
new file mode 100644
index 00000000000..ced5fe1c3e5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CommandSupport.java
@@ -0,0 +1,100 @@
+/**
+ * Copyright CEA-LIST 2012
+ * available under EPL 1.0 licence
+ *
+ * This file is part of the Qompass tool chain (www.qompass.net)
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * $Id$
+ */
+
+package org.eclipse.papyrus.qompass.designer.core;
+
+import java.util.Collections;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.commands.operations.OperationHistoryFactory;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtilsForActionHandlers;
+
+/**
+ * Utility function. Allow execution of commands on a transactional command stack
+ *
+ * @author ansgar
+ *
+ */
+public class CommandSupport {
+
+ /**
+ * Execute the passed Runnable within a command
+ *
+ * @param label
+ * @param command
+ */
+ public static void exec(String label, final Runnable command) {
+ ServiceUtilsForActionHandlers serviceUtils = ServiceUtilsForActionHandlers.getInstance();
+ try {
+ exec(serviceUtils.getTransactionalEditingDomain(), label, command);
+ } catch (ServiceException e) {
+ Log.log(Log.ERROR_MSG, Log.UTILS, "Can not get editing domain");
+ }
+ }
+
+ /**
+ * Execute the passed Runnable with result within a command
+ *
+ * @param label
+ * @param command
+ */
+ public static void exec(String label, final RunnableWithResult command) {
+ ServiceUtilsForActionHandlers serviceUtils = ServiceUtilsForActionHandlers.getInstance();
+ IOperationHistory history = OperationHistoryFactory.getOperationHistory();
+ try {
+ history.execute(new AbstractTransactionalCommand(serviceUtils.getTransactionalEditingDomain(),
+ label, Collections.EMPTY_LIST) {
+
+ public CommandResult doExecuteWithResult(IProgressMonitor dummy, IAdaptable info) {
+ return command.run();
+ }
+ }, null, null);
+ } catch (ExecutionException e) {
+ Log.log(Log.ERROR_MSG, Log.UTILS, "error during command execution");
+ } catch (ServiceException e) {
+ Log.log(Log.ERROR_MSG, Log.UTILS, "Can not get editing domain");
+ }
+ }
+
+ /**
+ * Execute the passed Runnable within a command
+ *
+ * @param label
+ * @param command
+ */
+ public static void exec(TransactionalEditingDomain domain, String label, final Runnable command) {
+ if(domain == null) {
+ command.run();
+ }
+ else {
+ IOperationHistory history = OperationHistoryFactory.getOperationHistory();
+ try {
+ history.execute(new AbstractTransactionalCommand(domain, label, Collections.EMPTY_LIST) {
+
+ public CommandResult doExecuteWithResult(IProgressMonitor dummy, IAdaptable info) {
+ command.run();
+ return CommandResult.newOKCommandResult();
+ }
+ }, null, null);
+ } catch (ExecutionException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConfigUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConfigUtils.java
new file mode 100644
index 00000000000..cecc27479d9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConfigUtils.java
@@ -0,0 +1,80 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.ConfigurationProperty;
+import FCM.ContainerRule;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+public class ConfigUtils {
+
+ /**
+ * Get the configuration properties of a class
+ *
+ * @param component
+ * @return
+ */
+ public static EList<Property> getConfigAttributes(Classifier component) {
+
+ EList<Property> list = new BasicEList<Property>();
+
+ for(Property part : component.getAllAttributes()) {
+ if(part instanceof Port) {
+ continue;
+ }
+ Element owner = part.getOwner();
+
+ if(Utils.allAttributesAreConfigAttributs()) {
+ // return all attributes
+ list.add(part);
+ }
+ // add all attributes of component types
+ else if(owner instanceof Class && Utils.isCompType((Class)owner)) {
+ list.add(part);
+ }
+ // otherwise add only attributes tagged as configuration properties
+ else if(StUtils.isApplied(part, ConfigurationProperty.class)) {
+ list.add(part);
+ }
+ }
+ return list;
+ }
+
+ /**
+ * Get the configuration attributes behind a container rule
+ * TODO: rule might not be active - should we still configure it??
+ *
+ * @param aRule
+ * @return
+ * @throws TransformationException
+ */
+ public static EList<Property> getConfigAttributes(ContainerRule rule) throws TransformationException {
+ EList<Property> list = new BasicEList<Property>();
+ Class composite = rule.getBase_Class(); // a rule should always have a base class, unless malformed
+ if(composite == null) {
+ throw new TransformationException("A container rule has no base class (broken model library?)");
+ }
+ for(Property part : composite.getAttributes()) {
+ if(part instanceof Port) {
+ continue;
+ }
+ Type type = part.getType();
+ if(StUtils.isApplied(part, ConfigurationProperty.class)) {
+ list.add(part);
+ }
+ if(type instanceof Class) {
+ list.addAll(getConfigAttributes((Class)type));
+ }
+ }
+
+ return list;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConnectorUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConnectorUtils.java
new file mode 100644
index 00000000000..63da539a65b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ConnectorUtils.java
@@ -0,0 +1,167 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+
+public class ConnectorUtils {
+
+ /**
+ * Returns true, is a port of a composite has an internal delegation to
+ * another port
+ *
+ * @param composite
+ * @param port
+ * @return
+ */
+ public static boolean isDelegation(Class composite, Port port) {
+ return (getDelegation(composite, port) != null);
+ }
+
+ /**
+ * Return the connector end of a delegation originating from a given port
+ * or null, if not such delegation exists
+ *
+ * @param composite
+ * the composite component
+ * @param port
+ * a port (may be inherited) of that implementation
+ * @return a connector end to which the port delegates or null
+ */
+ public static ConnectorEnd getDelegation(Class composite, Port port) {
+ for(Connector connector : composite.getOwnedConnectors()) {
+ if(connectsPort(connector, port)) {
+ ConnectorEnd otherEnd = connEndNotPart(connector, null);
+ if(otherEnd != null) {
+ return otherEnd;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * check if a connector connects the port that is passed
+ * as parameter
+ */
+ public static boolean connectsPort(Connector connection, Port port) {
+ // check roles of end points
+ String qPortName = port.getQualifiedName();
+ for(ConnectorEnd end : connection.getEnds()) {
+ if(end.getRole() == port) {
+ return true;
+ }
+ if(end.getRole() != null) {
+ if(end.getRole().getQualifiedName().equals(qPortName)) {
+ Log.log(Log.ERROR_MSG, Log.TRAFO_CONNECTOR,
+ "ConnectorUtls.connectsPort: qualified names match, but not the ID - should not happen");
+ return true;
+ }
+ } else {
+ Log.log(Log.ERROR_MSG, Log.TRAFO_CONNECTOR,
+ "ConnectorUtils.connectsPort: the role of one of the endpoints of connection " + connection.getName() +
+ " is null - should not happen");
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Simple helper function: return a connector end that is referencing
+ * the passed parameter "part" either directly (role) or via a port
+ *
+ * @param part
+ * a property within a composite
+ * @param connection
+ * @return the first connector end that is referencing a certain part
+ * passed as parameter
+ */
+ public static ConnectorEnd connEndForPart(Connector connection, Property part) {
+ // look for the end with same part (connectedPart == part)
+ for(ConnectorEnd end : connection.getEnds()) {
+ ConnectableElement role = end.getRole();
+ Property connectedPart = null;
+ if(role instanceof Port) {
+ connectedPart = end.getPartWithPort();
+ } else if(role instanceof Property) {
+ // role is not a Port but also not null => connected directly to a part
+ connectedPart = (Property)role;
+ }
+
+ if(connectedPart == part) {
+ return end;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Simple helper function: return a connector end that is *not* referencing
+ * with the passed parameter "part" either directly or via a port
+ * (useful, to get the "other" end of a connector).
+ *
+ * @param part
+ * a property within a composite
+ * @param connection
+ * @return the first connector end that is not referencing to the
+ * part passed as parameter.
+ */
+ public static ConnectorEnd connEndNotPart(Connector connection, Property part) {
+ // look for the other end (connectedPart != part)
+ for(ConnectorEnd end : connection.getEnds()) {
+ ConnectableElement role = end.getRole();
+ Property connectedPart = null;
+
+ if(role instanceof Port) {
+ connectedPart = end.getPartWithPort();
+ } else if(role instanceof Property) {
+ // role is not a Port but also not null => connected directly to a part
+ connectedPart = (Property)role;
+ }
+
+ if(connectedPart != part) {
+ return end;
+ }
+
+ }
+ return null;
+ }
+
+ /**
+ * check if a connector connects the part that is passed
+ * as parameter
+ */
+ public static boolean connectsPart(Connector connection, Property part) {
+ return (connEndForPart(connection, part) != null);
+ }
+
+ /**
+ * Return true, if passed connector is an assembly connector
+ *
+ * @param connection
+ * @return true, if assembly connection
+ */
+ public static boolean isAssembly(Connector connection) {
+ // no "null" part found => all ends are parts
+ return (connEndForPart(connection, null) == null);
+ }
+
+ /**
+ * @param composite A composite class
+ * @param partA A part within the composite
+ * @param partB Another part within the composite
+ * @return true, if a connector between the parts A and B could be
+ * found within the passed composite
+ */
+ public static boolean existsConnector(Class composite, Property partA, Property partB) {
+ for (Connector connector : composite.getOwnedConnectors()) {
+ if (ConnectorUtils.connectsPart(connector, partA) && ConnectorUtils.connectsPart(connector, partB)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CreationUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CreationUtils.java
new file mode 100644
index 00000000000..ff17bb1a01d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/CreationUtils.java
@@ -0,0 +1,67 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Package;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+public class CreationUtils {
+
+ /**
+ * This function returns a Package reference that corresponds to a qualified name.
+ * Packages are created, if not existing yet - the function is thus a bit similar to
+ * the unix mkdir -p command. Note that the main model within the list of name-spaces is
+ * ignored, in order to avoid that a sub-package within a model starts with the name
+ * of the model.
+ *
+ * Caveat: imported elements must be checked beforehand. In case of a package import,
+ * getMembers (and getImportedMembers) will not return the name of the imported model
+ * but the elements (directly) owned by the imported model.
+ * Example: getMember ("BasicTypes") will return null whereas getMember ("CORBA")
+ * returns a package (CORBA is a package within the model library BasicTypes)
+ *
+ * @param model
+ * a model
+ * @param list
+ * a list of namespace elements (as can be obtained via allNamespaces),
+ * the top-level element is the last within the list.
+ * @param skipTop
+ * if true, skip top level namespace element
+ * @return
+ */
+ public static Package getAndCreate(Package root, EList<Namespace> list, boolean skipTop) {
+ int offset = (skipTop ? 2 : 1);
+ for(int i = list.size() - offset; i >= 0; i--) {
+ Namespace ns = list.get(i);
+ Log.log(Log.INFO_MSG, Log.UTILS, "getAndCreate:" + ns.getName());
+
+ NamedElement pkg = root.getOwnedMember(ns.getName());
+ if(pkg == null) {
+ // package does not exist => create it.
+ pkg = root.createNestedPackage(ns.getName());
+ Copy.copyID(ns, pkg);
+ // copy stereotype to create package
+ StUtils.copyStereotypes(ns, pkg);
+ }
+ if(!(pkg instanceof Package)) {
+ break;
+ }
+ root = (Package)pkg;
+ }
+ return root;
+ }
+
+ public static Package getAndCreate(Package root, EList<Namespace> list) {
+ return getAndCreate(root, list, true);
+ }
+
+ public static Package getAndCreate(Package root, String name) {
+ NamedElement pkg = root.getMember(name);
+ if(pkg == null) {
+ pkg = root.createNestedPackage(name);
+ }
+ return (Package)pkg;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Description.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Description.java
new file mode 100644
index 00000000000..85efefa717a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Description.java
@@ -0,0 +1,64 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+
+public class Description {
+
+ /**
+ * Return a description of an element. By default search comments that are
+ * owned by this elements owner (e.g. the class, if we search for a description of a property or the owning package,
+ * if we search for a description of a class)
+ *
+ * @param element
+ * the element for which to obtain a description
+ * @return the description of the element
+ */
+ public static String getDescription(Element element) {
+ return getDescription(element.getOwner(), element);
+ }
+
+ /**
+ * Convenience function: Return a description of an element. It will delegate to
+ * default getDescription, but returns a user specified text, if a description is
+ * not available in the model.
+ * @param element
+ * @param unavailable The text that is return, if no description is available
+ * @return
+ */
+ public static String getDescription(Element element, String unavailable) {
+ String description = getDescription(element);
+ if (description != null) {
+ return description;
+ }
+ else {
+ return unavailable;
+ }
+ }
+ /**
+ * Return a description or implementation description of an element, i.e. the
+ * first owned comment that annotated the passed element
+ *
+ * @param the owner of the comment
+ * the element for which to obtain a description
+ * @param annotated element
+ * the element for which to obtain a description
+ * @return the description of the element
+ */
+ public static String getDescription(Element owner, Element annotatedElement) {
+ if (owner == null) {
+ return null;
+ }
+ // loop over all owned comments, check those that begins with
+ // "description"
+ for(Comment comment : owner.getOwnedComments()) {
+ // identify "right" comment via annotated element ref (to a specific
+ // class of the BasicCalls library) instead?
+ if(comment.getAnnotatedElements().contains(annotatedElement)) {
+ return comment.getBody();
+ }
+
+ }
+ return "not available";
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Log.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Log.java
new file mode 100644
index 00000000000..171ba5d64c0
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Log.java
@@ -0,0 +1,75 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Very simple message logging class
+ *
+ * @author ansgar
+ *
+ */
+public class Log {
+
+ public static final int ERROR_MSG = 1;
+
+ public static final int INFO_MSG = 2;
+
+ public static final int WARNING_MSG = 4;
+
+
+ public static final int TRAFO_CONNECTOR = 1;
+
+ public static final int TRAFO_CONTAINER = 2;
+
+ public static final int TRAFO_COPY = 4;
+
+ public static final int TRAFO_SYNC = 8;
+
+ public static final int TEMPLATE_BINDING = 0x10;
+
+ public static final int TEMPLATE_INSTANTIATION = 0x20;
+
+ public static final int DEPLOYMENT = 0x40;
+
+ public static final int DIALOGS = 0x80;
+
+ public static final int UTILS = 0x100;
+
+ public static final int CODEGEN = 0x200;
+
+ public static final int CALC_PORTKIND = 0x400;
+
+ static Map<Integer, String> moduleMap;
+
+ static String getModuleInfo(int moduleKind) {
+ if(moduleMap == null) {
+ moduleMap = new HashMap<Integer, String>();
+ moduleMap.put(TRAFO_CONNECTOR, "Trafo connector");
+ moduleMap.put(TRAFO_CONTAINER, "Trafo container");
+ moduleMap.put(TRAFO_COPY, "Trafo copy");
+ moduleMap.put(TRAFO_SYNC, "Synchronization");
+ moduleMap.put(TEMPLATE_BINDING, "Template binding");
+ moduleMap.put(TEMPLATE_INSTANTIATION, "Template instantiation");
+ moduleMap.put(DEPLOYMENT, "Template binding");
+ moduleMap.put(DIALOGS, "Qompass dialogs");
+ moduleMap.put(UTILS, "Utils");
+ moduleMap.put(CODEGEN, "Code generation");
+ moduleMap.put(CALC_PORTKIND, "Calculate portkind");
+ }
+ return "Module " + moduleMap.get(moduleKind) + ": ";
+ }
+
+ public static void log(int msgKind, int moduleKind, String message) {
+ if(msgKind == ERROR_MSG) {
+ System.err.println(getModuleInfo(moduleKind) + message);
+ } else if(msgKind == INFO_MSG) {
+ if((moduleKind & moduleFilter) != 0) {
+ System.out.println(getModuleInfo(moduleKind) + message);
+ }
+ }
+ }
+
+ // TODO: make it a configuration property
+ static int moduleFilter = 0;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ModelManagement.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ModelManagement.java
new file mode 100644
index 00000000000..43f75eaa6d6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ModelManagement.java
@@ -0,0 +1,143 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import java.io.IOException;
+import java.util.Iterator;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+
+public class ModelManagement {
+
+ /**
+ * Create a resource for the model passed as parameter
+ *
+ * @param newModel
+ */
+ public ModelManagement() {
+ getResourceSet();
+ model = UMLFactory.eINSTANCE.createModel();
+ resource = resourceSet.createResource(URI.createURI("temp.uml"));
+ resource.getContents().add(model);
+ }
+
+ /**
+ * Save a model within the given project
+ *
+ * @param model
+ * a model that should be saved
+ * @param project
+ * an existing project
+ */
+ public void saveModel(IProject project) {
+ saveModel(getPath(project, null, null));
+ }
+
+ public void dispose() {
+ if(model != null) {
+ model.destroy();
+ model = null;
+ }
+ resourceSet.getResources().remove(resource);
+ }
+
+ public Model getModel() {
+ return model;
+ }
+
+ /**
+ * Save a model within a passed project and a specified folder
+ * (TODO: use path instead a single folder?)
+ *
+ */
+ public void saveModel(String path) {
+
+ try {
+ URI uri = URI.createURI(path);
+
+ ResourceSetImpl resourceSet = new ResourceSetImpl();
+ resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
+
+ /*
+ * Resource resource = resourceSet.createResource(uri);
+ * EList<EObject> contents = resource.getContents();
+ * contents.add(model);
+ */
+ resource.setURI(uri);
+ EList<EObject> contents = resource.getContents();
+
+ for(Iterator<EObject> allContents = UMLUtil.getAllContents(model, true, false); allContents.hasNext();) {
+ EObject eObject = allContents.next();
+
+ if(eObject instanceof Element) {
+ contents.addAll(((Element)eObject).getStereotypeApplications());
+ }
+ }
+ resource.save(null);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * @param project
+ * an existing project
+ * @param subFolder
+ * a subfolder within the project (will be created, if it does not exist)
+ * @param filename
+ * the name of the file or null (in his case, the name of the
+ * model with the postfix .uml is used)
+ *
+ * @return The access path to a file
+ */
+ public String getPath(IProject project, String subFolder, String filename) {
+ IFile file;
+ if(filename == null) {
+ filename = model.getName() + ".uml";
+ }
+ if(subFolder != null) {
+ IFolder ifolder = project.getFolder(subFolder);
+ if(!ifolder.exists()) {
+ try {
+ ifolder.create(false, true, null);
+ } catch (CoreException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ file = ifolder.getFile(filename);
+ } else {
+ file = project.getFile(filename);
+ }
+ return file.getFullPath().toString();
+ }
+
+ /**
+ * return the used resource set (a singleton)
+ */
+ public static ResourceSet getResourceSet() {
+ if(resourceSet == null) {
+ resourceSet = new ResourceSetImpl();
+ }
+ return resourceSet;
+ }
+
+ private static ResourceSet resourceSet = null;
+
+ private Model model;
+
+ private Resource resource;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/OperationUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/OperationUtils.java
new file mode 100644
index 00000000000..c7540ac96be
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/OperationUtils.java
@@ -0,0 +1,129 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import java.util.Iterator;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Type;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+public class OperationUtils {
+
+ /**
+ * Search an identical operation within a class.
+ * This function is useful to identify (and synchronize) operations.
+ *
+ * @param op
+ * The operation that should be compared.
+ * @param owner
+ * @return
+ */
+ public static Operation getSameOperation(Operation op, Class owner) {
+ for(Operation ownedOp : owner.getOwnedOperations()) {
+ if(isSameOperation(op, ownedOp)) {
+ return ownedOp;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns true, if two operations are identical.
+ * An operation is considered identical, if the operation name as well as all
+ * parameter names and types are equal. Type equality is checked via names only, to
+ * avoid that identical types within a source and a copy model would yield false.
+ *
+ * @param op1
+ * @param op2
+ * @return true, if operations are identical
+ */
+ public static boolean isSameOperation(Operation op1, Operation op2) {
+ String op1Name = op1.getName();
+ String op2Name = op2.getName();
+ // one of the names might be null
+ if(op1Name == null) {
+ if(op2Name != null) {
+ return false;
+ }
+ } else if(!op1Name.equals(op2Name)) {
+ return false;
+ }
+ Iterator<Parameter> parameters1 = op1.getOwnedParameters().iterator();
+ Iterator<Parameter> parameters2 = op2.getOwnedParameters().iterator();
+ while(parameters1.hasNext() && parameters2.hasNext()) {
+ Parameter parameter1 = parameters1.next();
+ Parameter parameter2 = parameters2.next();
+ String par1Name = parameter1.getName();
+ Type par1Type = parameter1.getType();
+ String par2Name = parameter2.getName();
+ Type par2Type = parameter2.getType();
+
+ // one of the names might be null
+ if(par1Name == null) {
+ if(par2Name != null) {
+ return false;
+ }
+ } else if(!par1Name.equals(par2Name)) {
+ return false;
+ }
+ if((par1Type != null) && (par2Type != null)) {
+ // the names might be null. Return false, if only one of these is set
+ if(par1Type.getName() == null) {
+ if(par2Type.getName() != null) {
+ return false;
+ }
+ }
+ else if(!par1Type.getName().equals(par2Type.getName())) {
+ return false;
+ }
+ } else if(par1Type != par2Type) {
+ // at least one of the two must be null due to earlier check
+ // return false, if they are different, i.e. not both null
+ return false;
+ }
+ if((parameter1.getUpper() != parameter2.getUpper()) ||
+ (parameter1.getLower() != parameter2.getLower())) {
+ return false;
+ }
+ }
+ // true, if operations have same number of parameters
+ return (parameters1.hasNext() == parameters2.hasNext());
+ }
+
+
+ /**
+ * synchronize source and target operation
+ * (remove all parameters, copy afterwards)
+ *
+ * @param sourceOp
+ * the source operation
+ * @param targetOp
+ * the target operation
+ * @param newRoot
+ * a new root package (e.g. another model). Ensure that types referenced by the
+ * parameter exist within this root package (copy, if not). Null indicates that no copying
+ * should be done.
+ * @return
+ */
+ public static void syncOperation(Operation sourceOp, Operation targetOp) {
+ if(targetOp != null) {
+ Copy.copyFeatureModifiers(sourceOp, targetOp);
+ // ordered and unique are derived from ret-parameter
+ targetOp.setIsQuery(sourceOp.isQuery());
+ targetOp.setIsAbstract(sourceOp.isAbstract());
+ targetOp.setName(sourceOp.getName());
+ targetOp.getOwnedParameters().clear();
+ for(Parameter parameter : sourceOp.getOwnedParameters()) {
+ Type type = parameter.getType();
+ Parameter newParameter =
+ targetOp.createOwnedParameter(parameter.getLabel(), type);
+ newParameter.setDirection(parameter.getDirection());
+ Copy.copyMultElemModifiers(parameter, newParameter);
+ StUtils.copyStereotypes(parameter, newParameter);
+ }
+ }
+ StUtils.copyStereotypes(sourceOp, targetOp);
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/PortUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/PortUtils.java
new file mode 100644
index 00000000000..f9ce1878c8d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/PortUtils.java
@@ -0,0 +1,219 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.EncapsulatedClassifier;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Port;
+
+import FCM.PortKind;
+
+public class PortUtils {
+
+ /**
+ * Return the provided interface associated with the UML port, i.e.
+ * the derived attribute of the FCM profile
+ *
+ * @param port
+ * the UML port
+ * @return the provided interface
+ */
+ public static Interface getProvided(Port port) {
+ FCM.Port fcmPort = getFCMport(port);
+ if(fcmPort != null) {
+ return fcmPort.getProvidedInterface();
+ } else if(port.getProvideds().size() > 0) {
+ // return first standard UML provided port
+ return port.getProvideds().get(0);
+ }
+ return null;
+ }
+
+ /**
+ * Return the required interface associated with the UML port, i.e.
+ * the derived attribute of the FCM profile
+ *
+ * @param port
+ * the UML port
+ * @return the required interface
+ */
+ public static Interface getRequired(Port port) {
+ FCM.Port fcmPort = getFCMport(port);
+ if(fcmPort != null) {
+ return fcmPort.getRequiredInterface();
+ } else if(port.getRequireds().size() > 0) {
+ // return first standard UML required port
+ return port.getRequireds().get(0);
+ }
+ return null;
+ }
+
+ /**
+ * Return the FCM port (static profile) from a given UML port
+ *
+ * @param port
+ * @return
+ */
+ public static FCM.Port getFCMport(Port port) {
+ return StUtils.getApplication(port, FCM.Port.class);
+ }
+
+ /**
+ * true, if the port is conjugated
+ * -- with UML 2.3, UML itself will have an isConjugated attribute
+ * => remove FCM isConjugated attribute
+ *
+ * @param port
+ * @return
+ */
+ public static boolean isConjugated(Port port) {
+ FCM.Port fcmPort = getFCMport(port);
+ if(fcmPort != null) {
+ return fcmPort.isConjugated();
+ }
+ return false;
+ }
+
+ /**
+ * Returns all ports (including inherited ones) for an encapsulated classifier
+ *
+ * @param ec
+ * @return
+ */
+ public static EList<Port> getAllPorts(EncapsulatedClassifier ec) {
+ EList<Port> ports = new BasicEList<Port>();
+ for(NamedElement attribute : ec.getAllAttributes()) {
+ if(attribute instanceof Port) {
+ ports.add((Port)attribute);
+ }
+ }
+ // TODO: for the moment, don't add aggregated port to list.
+ /*
+ * ComponentType compType = = StUtils.getApplication (ec, ComponentType.class);
+ * for (ContainerRule rule : compType.getContainerRule ())
+ * {
+ * if ((rule.getExtensionKind () == ContainerExtKind.AGGREGATION) &&
+ * (rule.getExtension () != null)) {
+ * ports.addAll (getAllPorts (rule.getExtension ().getBase_Class ()));
+ * }
+ * }
+ */
+
+ return ports;
+ }
+
+ /**
+ * Returns all ports for an encapsulated classifier. Inherited ports are
+ * included, except if the superclass is already a component implementation.
+ * The motivation for this function is that ports inherited by a
+ * component implementation have already corresponding operations/attributes,
+ * only ports inherited by types need these definitions in subclasses.
+ * TODO: support for abstract implementations that partially implement ports
+ *
+ * @param ec
+ * @return
+ */
+ public static EList<Port> getAllPorts2(EncapsulatedClassifier ec) {
+ EList<Port> ports = new BasicEList<Port>();
+
+ ports.addAll(ec.getOwnedPorts());
+ for(Classifier general : ec.getGenerals()) {
+ if((general instanceof EncapsulatedClassifier) && (!Utils.isCompImpl(general))) {
+ ports.addAll(getAllPorts2((EncapsulatedClassifier)general));
+ }
+ }
+ return ports;
+ }
+
+ /**
+ * Return the port kind, an element of the static profile
+ *
+ * @param port
+ * @return
+ */
+ public static PortKind getKind(Port port) {
+ FCM.Port fcmPort = getFCMport(port);
+ if(fcmPort != null) {
+ return fcmPort.getKind();
+ }
+ return null;
+ }
+
+ /**
+ * Check whether two ports have the same port kind. Since different models apparently
+ * use different Java instances for the same port kind, the check is therefore based
+ * on the equality of full qualified name.
+ *
+ * @param portA
+ * @param portB
+ * @return true, if port kinds are identical
+ */
+ public static boolean sameKinds(Port portA, Port portB) {
+ PortKind kindA = getKind(portA);
+ PortKind kindB = getKind(portB);
+ if((kindA == null) && (kindB == null)) {
+ return true;
+ } else if((kindA == null) || (kindB == null)) {
+ return false;
+ } else {
+ // better use eClass?
+ boolean tst = kindA == kindB;
+ boolean tst2 =
+ kindA.getBase_Class().getQualifiedName().equals(
+ kindB.getBase_Class().getQualifiedName());
+ if(tst != tst2) {
+ Log.log(Log.ERROR_MSG, Log.UTILS, "different instances of same kind??" + kindA.getBase_Class());
+ }
+ return kindA.getBase_Class().getQualifiedName().equals(
+ kindB.getBase_Class().getQualifiedName());
+ }
+ }
+
+ /**
+ * Check whether two ports match, i.e. have the same kind but different conjugation (assembly)
+ * or same (delegation)
+ *
+ * @param portA
+ * first port
+ * @param portB
+ * second port
+ * @param isAssembly
+ * true, if the ports should be connected by an assembly connector (i.e. no delegation)
+ * @return true, if ports match
+ */
+ public static boolean matches(Port portA, Port portB, boolean isAssembly) {
+ if(isAssembly) {
+ return (sameKinds(portA, portB) && (isConjugated(portA) != isConjugated(portB)));
+ } else {
+ // delegation
+ return (sameKinds(portA, portB) && (isConjugated(portA) == isConjugated(portB)));
+ }
+ }
+
+ /**
+ * Check whether two ports are compatible. i.e. either match or are compatible interface wise
+ *
+ * @param portA
+ * @param portB
+ * @param isAssembly
+ * true, if the ports should be connected by an assembly connector (i.e. no delegation)
+ * @return
+ */
+ public static boolean isCompatible(Port portA, Port portB, boolean isAssembly) {
+ if(matches(portA, portB, isAssembly)) {
+ return true;
+ }
+ // no match found, try weaker condition: find 1st match for provided ...
+ // TODO: check not only for identical interfaces but allow a superclass on the required interface
+ // TODO: should be used by template binding checker
+ if(isAssembly) {
+ return (PortUtils.getProvided(portA) == PortUtils.getRequired(portB)) &&
+ (PortUtils.getProvided(portB) == PortUtils.getRequired(portA));
+ } else {
+ return (PortUtils.getProvided(portA) == PortUtils.getProvided(portB)) &&
+ (PortUtils.getRequired(portB) == PortUtils.getRequired(portA));
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ProjectManagement.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ProjectManagement.java
new file mode 100644
index 00000000000..45ecbe5e1df
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/ProjectManagement.java
@@ -0,0 +1,41 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PlatformUI;
+
+// TODO: mixture of model and Eclipse project management. Move parts depending on CDT into
+// a separate plugin
+
+public class ProjectManagement {
+
+ /**
+ * Retrieve current project from active editor
+ *
+ * @return
+ */
+ public static IProject getCurrentProject() {
+ IEditorPart editorPart = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
+ // Maybe null, if opened via model explorer
+ if(editorPart == null) {
+ return null;
+ }
+ IEditorInput editorInput = editorPart.getEditorInput();
+ if(editorInput instanceof IFileEditorInput) {
+ return ((IFileEditorInput)editorInput).getFile().getProject();
+ }
+ return null;
+ }
+
+ public static IProject getNamedProject(String projectName) {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ if(root != null) {
+ return root.getProject(projectName);
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/RunnableWithResult.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/RunnableWithResult.java
new file mode 100644
index 00000000000..48fcb22a8b9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/RunnableWithResult.java
@@ -0,0 +1,15 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+
+public interface RunnableWithResult {
+
+ /**
+ * Execute a commad
+ *
+ * @return CommandResult.newOKCommandResult() if successful
+ * CommandResult.newErrorCommandResult(..) or
+ * CommandReuslt.newCancelCommandResult(..) otherwise
+ */
+ public CommandResult run();
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/StUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/StUtils.java
new file mode 100644
index 00000000000..9734a7b5a05
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/StUtils.java
@@ -0,0 +1,424 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+import FCM.DerivedElement;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+/**
+ * Some functions around stereotype usage.
+ * TODO: originally developed without use of static profile. It thus contains many functions
+ * that are no longer needed (e.g. getBoolean) => needs some cleanup
+ *
+ * @author ansgar
+ *
+ */
+public class StUtils {
+
+ /**
+ * This method verifies if a stereotype is applied on an UML element
+ *
+ * @param element
+ * A UML element
+ * @param str_name
+ * a qualified stereotype name
+ */
+ public static boolean isApplied(Element element, String str_name) {
+ return (element.getAppliedStereotype(str_name) != null);
+ }
+
+ /**
+ * This method verifies if a stereotype is applied on an UML element
+ *
+ * @param element
+ * A UML element
+ * @param the
+ * class of an element of a static profile
+ */
+ public static boolean isApplied(Element element, java.lang.Class<? extends EObject> clazz) {
+ for(EObject stereoApplication : element.getStereotypeApplications()) {
+ // check whether the stereotype is a subclass of the passed parameter clazz
+ if(clazz.isAssignableFrom(stereoApplication.getClass())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return the attribute of a stereotype. If the attribute type is a model reference,
+ * use the function getAttributeBase instead.
+ *
+ * @param element
+ * the element which holds the stereotype
+ * @param stereo_name
+ * the name of the stereotype
+ * @param attrib_name
+ * the name of an attribute of this stereotype
+ * @return The value that is associated with the stereotype attribute
+ */
+ public static Object getAttribute(Element element, String stereo_name, String attrib_name) {
+ Stereotype stereotype = element.getAppliedStereotype(stereo_name);
+ if(stereotype == null) {
+ return null;
+ }
+ return element.getValue(stereotype, attrib_name);
+ }
+
+ /**
+ * Set the value of a stereotype attribute
+ *
+ * @param element
+ * the element which holds the stereotype
+ * @param stereo_name
+ * the name of the stereotype
+ * @param attrib_name
+ * the name of an attribute of this stereotype
+ * @param value
+ * the value that is associated with the stereotype attribute
+ */
+ public static void setAttribute(Element element, String stereo_name, String attr_name, Object value) {
+ Stereotype st = apply(element, stereo_name);
+ if(st != null) {
+ element.setValue(st, attr_name, value);
+ }
+ }
+
+ /**
+ * Return the stereotype application. Like getApplication below, except
+ * that the passed stereotype is a string.
+ *
+ * @param element
+ * @param stereo_name
+ * the qualified name of a stereotype. Applications of compatible sub-types will be returned as well (if exact stereotype is not applied)
+ * @return
+ */
+ public static EObject getApplication(Element element, String stereo_name) {
+
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ EObject application = element.getStereotypeApplication(stereotype);
+ if(application != null) {
+ return application;
+ }
+ // not found, now try sub-stereotypes
+ for(Stereotype subStereo : element.getAppliedSubstereotypes(stereotype)) {
+ application = element.getStereotypeApplication(subStereo);
+ if(application != null) {
+ return application;
+ }
+ }
+ }
+ return null;
+
+ }
+
+ /**
+ * Return the stereotype application by passing an element of the static profile
+ *
+ * @param element
+ * the UML model element
+ * @param clazz
+ * the class of an element of a static profile. Compatible sub-types will be returned as well
+ * @return the stereotype application (first compatible with passed clazz) or null
+ */
+ @SuppressWarnings("unchecked")
+ public static <T extends EObject> T getApplication(Element element, java.lang.Class<T> clazz) {
+ for(EObject stereoApplication : element.getStereotypeApplications()) {
+ // check whether the stereotype is an instance of the passed parameter clazz
+ if(clazz.isInstance(stereoApplication)) {
+ return (T)stereoApplication;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Apply a stereotype. The stereotype is not applied, if already a sub-stereotype is applied.
+ * If you want to apply the new stereotype also in this case, use applyExact instead.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static Stereotype apply(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ EList<Stereotype> subStereos = element.getAppliedSubstereotypes(stereotype);
+ boolean alreadyApplied = (subStereos.size() > 0);
+ if(!alreadyApplied) {
+ // it seems that subSterotypes do not include the stereotype itself
+ if(element.getStereotypeApplication(stereotype) == null) {
+ element.applyStereotype(stereotype);
+ }
+ }
+ }
+ return stereotype;
+ }
+
+ /**
+ * unapply a stereotype when the name of the stereotype is given.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static void unapply(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ if(element.getStereotypeApplication(stereotype) != null) {
+ element.unapplyStereotype(stereotype);
+ }
+ }
+ }
+
+ /**
+ * Apply a stereotype and return the stereotype application (if successful).
+ * The stereotype is not applied, if already a sub-stereotype is applied.
+ * If you want to apply the new stereotype also in this case, use applyExact instead.
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static <T extends EObject> T applyApp(Element element, java.lang.Class<T> clazz) {
+ if(apply(element, clazz) != null) {
+ return getApplication(element, clazz);
+ }
+ return null;
+ }
+
+ /**
+ * @param element
+ * @param stereo_name
+ * @return
+ */
+ public static Stereotype applyExact(Element element, String stereo_name) {
+ Stereotype stereotype = element.getApplicableStereotype(stereo_name);
+ if(stereotype != null) {
+ Stereotype alreadyApplied = element.getAppliedSubstereotype(stereotype, stereo_name);
+ if(alreadyApplied == null) {
+ element.applyStereotype(stereotype);
+ }
+ }
+ return stereotype;
+ }
+
+ /**
+ * Apply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param class a class of a static profile
+ * @return
+ */
+ public static Stereotype apply(Element element, java.lang.Class<? extends EObject> clazz) {
+ return apply(element, getStereoName(clazz));
+ }
+
+ /**
+ * Unapply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static void unapply(Element element, java.lang.Class<? extends EObject> clazz) {
+ unapply(element, getStereoName(clazz));
+ }
+
+ /**
+ * Apply a stereotype.
+ * Caveat: the function relies on the correspondence between the fully qualified
+ * stereotype name and the package name within the static profile. The latter may
+ * use a different prefix (as it is the case with the MARTE analysis & design profile).
+ *
+ * @param element
+ * the element
+ * @param stereo_name
+ * the stereotype name
+ * @return
+ */
+ public static Stereotype applyExact(Element element, java.lang.Class<? extends EObject> clazz) {
+ return applyExact(element, getStereoName(clazz));
+ }
+
+ /**
+ * This function should be used if stereotype attributes are in turn typed by stereotyped
+ * elements and the user wants to retrieve the underlying base elements (instead of the stereotype application)
+ * The function applies the getBaseElement operation to the result of the
+ * getStereotypeAttribute function above.
+ *
+ * @param element
+ * the element while holds the stereotype
+ * @param stereo_name
+ * the name of the stereotype
+ * @param attrib_name
+ * the name of an attribute of this stereotype
+ * @return The value that is associated with the stereotype attribute
+ */
+ public static Element getAttributeBase(Element element, String stereo_name, String attrib_name) {
+ Object obj = getAttribute(element, stereo_name, attrib_name);
+ if(obj instanceof EObject) {
+ return UMLUtil.getBaseElement((EObject)obj);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Copy the stereotype application from a source to a destination element. The
+ * function will also copy the stereotype attributes.
+ *
+ * @param source
+ * @param destination
+ * @return
+ */
+ public static void copyStereotypes(Copy copy, Element source, Element destination) {
+ final String derivedElement = DerivedElement.class.getName().replace(".", "::");
+ for(Stereotype stereotype : source.getAppliedStereotypes()) {
+ String stereoName = stereotype.getQualifiedName();
+ if(!stereoName.equals(derivedElement)) {
+ // Hack: do not copy derived element stereotype. Problem: when templates are instantiated,
+ // some operations are derived from interface operations which in turn are derived from the
+ // formal template parameter (e.g. FIFO). Since interface derived from ports are put into a
+ // top-level directory "derived elements", they may be outside the package template and do not
+ // get replaced.
+ copyAttributes(copy, stereotype.getQualifiedName(), source, destination);
+ }
+ }
+ }
+
+ public static void copyStereotypes(Element source, Element destination) {
+ copyStereotypes(null, source, destination);
+ }
+
+ /**
+ * copy stereotype attributes.
+ *
+ * TODO: verify if it is necessary to distinguish between stereoSource and stereoDest
+ * (they should be identical, if the resource sets are).
+ * => simplify code
+ *
+ * @param stereotypeName
+ * @param source
+ * @param destination
+ * @return
+ */
+ @SuppressWarnings({ "unchecked" })
+ public static boolean copyAttributes(Copy copy, String stereotypeName, Element source, Element destination) {
+ Stereotype stereoSource = source.getAppliedStereotype(stereotypeName);
+ Stereotype stereoDest = destination.getApplicableStereotype(stereotypeName);
+
+ if((stereoSource == null) || (stereoDest == null)) {
+ return false;
+ }
+ Stereotype alreadyApplied = destination.getAppliedStereotype(stereotypeName);
+ if(alreadyApplied == null) {
+ // only apply stereotype, if not already applied
+ destination.applyStereotype(stereoDest);
+ }
+
+ // getAllAttributes? (but have to avoid attribute base_Class which resets stereotype application)
+ for(Property attribute : stereoSource.getAllAttributes()) {
+ String attrName = attribute.getName();
+
+ if(attrName.length() >= 5) {
+ // do not copy base_ stereotypes (base_class, base_package and base_PackageImport)
+ if(attrName.startsWith("base_")) {
+ continue;
+ }
+ }
+ // do not copy derived attributes
+ if(attribute.isDerived()) {
+ continue;
+ }
+
+ Object value = source.getValue(stereoSource, attrName);
+ // handle specific case: need to copy referenced containerExt, since it points to element
+ // in the original model.
+ /*
+ * if ((value instanceof EObject) && (attrName.equals ("containerExt"))) {
+ * continue;
+ * }
+ */
+
+ if(value instanceof EList) {
+ // copy list
+ EList<Object> newList = new BasicEList<Object>();
+ for(Object valueEl : (EList<Object>)value) {
+ if((copy != null) && (valueEl instanceof Element)) {
+ newList.add(copy.getCopy((Element)valueEl));
+ } else {
+ newList.add(valueEl);
+ }
+ }
+ if(newList.size() > 0) {
+ destination.setValue(stereoDest, attrName, newList);
+ }
+ } else if((copy != null) && (value instanceof Element)) {
+ destination.setValue(stereoDest, attrName, copy.getCopy((Element)value));
+ } else {
+ destination.setValue(stereoDest, attrName, value);
+ }
+ }
+
+ return true;
+ }
+
+ public static boolean copyAttribute(String stereotypeName, String attribute, Element source, Element destination) {
+ Stereotype stereotype = source.getAppliedStereotype(stereotypeName);
+ if(stereotype == null) {
+ return false;
+ }
+ Object value = source.getValue(stereotype, attribute);
+ destination.applyStereotype(stereotype);
+ destination.setValue(stereotype, attribute, value);
+ return true;
+ }
+
+ public static FCM.Connector getConnector(Connector connector) {
+ return getApplication(connector, FCM.Connector.class);
+ }
+
+ public static boolean isConnector(Connector candidate) {
+ return StUtils.isApplied(candidate, FCM.Connector.class);
+ }
+
+ public static Stereotype getStereo(Element element, java.lang.Class<? extends EObject> clazz) {
+ return element.getAppliedStereotype(getStereoName(clazz));
+ }
+
+ public static String getStereoName(java.lang.Class<? extends EObject> clazz) {
+ String name = clazz.getName();
+ if(name.startsWith("org.eclipse.papyrus.MARTE")) {
+ // MARTE classes are prefixed with "org.eclipse.papyrus" which does not belong
+ // to the stereotype name
+ name = name.substring("org.eclipse.papyrus.".length());
+ }
+ return name.replace(".", "::");
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Stereotypes.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Stereotypes.java
new file mode 100644
index 00000000000..958666b581b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Stereotypes.java
@@ -0,0 +1,9 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+public class Stereotypes {
+
+ // FT stereotypes
+ public final static String activeWithVoting = "FTRedundancy::FTActiveWithVotingReplicationStyle";
+
+ public final static String replicationInfo = "DP::Replication";
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Utils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Utils.java
new file mode 100644
index 00000000000..d2c17c5f9d4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Utils.java
@@ -0,0 +1,541 @@
+package org.eclipse.papyrus.qompass.designer.core;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtilsForActionHandlers;
+import org.eclipse.papyrus.qompass.designer.core.preferences.QompassPreferenceConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.ContainerRule;
+import FCM.RuleApplication;
+import FCM.Singleton;
+
+public class Utils {
+
+ /**
+ * Retrieve an element from a list of named elements via its name
+ *
+ * @param namedElementList
+ * @param name
+ * @return
+ */
+ public static NamedElement getNamedElementFromList(
+ EList<? extends NamedElement> namedElementList, String name) {
+ Iterator<? extends NamedElement> namedElements = namedElementList
+ .iterator();
+ while(namedElements.hasNext()) {
+ NamedElement namedElement = namedElements.next();
+ if(namedElement.getName().equals(name)) {
+ return namedElement;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * return the top-level owner of an element. This function returns the same
+ * value as getModel, if the top-level element is a model. While this is the
+ * case for models, model libraries have a top-level package (not a model).
+ * In this case, getTop returns the top-level package whereas getModel would
+ * return null.
+ *
+ * @param element
+ * @return the top-level owning package
+ */
+ public static Package getTop(Element element) {
+ while(element != null) {
+ Element owner = element.getOwner();
+ if(owner == null) {
+ if(element instanceof Package) {
+ return (Package)element;
+ }
+ }
+ element = owner;
+ }
+ return null;
+ }
+
+ /**
+ * @param element
+ * an element which is owned by a model.
+ * @param subfolder
+ * the name of a sub-folder within root (created, if not
+ * existent)
+ * @return a reference to the sub folder within the root of the model that
+ * belongs to the passed element.
+ */
+ public static Package getRoot(Element element, String subfolder) {
+ Package root = getTop(element);
+ if(root.getNestedPackage(subfolder) != null) {
+ return root.getNestedPackage(subfolder);
+ } else {
+ return root.createNestedPackage(subfolder);
+ }
+ }
+
+ /**
+ * Convenience method enabling to apply getOwnedOperation equally to classes
+ * and interfaces
+ *
+ * @param cl
+ * @param name
+ * @param paramNames
+ * @param paramTypes
+ * @return
+ */
+ public static Operation createOwnedOperation(Classifier cl, String name,
+ EList<String> paramNames, EList<Type> paramTypes, Type retType) {
+ if(cl instanceof Class) {
+ return ((Class)cl).createOwnedOperation(name, paramNames,
+ paramTypes, retType);
+ } else if(cl instanceof Interface) {
+ return ((Interface)cl).createOwnedOperation(name, paramNames,
+ paramTypes, retType);
+ } else {
+ return null;
+ }
+ }
+
+ public static Operation getOwnedOperation(Classifier cl, String name,
+ EList<String> paramNames, EList<Type> paramTypes) {
+ if(cl instanceof Class) {
+ return ((Class)cl).getOwnedOperation(name, paramNames, paramTypes);
+ } else if(cl instanceof Interface) {
+ return ((Interface)cl).getOwnedOperation(name, paramNames,
+ paramTypes);
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * this method returns the component type of an implementation. It is based
+ * on the modeling convention that implemen tations inherit from types.
+ */
+ public static Class componentType(Class implementation) {
+ if(Utils.isCompImpl(implementation)) {
+ Iterator<Class> superclasses = implementation.getSuperClasses()
+ .iterator();
+ while(superclasses.hasNext()) {
+ Class componentType = superclasses.next();
+ if(Utils.isCompType(componentType)) {
+ return componentType;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * return true, if a component (implementation) is a composite, i.e. has
+ * inner parts
+ */
+ public static boolean isComposite(Class implementation) {
+ return Utils.isCompImpl(implementation)
+ && (getParts(implementation).size() > 0);
+ }
+
+ public static EList<Property> getParts(Class implementation) {
+ if(treatNoneAsComposite()) {
+ EList<Property> parts = new BasicEList<Property>();
+ for(Property part : implementation.getAttributes()) {
+ if(part.getAggregation() != AggregationKind.SHARED_LITERAL) {
+ parts.add(part);
+ }
+ }
+ return parts;
+ }
+ else {
+ return implementation.getParts();
+ }
+ }
+
+
+ /**
+ * @param attribute
+ * an attribute
+ * @return true, if the aggregation kind is considered as a composition
+ */
+ public static boolean isComposition(Property attribute) {
+ if(treatNoneAsComposite()) {
+ return (attribute.getAggregation() != AggregationKind.SHARED_LITERAL);
+ }
+ else {
+ return (attribute.getAggregation() == AggregationKind.COMPOSITE_LITERAL);
+ }
+ }
+
+ /**
+ * return true, if an instance specification is a composite, i.e. has > 1
+ * slots TODO: distinguish parts and configuration attributes
+ */
+
+ public static boolean isComposite(InstanceSpecification is) {
+ return (is.getSlots().size() > 0);
+ }
+
+ /**
+ * Get an element via its qualified name. Will find elements from the root
+ * model and elements in imported models. Also supports target model in
+ * which imports have been copied (while keeping the top-level name)
+ *
+ * @param root
+ * @param qualifiedName
+ * @return
+ */
+ public static NamedElement getQualifiedElement(Package root,
+ String qualifiedName) {
+ NamedElement namedElement = null;
+ int index = qualifiedName.indexOf("::");
+ if(index != -1) {
+ // first try using a path without top element (since
+ // getQualifiedElement is typically used for
+ // imported elements)
+ String remainder = qualifiedName.substring(index + 2);
+ namedElement = getQualifiedElement(root, remainder, qualifiedName);
+ }
+ if(namedElement == null) {
+ // try with complete name as path name, but assume that the element
+ // has been copied into the model,
+ // i.e. qualifiedName is prefixed by model name
+ namedElement = getQualifiedElement(root, qualifiedName,
+ root.getName() + "::" + qualifiedName);
+ }
+ return namedElement;
+ }
+
+ /**
+ * Retrieve an element via its qualified name within a package The segments
+ * of the package may be non unique due to imports
+ *
+ * @return the found element, if it exists
+ */
+ public static NamedElement getQualifiedElement(Package root,
+ String remainingPath, String qualifiedName) {
+ if(root == null) {
+ return null;
+ }
+ if(!remainingPath.contains("::")) {
+ for(NamedElement candidate : root.getMembers()) {
+ String name = candidate.getName();
+ if((name != null) && name.equals(remainingPath)) {
+ if(candidate.getQualifiedName().equals(qualifiedName)) {
+ return candidate;
+ }
+ }
+ }
+ } else {
+ String segment = remainingPath.split("::")[0];
+ String remainder = remainingPath.substring(segment.length() + 2);
+ for(Element element : root.getMembers()) {
+ if(element instanceof Package) {
+ if(((NamedElement)element).getName().equals(segment)) {
+ NamedElement foundElement = getQualifiedElement(
+ (Package)element, remainder, qualifiedName);
+ // return, if not found
+ if(foundElement != null) {
+ return foundElement;
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Simple check whether an element is in a different model than the passed
+ * package It will return true, whenever the the top elements do not match.
+ * This is always true, if the 2nd belongs to a different model, whether
+ * imported or not. This distinction is however not required in our context.
+ */
+ public static boolean isElementInDifferentModel(Package model,
+ NamedElement namedElement) {
+ return model != getTop(namedElement);
+ }
+
+ /**
+ * Check whether an element (referenced from the source model) is part of a
+ * package that is imported on top-level by the target model. It will always
+ * return false, if the passed element is part of the source model.
+ *
+ * @param sat
+ * source and target model information
+ * @param namedElement
+ * a named element
+ * @return true, if imported (on top level), false otherwise
+ */
+ public static boolean isElementImported(Copy sat, NamedElement namedElement) {
+ if(isElementInDifferentModel(sat.source, namedElement)) {
+ String qualifiedName = namedElement.getQualifiedName();
+ int index = qualifiedName.indexOf("::");
+ // remove top level element of name
+ if(index != -1) {
+ qualifiedName = qualifiedName.substring(index + 2);
+ }
+ // check whether the element is reachable from the target root
+ if(getQualifiedElement(sat.target, qualifiedName) != null) {
+ return true;
+ }
+ /*
+ * do not use packageImports, since import is transitiv and would
+ * not capture all cases Package top = getTop (namedElement); for
+ * (PackageImport packageImport : sat.target.getPackageImports()) {
+ * if (packageImport.getImportedPackage () == top) { return true; }
+ * }
+ */
+ }
+ return false;
+ }
+
+ /**
+ * Check whether a named element exists within the target model. This
+ * function evaluates the copyImport flag. If true, it assumes that the
+ * original model as well as imports correspond to a top level package
+ * within the target model. If imports are not copied, the function assumes
+ * that all elements of a different model are actually reachable via the
+ * import relationship
+ *
+ * @param sat
+ * @param namedElement
+ * @return the corresponding element within the target model - if it exits
+ */
+ public static NamedElement getExistingNEinTarget(Copy sat,
+ NamedElement namedElement) {
+ if(sat.copyExtReferences) {
+ // copy imports into new model
+ // return existing element (or null)
+ return getExistingElement(sat.target, namedElement, false);
+ } else {
+ // elements that are imported should not be copied.
+ // Function assumes that all elements that are in a different model
+ // are actually
+ // reachable via import relations, i.e. exist already
+ if(isElementInDifferentModel(sat.source, namedElement)) {
+ return namedElement;
+ }
+ return getExistingElement(sat.target, namedElement, false);
+ }
+ }
+
+ public static NamedElement getExistingElement(Package model,
+ NamedElement namedElement, boolean skipTop) {
+ EList<Namespace> list = namedElement.allNamespaces();
+ int offset = (skipTop ? 2 : 1);
+ // start with list size - 2, i.e. skip last element which points to the
+ // name of the
+ // (potentially) imported model, since getImportedElement will start
+ // there.
+ Package currentPkg = model;
+ for(int i = list.size() - offset; i >= 0; i--) {
+ String name = list.get(i).getName();
+ NamedElement member = currentPkg.getMember(name);
+ if(member instanceof Package) {
+ currentPkg = (Package)member;
+ } else {
+ return null;
+ }
+ }
+ String name = namedElement.getName();
+ return currentPkg.getMember(name);
+ }
+
+ /**
+ * Check whether a class contains a non-port attribute of a given name
+ *
+ * @param cl
+ * @return
+ */
+ public static boolean hasNonPortOwnedAttribute(Class cl, String name) {
+ for(Property p : cl.getOwnedAttributes()) {
+ if(!(p instanceof Port)) {
+ if(p.getName().equals(name)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ public static <T extends EObject> EList<T> getAllElementsOfType(Element examineElement, java.lang.Class<T> clazz)
+ {
+ EList<Element> visitedPackages = new BasicEList<Element>();
+ return getAllElementsOfType(examineElement, clazz, visitedPackages);
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T extends EObject> EList<T> getAllElementsOfType(Element examineElement, java.lang.Class<T> clazz, EList<Element> visitedPackages)
+ {
+ EList<T> list = new UniqueEList<T>();
+ for(Element element : examineElement.allOwnedElements()) {
+ if(element instanceof Package) {
+ if(!visitedPackages.contains(element)) {
+ visitedPackages.add(element);
+ list.addAll(getAllElementsOfType((Package)element, clazz,
+ visitedPackages));
+ }
+ } else if(clazz.isInstance(element)) {
+ list.add((T)element);
+ }
+ }
+ return list;
+ }
+
+ /**
+ * Return the top element of the model that is currently edited. This function is based on the
+ * assumption that the user model is the first resource that is loaded into the model set.
+ * Use this function instead of Utils.getTop (or getModel) if you want to avoid navigating to the
+ * root of an imported model.
+ *
+ * @return the top level package of the model currently loaded into an editor.
+ */
+ public static Package getUserModel() {
+ ServiceUtilsForActionHandlers serviceUtils = ServiceUtilsForActionHandlers.getInstance();
+ try {
+ // IPath fn = serviceUtils.getModelSet().getFilenameWithoutExtension();
+ EList<Resource> resources = serviceUtils.getModelSet().getResources();
+ if(resources.size() >= 3) {
+ // check first three resources (di, notation, uml)
+ for(int i = 0; i < 3; i++) {
+ Resource userResource = resources.get(i);
+ if(userResource.getContents().size() > 0) {
+ EObject topEObj = userResource.getContents().get(0);
+ if(topEObj instanceof Package) {
+ return (Package)topEObj;
+ }
+ }
+ }
+ }
+ } catch (ServiceException e) {
+ }
+ return null;
+ }
+
+ /**
+ * @param a
+ * potential implementation
+ * @return true, if passed classifier is an implementation (i.e. declared
+ * via stereotypes as component or connector implementation (a sub-type of component implementations,
+ * therefore no additional check is required)
+ */
+ public static boolean isCompImpl(Classifier implementation) {
+ return !implementation.isAbstract();
+ }
+
+ /**
+ * Check whether the passed class is a component type (and not a component implementation).
+ * This includes connector and container types as well.
+ *
+ * @param component
+ * @return
+ */
+ public static boolean isCompType(Class component) {
+ return component.isAbstract();
+ }
+
+ public static boolean isSingleton(Class component) {
+ return StUtils.isApplied(component, Singleton.class);
+ }
+
+ public static boolean treatNoneAsComposite() {
+ IPreferenceStore store = org.eclipse.papyrus.qompass.designer.core.Activator.getDefault().getPreferenceStore();
+ return store.getBoolean(QompassPreferenceConstants.P_TREAT_NONE_AS_COMPOSITE);
+ }
+
+ public static boolean allAttributesAreConfigAttributs() {
+ IPreferenceStore store = org.eclipse.papyrus.qompass.designer.core.Activator.getDefault().getPreferenceStore();
+ return store.getBoolean(QompassPreferenceConstants.P_ALL_ATTRIBUTES_ARE_CONFIG_ATTRIBUTES);
+ }
+
+ /**
+ * True, if either a component implementation or a type
+ *
+ * @param component
+ * @return
+ */
+ public static boolean isComponent(Class component) {
+ return (isCompType(component) || isCompImpl(component));
+ }
+
+ /**
+ * Return the rules associated with a component
+ *
+ * @param component
+ * @return
+ */
+ public static EList<ContainerRule> getRules(Class component) {
+ RuleApplication ruleApplication = StUtils.getApplication(component, RuleApplication.class);
+ if(ruleApplication != null) {
+ return ruleApplication.getContainerRule();
+ }
+ return null;
+ }
+
+ /**
+ * Return the absolute file name to a file name given e.g. in the form platform:/plugin/xxx
+ *
+ * @param fileName
+ * the file name using eclipse elements such as platform:/plugin
+ * @return the absolute file name
+ */
+ public static String getAbsoluteFN(String fileName) {
+ try {
+ URL absoluteURL = FileLocator.toFileURL(new URL(fileName));
+ return absoluteURL.getFile();
+ } catch (MalformedURLException e) {
+ } catch (IOException e) {
+ }
+ return null;
+ }
+
+ // TODO: need a generic utility function for getting all elements obeying a certain
+ // criteria from a model
+ public static EList<ContainerRule> getAllRules(Package pkg) {
+ EList<Package> visitedPackages = new BasicEList<Package>();
+ EList<ContainerRule> contRuleList = new BasicEList<ContainerRule>();
+ getAllRules(pkg, visitedPackages, contRuleList);
+ return contRuleList;
+ }
+
+ public static void getAllRules(Package pkg, EList<Package> visitedPackages, EList<ContainerRule> contRuleList) {
+ for(Element el : pkg.getMembers()) {
+ if(el instanceof Package) {
+ if(!visitedPackages.contains(el)) {
+ visitedPackages.add((Package)el);
+ getAllRules((Package)el, visitedPackages, contRuleList);
+ }
+ }
+ else if(el instanceof Class) {
+ if(StUtils.isApplied(el, ContainerRule.class)) {
+ ContainerRule rule = StUtils.getApplication((Class)el, ContainerRule.class);
+ contRuleList.add(rule);
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/AcceleoDriver.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/AcceleoDriver.java
new file mode 100644
index 00000000000..777b25a5590
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/AcceleoDriver.java
@@ -0,0 +1,328 @@
+/**
+ * Copyright CEA-LIST 2009
+ * available under EPL 1.0 licence
+ *
+ * This file is part of the Qompass tool chain (www.ec3m.net)
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * $Id$
+ */
+
+package org.eclipse.papyrus.qompass.designer.core.acceleo;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.acceleo.common.IAcceleoConstants;
+import org.eclipse.acceleo.engine.AcceleoEnginePlugin;
+import org.eclipse.acceleo.engine.AcceleoEvaluationException;
+import org.eclipse.acceleo.engine.generation.AcceleoEngine;
+import org.eclipse.acceleo.engine.generation.strategy.PreviewStrategy;
+import org.eclipse.acceleo.model.mtl.Module;
+import org.eclipse.acceleo.model.mtl.ModuleElement;
+import org.eclipse.acceleo.model.mtl.Template;
+import org.eclipse.acceleo.model.mtl.resource.AcceleoResourceSetImpl;
+import org.eclipse.acceleo.parser.AcceleoParser;
+import org.eclipse.acceleo.parser.AcceleoSourceBuffer;
+import org.eclipse.acceleo.parser.cst.ModuleImportsValue;
+import org.eclipse.core.runtime.ILogListener;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+public class AcceleoDriver {
+
+ /**
+ * URI of file that is currently evaluated
+ */
+ public static final URI currentURI = URI.createURI("current." + IAcceleoConstants.EMTL_FILE_EXTENSION);
+
+ public static void init() {
+ engine = new AcceleoEngine();
+ parser = new AcceleoParser();
+ // some errors are silently captured inside the evaluation query (@see AcceleoEvaluationVisiton.visitExpression). Yet they produce
+ // an event in the Acceleo log which is captured via this listener.
+ AcceleoEnginePlugin.getDefault().getLog().addLogListener(new ILogListener() {
+
+ public void logging(IStatus status, String plugin) {
+ logEntries.add(status);
+
+ }
+ });
+ acceleoResourceSet = new AcceleoResourceSetImpl();
+ acceleoResourceSet.createResource(currentURI);
+ }
+
+ /**
+ * Execute a script passed as parameter. It will be executed in the context
+ * of a base script that declares the meta-model (UML2) and has additional
+ * imports (currently none).
+ *
+ * @param template
+ * The template in string form
+ * @param element
+ * The UML element to which the template is applied
+ * @return the evaluated template
+ */
+ public static String bind(String templateStr, Element element) throws TransformationException {
+ return evaluate(templateStr, element, null);
+ }
+
+ /**
+ * find an MTL file in a plugin. This functions assumes that the relative path (to a "bin" folder) within the
+ * plugin includes the plug-in name as a prefix
+ *
+ * @param moduleName
+ * qualified name within the plug-in (assuming that the associated file is located
+ * in a sub-folder with the name "bin")
+ */
+ public static URI findFileInPlugin(String moduleName) {
+ String relativePath = moduleName.replace(IAcceleoConstants.NAMESPACE_SEPARATOR, File.separator);
+ String segments[] = moduleName.split(IAcceleoConstants.NAMESPACE_SEPARATOR);
+
+ for(int pass = 0; pass < 2; pass++) {
+ // try bin directory in first pass (deployed plugins: don't use bin, devel: use bin).
+ // Problem: resource is also found without bin, but resolving fails later
+ String binSep = (pass == 0) ? "/bin/" : "/";
+ for(int segmentLen = segments.length - 1; segmentLen > 1; segmentLen--) {
+ String pluginNameCandidate = segments[0];
+ for(int i = 1; i < segmentLen; i++) {
+ pluginNameCandidate += "." + segments[i];
+ }
+
+ String fileNameCandidate = pluginNameCandidate + binSep + relativePath +
+ "." + IAcceleoConstants.EMTL_FILE_EXTENSION;
+ // String absoluteFileName = Utils.getAbsoluteFN(fileNameCandidate);
+ // if(absoluteFileName != null) {
+ // }
+
+ URI uri = URI.createPlatformPluginURI(fileNameCandidate, true);
+ try {
+ Resource r = acceleoResourceSet.getResource(uri, true);
+ if(r != null) {
+ // use absolute path, if possible, i.e. if file exists at absolute path
+ // this is required, since Acceleo references dependent file using a relative
+ // path
+ String absoluteFileName = Utils.getAbsoluteFN(uri.toString());
+ if(absoluteFileName != null) {
+ File fileCandidate = new File(absoluteFileName);
+ if(fileCandidate.exists()) {
+ // remove resource with "wrong" URI
+ removeURIfromResourceSet(uri);
+ return URI.createFileURI(fileCandidate.getAbsolutePath());
+ }
+ }
+ return uri;
+ }
+ } catch (Exception e) {
+ // the URI has been added to the resource set, although there is an exception.
+ removeURIfromResourceSet(uri);
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Small helper: remove a URI from the AcceleoResourceSet
+ *
+ * @param uri
+ */
+ protected static void removeURIfromResourceSet(URI uri) {
+ for(Resource resource : acceleoResourceSet.getResources()) {
+ if(resource.getURI() == uri) {
+ acceleoResourceSet.getResources().remove(resource);
+ break;
+ }
+ }
+ }
+
+ /**
+ * Evaluate an Acceleo template
+ *
+ * @param ob
+ * An opaque behavior whose first body contains an Acceleo template that should be evaluated
+ * @param element
+ * The UML element to which the template is applied
+ * @param args
+ * an array of arguments that are passed to the template. Each argument
+ * must be either an EObject, a String, an Integer or a Boolean
+ * (TODO: currently not evaluated)
+ * @return the evaluated template
+ * @return
+ * @throws TransformationException
+ */
+ public static String evaluate(OpaqueBehavior b, Element element, Object args[]) throws TransformationException {
+ // script = null;
+ if(b.getBodies().size() > 0) {
+ String body = b.getBodies().get(0);
+ return evaluate(body, b.getQualifiedName(), element, args);
+ }
+ return null;
+ }
+
+ /**
+ * Evaluate an Acceleo template
+ *
+ * @param template
+ * The template in string form
+ * @param element
+ * The UML element to which the template is applied
+ * @param args
+ * an array of arguments that are passed to the template. Each argument
+ * must be either an EObject, a String, an Integer or a Boolean
+ * (TODO: currently not evaluated)
+ * @return the evaluated template
+ */
+ public static String evaluate(String templateStr, Element element, Object args[]) throws TransformationException {
+ return evaluate(templateStr, "", element, args);
+ }
+
+ /**
+ * Evaluate an Acceleo template
+ *
+ * @param templateStr
+ * The acceleo template in string form
+ * @param templateName
+ * The name under which a template can be identified, i.e. the file name
+ * if the template is stored in a file and the qualified name of the model element (opaque
+ * behavior) if the template is stored within the model.
+ * @param element
+ * The UML element to which the template is applied
+ * @param args
+ * an array of arguments that are passed to the template. Each argument
+ * must be either an EObject, a String, an Integer or a Boolean
+ * (TODO: currently not evaluated)
+ * @return the evaluated template
+ * @throws TransformationException
+ */
+ public static String evaluate(String templateStr, String templateName, Element element, Object args[]) throws TransformationException {
+ if(templateStr == null) {
+ return null;
+ }
+
+ if(engine == null) {
+ init();
+ }
+
+ // support non declaration of a template for default naming operations
+ if(!(templateStr.startsWith("[import") || templateStr.startsWith("[template") || templateStr.startsWith("[module"))) {
+ templateStr = "[template public dummy(ne : NamedElement)]\n" + templateStr + "\n[/template]\n";
+ }
+
+ // module names are not relevant, since passed templates can not be called by others
+ if(!templateStr.startsWith("[module")) {
+ templateStr = "[module dummyMod('http://www.eclipse.org/uml2/4.0.0/UML')/]\n\n" + templateStr;
+ }
+
+ // Strategy:
+ // 1. Use AcceleoParser to transform text (OpaqueExpression) into Module
+ // => list of dependencies via explicit import statements
+ // 2. Use AcceleoEngine to resolve expression.
+
+ // Strategy first: parse imports: verify, if already in resourceSet
+
+ AcceleoSourceBuffer sourceBuffer = new AcceleoSourceBuffer(new StringBuffer(templateStr));
+
+ Resource resource = acceleoResourceSet.getResource(currentURI, false);
+
+ try {
+ EList<URI> depURIs = new BasicEList<URI>();
+ logEntries.clear();
+ // deps.add(outputURI);
+
+ // check, if imports are already in resource set
+ sourceBuffer.createCST();
+ for(ModuleImportsValue importValue : sourceBuffer.getCST().getImports()) {
+ String importedModuleName = importValue.getName();
+ if(importedModuleName != null) {
+ // String pathName = importedModuleName.replace(IAcceleoConstants.NAMESPACE_SEPARATOR, File.separator);
+
+ URI depURI = findFileInPlugin(importedModuleName);
+ if(depURI != null) {
+ depURIs.add(depURI);
+ // Resource r = acceleoResourceSet.getResource(depURI, true);
+ }
+ else {
+ throw new TransformationException("Could not find imported module:\n" + importedModuleName + "\n\n" +
+ "The module (in compiled form, i.e. with .emtl) is searched in the path corresponding to its qualified name " +
+ "(starting with the \"bin\" directory, if a source plugin) of dependend plug-ins. Verify that these have the " +
+ "Acceleo nature");
+ }
+ }
+ }
+
+ // parse imported files - not required, EMTL files exist already
+ // parser.parse(depInputFiles, outputURIs, new BasicEList<URI>(), null, new BasicMonitor());
+
+ parser.parse(sourceBuffer, resource, depURIs);
+ if(sourceBuffer.getProblems().getList() != null) {
+ if(sourceBuffer.getProblems().getList().size() > 0) {
+ // System.err.println(sourceBuffer.getProblems().getMessage());
+ throw new TransformationException("Acceleo problem: " + sourceBuffer.getProblems().getMessage() +
+ "\n\nTemplate: " + templateName + "\n" + templateStr);
+ }
+ }
+ if(resource.getContents().size() > 0) {
+ EObject result = resource.getContents().get(0);
+ List<Object> arguments = new ArrayList<Object>();
+ // The input model itself is a potential argument
+ arguments.add(element);
+ if(result instanceof Module) {
+ Module module = (Module)result;
+ for(ModuleElement me : module.getOwnedModuleElement()) {
+ if(me instanceof Template) {
+ logEntries.clear();
+ Object stringResult = engine.evaluate((Template)me, arguments, new PreviewStrategy(), null);
+ // System.err.println("result: " + stringResult);
+ if(logEntries.size() > 0) {
+ IStatus e = logEntries.get(0);
+ Throwable exception = e.getException();
+ String message = exception.getMessage();
+
+ if(exception.getCause() instanceof InvocationTargetException) {
+ Throwable targetException = ((InvocationTargetException)exception.getCause()).getTargetException();
+ if(targetException != null) {
+ message = targetException.getMessage();
+ }
+ }
+ throw new TransformationException("Acceleo evaluation problems (showing only first): " + message +
+ "\n\nTemplate: " + templateName + "\n" + templateStr);
+
+ }
+ if(stringResult instanceof String) {
+ return (String)stringResult;
+ }
+ }
+ }
+ }
+ }
+ } catch (AcceleoEvaluationException e) {
+ String elementStr = (element instanceof NamedElement ? ((NamedElement)element).getQualifiedName() : element.toString());
+ throw new TransformationException("Acceleo EvaluationException" + e + "\n\nPassed element: " + elementStr +
+ "\n\nTemplate: " + templateName + "\n" + templateStr);
+ }
+ return "";
+ }
+
+ protected static EList<IStatus> logEntries = new BasicEList<IStatus>();
+
+ protected static AcceleoEngine engine = null;
+
+ protected static ResourceSet acceleoResourceSet;
+
+ protected static AcceleoParser parser;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/EnumService.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/EnumService.java
new file mode 100644
index 00000000000..896f3a37544
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/EnumService.java
@@ -0,0 +1,130 @@
+package org.eclipse.papyrus.qompass.designer.core.acceleo;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+
+
+public class EnumService {
+
+ public static void init() {
+ enumHash.clear();
+ }
+
+ /**
+ * Return qualified name of enum package which is used to prefix enumerations (namespace)
+ *
+ * @param dummy
+ * @return
+ */
+ public static String enumSvcPrefix() {
+ return enumPkg.getQualifiedName();
+ }
+
+ public static String literalKey(Element dummy, String enumName, String literalKey) {
+ String literal = "";
+ if(literalKey.equals("Port")) {
+ literal = "ID_" + TransformationContext.port.getName();
+ }
+ else if(literalKey.equals("Formal")) {
+ literal = "ID_" + TransformationContext.formalParameter.getName();
+ }
+ else if(literalKey.equals("Instance")) {
+ literal = "ID_" + TransformationContext.instance.getName();
+ }
+ else if(literalKey.equals("Interface")) {
+ literal = "ID_" + TransformationContext.classifier.getName();
+ }
+ return literal(enumName, literal);
+ }
+
+ public static String quoteLiteral(Element dummy, String enumName, String literal) {
+ return "\"" + literal(enumName, literal) + "\"";
+ }
+
+ /**
+ * Create a literal within an enumeration. Both, the literal and the enumeration may be an Acceleo template startiung with [
+ *
+ * @param dummy
+ * @param enumName
+ * the name of an enumeration
+ * @param literal
+ * the name of a literal within that enumeration.
+ * @return
+ */
+ public static String literal(String enumName, String literal) {
+ // Acceleo does not expand parameters, so we do it here
+ /*
+ * if(enumName.contains("[") && enumName.contains("/]")) {
+ * try {
+ * enumName = AcceleoDriver.bind(enumName, dummy);
+ * } catch (TransformationException e) {
+ * return e.toString();
+ * }
+ * }
+ * if(literal.contains("[") && enumName.contains("/]")) {
+ * try {
+ * literal = AcceleoDriver.bind(literal, dummy);
+ * } catch (TransformationException e) {
+ * return e.toString();
+ * }
+ * }
+ */
+ Enumeration enumeration = enumHash.get(enumName);
+ if(enumPkg == null) {
+ return literal;
+ }
+ if(enumeration == null) {
+ if(enumName.startsWith("L")) {
+ // magic prefix for class local
+ enumeration = (Enumeration)
+ ((Class)TransformationContext.classifier).createNestedClassifier(enumName, UMLPackage.eINSTANCE.getEnumeration());
+ }
+ else {
+ enumeration = enumPkg.createOwnedEnumeration(enumName);
+ }
+ enumHash.put(enumName, enumeration);
+ }
+ if(enumeration.getOwnedLiteral(literal) == null) {
+ enumeration.createOwnedLiteral(literal);
+ }
+ // declare a dependency to the enumeration from the current classifier
+ checkAndCreateDependency(TransformationContext.classifier, enumeration);
+
+ return literal;
+ }
+
+ public static void checkAndCreateDependency(Classifier classifier, NamedElement target) {
+ boolean found = false;
+ for(Dependency dep : classifier.getClientDependencies()) {
+ if(dep.getSuppliers().contains(target)) {
+ found = true;
+ }
+ }
+ if(!found) {
+ classifier.createDependency(target);
+ }
+ }
+
+ public static void createEnumPackage(Package root) {
+ enumPkg = root.createNestedPackage("globalenums");
+ }
+
+ public static Package enumPkg;
+
+ public static void createEnums() {
+
+ }
+
+ private static Map<String, Enumeration> enumHash = new HashMap<String, Enumeration>();
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/EnumService.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/EnumService.mtl
new file mode 100644
index 00000000000..ce410437028
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/EnumService.mtl
@@ -0,0 +1,21 @@
+[comment encoding = UTF-8 /]
+[module EnumService('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[query public literal(arg1 : String, arg2 : String) : String
+ = invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService',
+ 'literal(java.lang.String, java.lang.String)', Sequence{arg1, arg2}) /]
+
+[query public enumSvcPrefix() : String
+ = invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService', 'enumSvcPrefix()', Sequence{}) /]
+
+[query public literalKey(arg0 : Element, arg1 : String, arg2 : String) : String
+ = invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService', 'literalKey(org.eclipse.uml2.uml.Element, java.lang.String, java.lang.String)', Sequence{arg0, arg1, arg2}) /]
+
+[query public quoteLiteral(arg0 : Element, arg1 : String, arg2 : String) : String
+ = invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService', 'quoteLiteral(org.eclipse.uml2.uml.Element, java.lang.String, java.lang.String)', Sequence{arg0, arg1, arg2}) /]
+
+[query public checkAndCreateDependency(arg0 : Classifier, arg1 : NamedElement) : OclVoid
+ = invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService', 'checkAndCreateDependency(org.eclipse.uml2.uml.Classifier, org.eclipse.uml2.uml.NamedElement)', Sequence{arg0, arg1}) /]
+
+[query public createEnumPackage(arg0 : Package) : OclVoid
+ = invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService', 'createEnumPackage(org.eclipse.uml2.uml.Package)', Sequence{arg0}) /] \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/StUtils.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/StUtils.mtl
new file mode 100644
index 00000000000..e0e25e4de17
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/StUtils.mtl
@@ -0,0 +1,9 @@
+[module StUtils('http://www.eclipse.org/uml2/4.0.0/UML')]
+
+[query public isApplied(element : Element, stereoName : String) : Boolean =
+ invoke('org.eclipse.papyrus.qompass.designer.core.StUtils', 'isApplied(org.eclipse.uml2.uml.Element, java.lang.String)',
+ Sequence{element, stereoName}) /]
+
+[query public getApplication(element : Element, stereoName : String) : OclAny =
+ invoke('org.eclipse.papyrus.qompass.designer.core.StUtils', 'getApplication(org.eclipse.uml2.uml.Element, java.lang.String)',
+ Sequence{element, stereoName}) /] \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/TransformationContext.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/TransformationContext.mtl
new file mode 100644
index 00000000000..a34181f2366
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/TransformationContext.mtl
@@ -0,0 +1,43 @@
+[module TransformationContext('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[comment Copyright (c) 2012 CEA List./]
+
+[query public trafoContextClassifier(dummmy : Element) : Classifier =
+ invoke('org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext',
+ 'getClassifier()',
+ Sequence{}) /]
+
+[query public trafoContextInstance(dummmy : Element) : InstanceSpecification =
+ invoke('org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext',
+ 'getInstance()',
+ Sequence{}) /]
+
+[query public trafoContextFormalParameter(dummmy : Element) : Classifier =
+ invoke('org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext',
+ 'getFormalParameter()',
+ Sequence{}) /]
+
+[query public trafoContextPort(dummmy : Element) : Port =
+ invoke('org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext',
+ 'getPort()',
+ Sequence{}) /]
+
+[query public pkgTemplateParameter(formalName : String) : String =
+ invoke('org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext',
+ 'pkgTemplateParameter(java.lang.String)',
+ Sequence{formalName}) /]
+
+[query public templateBinding(dummmy : Element) : TemplateBinding =
+ invoke('org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext',
+ 'getBinding',
+ Sequence{}) /]
+
+[query public templateBinding() : TemplateBinding =
+ invoke('org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext',
+ 'getBinding',
+ Sequence{}) /]
+
+[query public getSourceRoot(dummy : Element) : Package =
+ invoke('org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext',
+ 'getSourceRoot',
+ Sequence{}) /] \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.java
new file mode 100644
index 00000000000..78c932cef84
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.java
@@ -0,0 +1,437 @@
+/*
+ * This file is part of Qompass GenTools
+ * Copyright (C) 2008 CEA LIST (http://www-list.cea.fr/)
+
+ * initial developer : Christophe JOUVRAY from CEA LIST
+ * Ansgar Radermacher
+ */
+package org.eclipse.papyrus.qompass.designer.core.acceleo;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.InterfaceRealization;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Relationship;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import Cpp.CppExternClass;
+import Cpp.CppNoCodeGen;
+import Cpp.CppType;
+
+
+/**
+ * Collection of utility functions. In contrast to core.Utils, it is chiefly used by Acceleo
+ * scripts
+ *
+ * @author ansgar
+ *
+ */
+
+public class UMLTool {
+
+ /**
+ * @param operation
+ * @return all in and inout parameters of an operation
+ */
+ public static EList<Parameter> parametersInInout(Operation operation) {
+ EList<Parameter> list = new BasicEList<Parameter>();
+ for(Parameter parameter : operation.getOwnedParameters()) {
+ if((parameter.getDirection().getValue() == ParameterDirectionKind.IN) ||
+ (parameter.getDirection().getValue() == ParameterDirectionKind.INOUT)) {
+ list.add(parameter);
+ }
+ }
+ return list;
+ }
+
+ /**
+ * @param operation
+ * @return all out, inout and return parameters of an operation
+ */
+ public static EList<Parameter> parametersOutInout(Operation operation) {
+ EList<Parameter> list = new BasicEList<Parameter>();
+ for(Parameter parameter : operation.getOwnedParameters()) {
+ if((parameter.getDirection().getValue() == ParameterDirectionKind.OUT) ||
+ (parameter.getDirection().getValue() == ParameterDirectionKind.RETURN) ||
+ (parameter.getDirection().getValue() == ParameterDirectionKind.INOUT)) {
+ list.add(parameter);
+ }
+ }
+ return list;
+ }
+
+ /**
+ * @param operation
+ * @return all non-return parameters of an operation
+ */
+ public static EList<Parameter> parametersNonRet(Operation operation) {
+ EList<Parameter> list = new BasicEList<Parameter>();
+ for(Parameter parameter : operation.getOwnedParameters()) {
+ if(parameter.getDirection().getValue() != ParameterDirectionKind.RETURN) {
+ list.add(parameter);
+ }
+ }
+ return list;
+ }
+
+ /**
+ * A small helper function that makes names compliant with variable
+ * names in programming languages such as C++ or Java
+ * Unlike varName2, replace scoping signs as well
+ */
+ public static String varName(NamedElement element) {
+ return varName(element.getName());
+ }
+
+ /**
+ * A small helper function that makes names compliant with variable
+ * names in programming languages such as C++ or Java
+ * Unlike varName2, replace scoping signs as well
+ */
+ public static String varName(String umlName) {
+ umlName = umlName.replace(".", "_");
+ umlName = umlName.replace("::", "_");
+ return varName2(umlName);
+ }
+
+ /**
+ * A small helper function that makes names compliant with variable
+ * names in programming languages such as C++ or Java
+ * TODO: obviously, it is not complete (e.g. in case of "$", national characters ("ä", "é", ...) , ...)
+ */
+ public static String varName2(NamedElement element) {
+ String umlName = element.getName();
+ return varName2(umlName);
+ }
+
+ /**
+ * Like varName, but does not replace "." with "_"
+ *
+ * @param umlName
+ * @return
+ */
+ public static String varName2(String umlName) {
+ umlName = umlName.replace(" ", "_");
+ umlName = umlName.replace("-", "_");
+ umlName = umlName.replace("+", "_");
+ umlName = umlName.replace("?", "_");
+ return umlName;
+ }
+
+ public static EList<Namespace> usedNamespaces(NamedElement element) {
+ EList<Namespace> list = new BasicEList<Namespace>(element.allNamespaces());
+
+ if(list.size() < 1) {
+ return null;
+ }
+ list.remove(list.size() - 1); // remove last element (top-level)
+ return list;
+ }
+
+ /**
+ * Return a sequence of namespaces for a given element, starting from the "bottom"
+ * one, i.e. the one in which the element is contained. It will end before the
+ * searchNS namespace is reached. Returns null, if the element is not contained
+ * within the search namespace.
+ *
+ * @param element
+ * @param searchNS
+ * @return
+ */
+ public static EList<Namespace> relativePath(Element element, Namespace searchNS) {
+ EList<Namespace> pathList = new BasicEList<Namespace>();
+ Element owner = element.getOwner();
+ if(!(owner instanceof Namespace)) {
+ // happens, if element is contained in a template signature
+ return null;
+ }
+ Namespace ns = (Namespace)owner;
+ while(ns != null) {
+ if(ns == searchNS) {
+ return pathList;
+ }
+ pathList.add(ns);
+
+ ns = (Namespace)ns.getOwner();
+ }
+ return null;
+ }
+
+ /**
+ * This method returns all parameters of an operation in a flat way,
+ * i.e. for parameters typed by a data-type, multiple parameters are
+ * returned.
+ * TODO: support arbitrary nesting (recursive function)
+ */
+ public EList<Parameter> flatParameters(Operation operation) {
+ EList<Parameter> parameters = new BasicEList<Parameter>();
+
+ for(Parameter parameter : operation.getOwnedParameters()) {
+ Type type = parameter.getType();
+ if(parameter.getUpper() == -1) {
+ // multiplicity = "*"
+ Parameter containedParam = UMLFactory.eINSTANCE.createParameter();
+ containedParam.setName(parameter.getName() + "_length");
+ NamedElement basicTypes = type.getModel().getMember("CORBA");
+ if(basicTypes instanceof Package) {
+ NamedElement ulong = ((Package)basicTypes).getMember("ULong");
+ if(ulong instanceof Type) {
+ containedParam.setType((Type)ulong);
+ }
+ }
+ parameters.add(containedParam);
+ }
+ if((type instanceof PrimitiveType) || (type instanceof Enumeration)) {
+ // these two are sub-types of DataType and are therefore checked before
+ parameters.add(parameter);
+ }
+ if(type instanceof DataType) {
+ for(Property property : ((DataType)type).getAttributes()) {
+ Parameter containedParam = UMLFactory.eINSTANCE.createParameter();
+ containedParam.setName(parameter.getName() + "_" + property.getName());
+ containedParam.setType(property.getType());
+ parameters.add(containedParam);
+ }
+ } else {
+ parameters.add(parameter);
+ }
+ }
+ return parameters;
+ }
+
+ /**
+ * This method returns all types that are referenced by a classifier. This includes
+ * attribute types, types within operations as well as inherited types.
+ * This is useful to generate the #includes
+ * (which is used by the Acceleo code within the packaging plugin)
+ */
+ public static EList<Classifier> getReferencedClassifiers(Classifier classifier) {
+ EList<Classifier> list = new UniqueEList<Classifier>();
+ list.addAll(classifier.parents());
+
+ if(classifier instanceof Class) {
+ // get classifiers referenced by attributes
+ for(Operation operation : ((Class)classifier).getOwnedOperations()) {
+ for(Parameter parameter : operation.getOwnedParameters()) {
+ Type type = parameter.getType();
+ if(type instanceof Classifier) {
+ list.add((Classifier)type);
+ }
+ }
+ }
+
+ // get classifiers referenced by attributes
+ for(Property attribute : ((Class)classifier).getOwnedAttributes()) {
+ Type type = attribute.getType();
+ if(type instanceof Classifier) {
+ list.add((Classifier)type);
+ }
+ }
+ }
+ return list;
+ }
+
+ /**
+ * TODO: copy&paste from C++ generator (& specific for C++)
+ *
+ * @param ne
+ * @return
+ */
+ public static String cppQName(NamedElement ne) {
+ if((StUtils.isApplied(ne, CppExternClass.class)) || (StUtils.isApplied(ne, CppNoCodeGen.class))) {
+ return ne.getName();
+ } else {
+ String qName = ne.getName();
+ for(Namespace ns : ne.allNamespaces()) {
+ if(!(ns instanceof Model)) {
+ qName = ns.getName() + "::" + qName;
+ }
+ }
+ return qName;
+ }
+ }
+
+ /**
+ * Return the name of a parameter. In case of a return parameter, always return the name
+ * "retValue". This is quite useful for marshalling operations (which need to assign a
+ * value to the return parameter, which is sometimes not initialized)
+ *
+ * @param parameter
+ * @return
+ */
+ public static String paramName(Parameter parameter) {
+ if(parameter.getDirection().getValue() == ParameterDirectionKind.RETURN) {
+ return "retValue";
+ } else {
+ return parameter.getName();
+ }
+ }
+
+ /**
+ * Return the interface which owns an operation that is implemented by a class.
+ * Context: a class might implement several interfaces by defining their operations.
+ * The operation is useful in the context of state-machines: when a transition is triggered by
+ * the call of an operation of the class, we'd like to know which interceptor (for which interface)
+ * belongs to it (since the operations are enumerated within each interface).
+ * TOOD: move operation into state-chart java code
+ *
+ * @param operation
+ * @return the interface which the operation belongs
+ */
+ public static Interface implementsInterface(Operation operation) {
+ Element owner = operation.getOwner();
+ if(owner instanceof Class) {
+ String name = operation.getName();
+ EList<Type> types = new BasicEList<Type>();
+ for(Parameter parameter : operation.getOwnedParameters()) {
+ types.add(parameter.getType());
+ }
+ // loop over implemented realizations. Do not rely on FCM derivedElement information
+ // as it might be missing on some models (it would point from an operation of the class
+ // to the associated operation of the interface)
+ for(InterfaceRealization ir : ((Class)owner).getInterfaceRealizations()) {
+ // check for types to allow for overloading
+ Operation candidate = ir.getContract().getOwnedOperation(name, null, types);
+ if(candidate != null) {
+ return ir.getContract();
+ }
+ }
+ }
+ else if(owner instanceof Interface) {
+ return (Interface)owner;
+ }
+ return null;
+ }
+
+ /**
+ * Convenience function: Declare a dependency from source to destination. The function checks,
+ * if a dependency already exists to avoid double dependencies.
+ *
+ * @param source
+ * source type of the dependency
+ * @param dest
+ * destination of the dependency
+ */
+ public static void declareDependency(Type source, Type dest) {
+ // check, if a relationship already exists
+ for(Relationship dependency : source.getRelationships(UMLPackage.eINSTANCE.getDependency())) {
+ if(((Dependency)dependency).getSuppliers().contains(dest)) {
+ return;
+ }
+ }
+ source.createDependency(dest);
+ }
+
+ /**
+ * Get the URI fragment of an element within your model
+ * Useful for transmitting model references
+ *
+ * @param element
+ * a UML element
+ * @return
+ */
+ public static String fragment(Element element) {
+ Resource resource = element.eResource();
+ // TODO: use EcoreUtil getURI (InternalEObject) instead?
+
+ if(resource instanceof XMLResource) {
+ XMLResource xmlResource = (XMLResource)resource;
+ return "\"" + xmlResource.getURIFragment(element) + "\"";
+ }
+ return null;
+ }
+
+ /**
+ * Get the XML (URI) Id of an element within your model
+ * Useful for transmitting model references
+ *
+ * @param element
+ * a UML element
+ * @return
+ */
+ public static String xmlID(Element element) {
+ Resource resource = element.eResource();
+ // TODO: use EcoreUtil getURI (InternalEObject) instead?
+
+ if(resource instanceof XMLResource) {
+ XMLResource xmlResource = (XMLResource)resource;
+ return xmlResource.getID(element);
+ }
+ return null;
+ }
+
+ public static String getURI(Element element) {
+ Resource resource = element.eResource();
+ if(resource != null) {
+ URI uri = resource.getURI();
+ return uri.toString();
+ }
+ return null;
+ }
+
+ /**
+ *
+ * TODO: Specific to C++
+ *
+ * @param type
+ * a type
+ * @return return the definition of a typedef, if the type has been defined via
+ * the stereotype CppType of the Cpp profile
+ */
+ public static String dereferenceTypedef(Type type) {
+ if(type instanceof PrimitiveType) {
+ CppType cppType = StUtils.getApplication(type, CppType.class);
+ if(cppType != null) {
+ return cppType.getDefinition();
+ }
+ }
+ return type.getQualifiedName();
+
+ }
+
+ public static String encodeID(String uri) {
+ // _ becomes escape character. original _ is __, '-' becomes _M
+ return uri.replace("_", "__").replace("-", "_M");
+ }
+
+ public static String decodeID(String encodedURI) {
+ String result = "";
+ for(int i = 0; i < encodedURI.length(); i++) {
+ char c = encodedURI.charAt(i);
+ if(c == '_') {
+ char next = encodedURI.charAt(i + 1);
+ if(next == 'M')
+ result += '-';
+ else if(next == '_')
+ result += '_';
+ i++;
+ }
+ else {
+ result += c;
+ }
+ }
+ return result;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.mtl
new file mode 100644
index 00000000000..537cef4c12b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/UMLTool.mtl
@@ -0,0 +1,71 @@
+[module UMLTool('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[comment Copyright (c) 2012 CEA List./]
+
+[query public parametersInInout(operation : Operation) : Sequence(Parameter) =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'parametersInInout(org.eclipse.uml2.uml.Operation)',
+ Sequence{operation}) /]
+
+[query public parametersOutInout(operation : Operation) : Sequence(Parameter) =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'parametersOutInout(org.eclipse.uml2.uml.Operation)',
+ Sequence{operation}) /]
+
+[query public parametersNonRet(operation : Operation) : Sequence(Parameter) =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'parametersNonRet(org.eclipse.uml2.uml.Operation)',
+ Sequence{operation}) /]
+
+
+[query public implementsInterface(operation : Operation) : Interface =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'implementsInterface(org.eclipse.uml2.uml.Operation)',
+ Sequence{operation}) /]
+
+[query public declareDependency(source: Type, dest : Type) : OclVoid =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'declareDependency(org.eclipse.uml2.uml.Type, org.eclipse.uml2.uml.Type)',
+ Sequence{source, dest}) /]
+
+[query public varName(ne : NamedElement) : String =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'varName(org.eclipse.uml2.uml.NamedElement)',
+ Sequence{ne}) /]
+
+[query public varName(str : String) : String =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'varName(java.lang.String)',
+ Sequence{str}) /]
+
+[query public usedNamespaces(namedElement : NamedElement) : Sequence(Namespace) =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'usedNamespaces(org.eclipse.uml2.uml.NamedElement)',
+ Sequence{namedElement}) /]
+
+[query public fragment(element : Element) : String =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'fragment(org.eclipse.uml2.uml.Element)',
+ Sequence{element}) /]
+
+[query public xmlID(element : Element) : String =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'xmlID(org.eclipse.uml2.uml.Element)',
+ Sequence{element}) /]
+
+
+[query public getURI(element : Element) : String =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'getURI(org.eclipse.uml2.uml.Element)',
+ Sequence{element}) /]
+
+
+[query public dereferenceTypedef(type : Type) : String =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'dereferenceTypedef(org.eclipse.uml2.uml.Type)',
+ Sequence{type}) /]
+
+[query public encodeID(str : String) : String =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'encodeID(java.lang.String)',
+ Sequence{str}) /]
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/test.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/test.mtl
new file mode 100644
index 00000000000..b3859382699
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/test.mtl
@@ -0,0 +1,30 @@
+[comment encoding = UTF-8 /]
+[module test('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::EnumService/]
+
+[template public traceOp(operation: Operation)]
+
+// <instance>_<port>_<operation>
+// easier: <component>_<port>_<operation>
+updateTimestamp ();
+if (!hasDeclaredFunctions) {
+ declareFunctions();
+ hasDeclaredFunctions = true;
+}
+Tracing::TraceInit::wait();
+int processID = Tracing::TraceInit::getProcessID();
+OTF_Writer * writer = Tracing::TraceInit::getWriter();
+OTF_Writer_writeEnter (writer, timestamp.ticks(), [enumSvcPrefix()/]::id_[operation.class.varName()/]_[operation.varName()/], processID, 0);
+OTF_Writer_writeEventComment (writer, timestamp.ticks(), processID, portName);
+OTF_Writer_writeEventComment (writer, timestamp.ticks(), processID, instanceName);
+Tracing::TraceInit::post();
+[if not (type = null)] [type.cppType()/] ret = [/if]rconn->[operation.cppCall()/];
+updateTimestamp ();
+Tracing::TraceInit::wait();
+OTF_Writer_writeLeave (writer, timestamp.ticks(), [enumSvcPrefix()/]::id_[operation.class.varName()/]_[operation.varName()/], processID, 0);
+Tracing::TraceInit::post();
+[if not (type = null)]return ret;[/if]
+[/template] \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/utils_cpp.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/utils_cpp.mtl
new file mode 100644
index 00000000000..dceaa0f5356
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/acceleo/utils_cpp.mtl
@@ -0,0 +1,78 @@
+[module utils_cpp('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool /]
+
+[comment
+ create the C++ signature for an operation (including parenthesis)
+/]
+[template public cppSignature(operation : Operation)]
+[operation.name/] ([for (parameter : Parameter | operation.ownedParameter) separator(', ')]
+ [parameter.cppParameter()/]
+[/for]
+[/template]
+
+
+[comment
+ make a C++ call, pass all parameters except the return parameter
+/]
+[template public cppCall(operation : Operation)]
+[operation.name/]([for (parameter : Parameter | operation.parametersNonRet()) separator(', ')
+ ][parameter.name/][/for])
+[/template]
+
+[comment
+ make a C++ call, pass all parameters except the return parameter, prefix with "return",
+ if there is a return type in the operations declaration
+/]
+[template public returnCppCall(operation : Operation)]
+[if not (operation.type = null)]return [/if][cppCall()/]
+[/template]
+
+[template public cppParameter(parameter : Parameter)]
+ [parameter.type/][if (parameter.direction = 'out')]_out[/if] [parameter.name/]
+[/template]
+
+[template public cppType(type : Type) post(trim())]
+ [if (type.qualifiedName = 'UMLPrimitiveTypes::Boolean')]
+ bool
+ [elseif (type.qualifiedName = 'UMLPrimitiveTypes::Integer')]
+ int
+ [else]
+ [type.dereferenceTypedef()/]
+ [/if]
+[/template]
+
+
+[template public cppRetType(operation : Operation)]
+ [if (operation.type = null)]
+ void
+ [else]
+ [operation.type.cppType()/]
+ [/if]
+[/template]
+
+[comment
+ open a set of C++ namespaces associated with the packages of of the passed named element
+ TODO: use indentTab? => requires making this script recursive
+/]
+[template public openNamespace(namedElement : NamedElement)]
+ [comment need to include referenced types (assuming a naming convention) /]
+ [for (ns : Namespace | namedElement.usedNamespaces()->reverse())]
+ namespace [ns.name/]
+ [/for]
+[/template]
+
+[comment
+ close a set of C++ namespaces associated with the packages of of the passed named element
+/]
+[template public closeNamespace(namedElement : NamedElement)]
+ [comment need to include referenced types (assuming a naming convention) /]
+ [for (ns : Namespace | namedElement.usedNamespaces())]
+ }; // of namespace [ns.name/]
+ [/for]
+[/template]
+
+[comment
+<%script type="uml.Class" name="partSignature" post="trim()"%>
+<%for (part.sep(", ")) {%><%if (!type.isCompImpl) {%><%type.name%> * <%name%><%}%><%}%>
+/] \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/AllocUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/AllocUtils.java
new file mode 100644
index 00000000000..c1736efd123
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/AllocUtils.java
@@ -0,0 +1,280 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.SRM.SW_Concurrency.SwSchedulableResource;
+import org.eclipse.papyrus.MARTE.MARTE_Foundations.Alloc.Allocate;
+import org.eclipse.uml2.uml.Abstraction;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Node;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+public class AllocUtils {
+
+ /**
+ * Retrieve a list of nodes to which the instance is allocated to *or*
+ * to which one of the contained instances is allocated to (recursively)
+ *
+ * @param instance
+ * @return a list of nodes
+ */
+ public static EList<InstanceSpecification> getAllNodes(InstanceSpecification instance) {
+ EList<InstanceSpecification> nodeList = getNodes(instance);
+ for(InstanceSpecification containedInstance : DepUtils.getContainedInstances(instance)) {
+ nodeList.addAll(getAllNodes(containedInstance));
+ }
+ return nodeList;
+ }
+
+ /**
+ * Retrieve a list of nodes to which the instance is allocated to *or*
+ * to which one of the containing instances is explicitly allocated
+ *
+ * @param instance
+ * @return a list of nodes
+ */
+ public static EList<InstanceSpecification> getAllNodesOrThreadsParent(InstanceSpecification instance) {
+ EList<InstanceSpecification> nodeList = getNodesOrThreads(instance);
+ Package cdp = instance.getNearestPackage();
+ // TODO: not very efficient: loop each time over all instance specifications
+ for(NamedElement parentNE : cdp.getMembers()) {
+ if(parentNE instanceof InstanceSpecification) {
+ // possible parent instance specification
+ InstanceSpecification parentIS = (InstanceSpecification)parentNE;
+ if(DepUtils.getContainedInstances(parentIS).contains(instance)) {
+ nodeList.addAll(getAllNodesOrThreadsParent(parentIS));
+ }
+ }
+ }
+ return nodeList;
+ }
+
+ public static InstanceSpecification getNode(InstanceSpecification instance) {
+ EList<InstanceSpecification> nodeList = getNodes(instance);
+ if(nodeList.size() != 0) {
+ return nodeList.get(0);
+ }
+ return null;
+ }
+
+ public static InstanceSpecification getNodeOrThread(InstanceSpecification instanceOrThread) {
+ EList<InstanceSpecification> nodeList = getNodesOrThreads(instanceOrThread);
+ if(nodeList.size() != 0) {
+ return nodeList.get(0);
+ }
+ return null;
+ }
+
+ /**
+ * This method returns a list of nodes when given an instance.
+ * It is based on MARTE Allocation (a stereotyped abstraction) which is a generic
+ * mechanism to deploy UML elements to nodes.
+ *
+ * @param instanceOrThread
+ * The instance that should be deployed
+ * @return
+ */
+ public static EList<InstanceSpecification> getNodesOrThreads(NamedElement instanceOrThread) {
+ EList<InstanceSpecification> nodeList = new UniqueEList<InstanceSpecification>();
+
+ for(DirectedRelationship relationship : instanceOrThread.getSourceDirectedRelationships(UMLPackage.eINSTANCE.getAbstraction())) {
+ Abstraction abstraction = (Abstraction)relationship;
+ if(StUtils.isApplied(abstraction, Allocate.class)) {
+ for(Element target : abstraction.getTargets()) {
+ if(target instanceof InstanceSpecification) {
+ nodeList.add((InstanceSpecification)target);
+ }
+ }
+ }
+ }
+ return nodeList;
+ }
+
+ /**
+ * This method returns a list of nodes when given an instance.
+ * It is based on MARTE Allocation (a stereotyped abstraction) which is a generic
+ * mechanism to deploy UML elements to nodes.
+ *
+ * @param instanceOrThread
+ * The instance that should be deployed
+ * @return
+ */
+ public static EList<InstanceSpecification> getNodes(NamedElement instanceOrThread) {
+ EList<InstanceSpecification> nodeList = new UniqueEList<InstanceSpecification>();
+ EList<InstanceSpecification> nodeOrThreads = getNodesOrThreads(instanceOrThread);
+ for(InstanceSpecification nodeOrThread : nodeOrThreads)
+ {
+ Classifier nodeOrThreadC = DepUtils.getClassifier(nodeOrThread);
+ if(StUtils.isApplied(nodeOrThreadC, SwSchedulableResource.class)) {
+ // tread case that instance is allocated to a thread
+ // follow allocation of Thread
+ nodeList.add(getNode(nodeOrThread));
+ }
+ else {
+ nodeList.add(nodeOrThread);
+ }
+ }
+ return nodeList;
+ }
+
+ /**
+ * This method updates (and optionally removes) the allocations of an instance
+ *
+ * @param instance
+ * The instance that should be deployed
+ * @param oldNode
+ * the old node allocation
+ * @param newNode
+ * the new node allocation, may be null to indicate removal
+ * @return
+ */
+ public static EList<Node> updateAllocation(InstanceSpecification instance, InstanceSpecification oldNode, InstanceSpecification newNode) {
+ EList<Node> nodeList = new UniqueEList<Node>();
+
+ Iterator<DirectedRelationship> relShipIt =
+ instance.getSourceDirectedRelationships(UMLPackage.eINSTANCE.getAbstraction()).iterator();
+
+ while(relShipIt.hasNext()) {
+ Abstraction abstraction = (Abstraction)relShipIt.next();
+ if(StUtils.isApplied(abstraction, Allocate.class)) {
+ EList<NamedElement> suppliers = abstraction.getSuppliers(); // use suppliers instead of targets (derived)
+ for(int index = 0; index < suppliers.size(); index++) {
+ if(suppliers.get(index) == oldNode) {
+ if(newNode == null) {
+ // remove relationship completely, since we assume a single target
+ // (cannot call remove on relShipIt, since list is derived)
+ abstraction.destroy();
+ } else {
+ suppliers.set(index, newNode);
+ }
+ break;
+ }
+ }
+ }
+ }
+ return nodeList;
+ }
+
+ /**
+ * Retrieve a list of nodes to which the instance is allocated to *or*
+ * to which one of the contained instances is allocated to (recursively)
+ *
+ * @param instance
+ * @param A
+ * port of the composite. Contained instances are examined only if
+ * they have a connection with this port.
+ * @return a list of nodes
+ */
+ public static EList<InstanceSpecification> getAllNodesForPort(InstanceSpecification instance, Port port) {
+ EList<InstanceSpecification> nodeList = getNodes(instance);
+ Classifier composite = DepUtils.getClassifier(instance);
+ if(composite instanceof Class) {
+ Class compositeCL = (Class)composite;
+ for(Slot slot : instance.getSlots()) {
+ Property containedProperty = (Property)slot.getDefiningFeature();
+
+ for(Connector connection : compositeCL.getOwnedConnectors()) {
+ // is one connector end targeted at the containedProperty ?
+ ConnectorEnd end = ConnectorUtils.connEndForPart(connection, containedProperty);
+ if(end == null)
+ continue;
+
+ // does the connector at the same connect the composite's port?
+ if(ConnectorUtils.connectsPort(connection, port)) {
+ Port containedPort = (Port)end.getRole();
+ nodeList.addAll(getAllNodesForPort(DepUtils.getInstance(slot), containedPort));
+ }
+ }
+ }
+ }
+ return nodeList;
+ }
+
+ public static boolean allocate(InstanceSpecification instance, InstanceSpecification node) {
+ Package cdp = (Package)instance.getOwner();
+ Abstraction allocation = (Abstraction)
+ cdp.createPackagedElement("allocate " + instance.getName() +
+ " to " + node.getName(), UMLPackage.eINSTANCE.getAbstraction());
+ if(StUtils.apply(allocation, Allocate.class) == null) {
+ // stereotype application failed
+ return false;
+ }
+ allocation.getClients().add(instance);
+ allocation.getSuppliers().add(node);
+ return true;
+ }
+
+ /**
+ * Assign node name to leafs
+ *
+ * @param instance
+ * @param A
+ * port of the composite. Contained instances are examined only if the
+ * have a connection with this port. If null, no sub-instances are examined
+ * @param nodes
+ * A list of nodes to which leafs are allocated
+ */
+ public static void propagateNodesViaPort(InstanceSpecification instance, Port port, EList<InstanceSpecification> nodes) {
+ if(instance == null) {
+ return;
+ }
+ EList<Slot> slots = instance.getSlots();
+ Class composite = DepUtils.getImplementation(instance);
+
+ // Only set allocation on leafs (TODO: assure that components with configuration attributes are not considered as leafs)
+ // if(composite.getParts().size() == 0) {
+ for(InstanceSpecification node : nodes) {
+ AllocUtils.allocate(instance, node);
+ }
+
+ if((composite != null) && (port != null)) {
+ Class compositeCL = (Class)composite;
+ for(Slot slot : slots) {
+ Property containedProperty = (Property)slot.getDefiningFeature();
+
+ FCM.Part fcmPart = StUtils.getApplication(containedProperty, FCM.Part.class);
+ if(fcmPart != null) {
+ EList<Port> colocateWithPort = fcmPart.getColocateWithPort();
+ // is the port within the list?
+ if(Utils.getNamedElementFromList(colocateWithPort, port.getName()) != null) {
+ // compare qualified name, since containedPort (stereotype attribute)
+ // points to a source model element
+ propagateNodesViaPort(DepUtils.getInstance(slot), port, nodes);
+ continue;
+ }
+ }
+ for(Connector connection : compositeCL.getOwnedConnectors()) {
+ if(ConnectorUtils.connectsPort(connection, port)) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_CONNECTOR, "connector: " + connection.getName());
+ Log.log(Log.INFO_MSG, Log.TRAFO_CONNECTOR, "end1: " + connection.getEnds().get(0).getPartWithPort());
+ Log.log(Log.INFO_MSG, Log.TRAFO_CONNECTOR, "end2: " + connection.getEnds().get(1).getPartWithPort());
+ ConnectorEnd end = ConnectorUtils.connEndForPart(connection, containedProperty);
+ // other connector end targeted at containedProperty?
+ if(end != null) {
+ Port containedPort = (Port)end.getRole();
+ propagateNodesViaPort(DepUtils.getInstance(slot), containedPort, nodes);
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java
new file mode 100644
index 00000000000..437251f5ae5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java
@@ -0,0 +1,521 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Stack;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.SRM.SW_Concurrency.SwSchedulableResource;
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool;
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompImplTrafos;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import Cpp.CppInclude;
+import FCM.InitPrecedence;
+
+/**
+ * The task of the boot-loader is twofold: create the instances of all
+ * implementations (non-recursive).
+ * - create Connections: what should be done?
+ * TODO: factor out common code (TemplateInstantiation mechanism & createConnections below)
+ * make non-static class (representing the bootLoader)
+ */
+public class BootLoaderGen {
+
+ /**
+ * Create a new boot-loader in a specific package
+ * (which represents a node of the system).
+ *
+ * @param The
+ * package in which the bootloader should be created
+ */
+ public BootLoaderGen(Copy copy, int nodeIndex, int numberOfNodes)
+ throws TransformationException {
+ // Class composite = (Class) ut.getClassifier (mainInstance);
+ // place in root (getModel()) to avoid the problem that the declaration of the bootLoader
+ // instance is within a namespace (a static attribute on the model level would not solve the
+ // problem as it must be accessed by function main).
+ m_bootLoader = copy.target.createOwnedClass("BootLoader", false);
+ outputSizeof = false;
+ m_copy = copy;
+ Class template = (Class)Utils.getQualifiedElement(copy.source, bootloaderQNAME);
+ if(template == null) {
+ throw new TransformationException("Cannot retrieve bootLoader template (should be in " + bootloaderQNAME + ")");
+ }
+ // TODO: currently, only stereotypes are copied from template
+ StUtils.copyStereotypes(template, m_bootLoader);
+
+
+ // TODO: commented code below already fixed?
+ /*
+ * Problem: defaultValue not taken into account by code generator
+ * => use global variables via cppInclude instead (see below: "bodyStr = ...")
+ * NamedElement corba_long = Utils.getQualifiedElement (owner, "CORBA::Long");
+ * if (corba_long instanceof Type) {
+ * Property nodeNumber =
+ * m_bootLoader.createOwnedAttribute ("nodeNumber", (Type) corba_long);
+ * nodeNumber.setIsStatic (true);
+ * nodeNumber.setDefault ("0"); // for testing
+ * Property numberOfNodes =
+ * m_bootLoader.createOwnedAttribute ("numberOfNodes", (Type) corba_long);
+ * numberOfNodes.setIsStatic (true);
+ * numberOfNodes.setDefault ("2");
+ * }
+ */
+ CppInclude cppInclude = StUtils.applyApp(m_bootLoader, CppInclude.class);
+ Object existingBody = cppInclude.getBody();
+ String existingBodyStr = "";
+ if(existingBody instanceof String) {
+ existingBodyStr = (String)existingBody + "\n";
+ }
+ String bodyStr =
+ "#include <unistd.h> // for sleep\n" +
+ "\n" +
+ "int nodeIndex = " + nodeIndex + ";\n" +
+ "int numberOfNodes = " + numberOfNodes + ";\n";
+ if(outputSizeof) {
+ bodyStr +=
+ "#include <iostream>\n" +
+ "using namespace std;\n";
+ }
+
+ cppInclude.setBody(existingBodyStr + bodyStr);
+
+ // bootLoader.createOwnedAttribute (mainInstance.getName (), composite);
+
+ // factor with template instantiations, actual is composite??
+ /*
+ * Operation operation = template.getOwnedOperation ("createInstances", null, null);
+ * Operation newOperation =
+ * ModelTransformations.copyOperation (operation, bootLoader);
+ * // operation.getMethod ();
+ * // Method method = x;
+ * // AcceleoDriver.bind (method.toString (), mainInstance);
+ * Behavior behavior = operation.getMethods ().get (0);
+ * if (behavior instanceof OpaqueBehavior) {
+ * OpaqueBehavior newBehavior = (OpaqueBehavior)
+ * bootLoader.createOwnedBehavior ("b:" + operation.getName (),
+ * UMLPackage.eINSTANCE.getOpaqueBehavior ());
+ * newOperation.getMethods ().add (newBehavior);
+ * OpaqueBehavior opaqueBehavior = (OpaqueBehavior) behavior;
+ * Iterator<String> bodies = opaqueBehavior.getBodies ().iterator ();
+ * Iterator<String> languages = opaqueBehavior.getLanguages ().iterator ();
+ * while (bodies.hasNext ())
+ * {
+ * String body = bodies.next ();
+ * String language = languages.next ();
+ * String newBody = AcceleoDriver.bind (body, mainInstance);
+ * newBehavior.getBodies ().add (newBody);
+ * newBehavior.getLanguages().add (language);
+ * }
+ * }
+ */
+ m_initCode = "";
+ m_initCodeRun = "";
+ m_activation = new HashMap<Class, EList<String>>();
+ m_initCodeCConnections = "";
+ m_initCodeCConfig = "";
+
+ if(outputSizeof) {
+ m_initCode += "cout << \"sizeof bootloader: \" << sizeof (bootloader) << endl;\n";
+ // m_initCode += "cout << \"sizeof bootloader: \" << sizeof (bootloader) << endl;\n";
+ }
+ }
+
+ /**
+ * Return the path from the main instance towards a sub-instance using the proper dereference
+ * operators, i.e. ".", if the sub-instance is enclosed via composition or "->" if the sub-instance
+ * is a pointer (since created by the bootloader).
+ *
+ * @param slotPath
+ * @param instance
+ * @param accessName
+ * return the name to access the feature. Returns access path to instance, not
+ * the name of the variable for this instance (if instantiated by bootloader)
+ * @return
+ */
+ public String getPath(Stack<Slot> slotPath, InstanceSpecification instance, boolean accessName) {
+ if(slotPath.size() > 0) {
+ // start with first instance
+ String path = slotPath.get(0).getOwningInstance().getName();
+ boolean previousInstantiatedByBL = false;
+ for(Slot pathElement : slotPath) {
+ if(pathElement != null) {
+ if(previousInstantiatedByBL && accessName) {
+ // If an instance is instantiated by the bootloader, it is only referenced via its type in the
+ // owning composite. Thus, configuration (and activation calls) might fail as the type might not
+ // have these configuration properties or operations.
+ // Therefore, configuration and initial calls use
+ // - the path, if instantiated by the composite
+ // - the variable name, if done by the bootloader
+ path = UMLTool.varName(path); // use variable name instead.
+ }
+ path += "." + pathElement.getDefiningFeature().getName();
+ previousInstantiatedByBL = CompImplTrafos.instantiateViaBootloader(pathElement.getDefiningFeature());
+ }
+ }
+ if(previousInstantiatedByBL && !accessName) {
+ // name of the variable for this expression instantiated by the bootloader
+ path = UMLTool.varName(path);
+ }
+ return path;
+ }
+ else {
+ return instance.getName(); // instance has no path via slots, it is a top level instance
+ }
+ }
+
+ public Property addInstance(Stack<Slot> slotPath, InstanceSpecification instance, Class implementation, InstanceSpecification node)
+ throws TransformationException
+ {
+ String accessName = getPath(slotPath, instance, true);
+ String varName = getPath(slotPath, instance, false);
+
+ Property implemPart = null;
+
+ // containing instance not null (=> neither main instance nor singleton)
+ Slot containerSlot = null;
+ if(slotPath.size() > 0) {
+ containerSlot = slotPath.peek();
+
+ // initialize part/property in containing instance. The containing instance itself is accessed
+ // via the naming of the associated instance, the part itself via the name of the defining feature.
+ if(DepUtils.isShared(containerSlot)) {
+ // we need to initialize the property (a reference) with the given instance
+ Stack<Slot> referencePath = DepUtils.getAccessPath(instance);
+ String referenceVarName = getPath(referencePath, instance, false);
+
+ // add code for initialization
+ m_initCode += accessName + " = &" + referenceVarName + ";\n";
+ // is a reference which should not be called via activation & start
+ // return now and skip code below
+ return implemPart;
+ }
+ else if(CompImplTrafos.instantiateViaBootloader(containerSlot.getDefiningFeature())) {
+ // let bootloader instantiate
+ implemPart = m_bootLoader.createOwnedAttribute(/* "i_" + */varName, implementation);
+ // add code for initialization
+ m_initCode += accessName + " = &" + varName + ";\n";
+ implemPart.setIsComposite(true);
+ }
+ }
+ else {
+ // top level, either main instance or singleton => bootloader instantiates, create attribute
+ implemPart = m_bootLoader.createOwnedAttribute(/* "i_" + */varName, implementation);
+ implemPart.setIsComposite(true);
+ }
+ if(outputSizeof) {
+ m_initCode += "cout << \"sizeof " + implementation.getName() + ": \" << sizeof (" + varName + ") << endl;\n";
+ }
+
+ // if start thread => existing thread activation interceptor? Connection?
+ if(StUtils.isApplied(implementation, SwSchedulableResource.class)) {
+ // yes, but is the thread instance part of the deployment plan?? [mmh, probably yes...]
+ // call threads start routine here? (via main thread?) which in turn will activate the start routine?
+ }
+
+ // implementation contains get_start operation => has start port
+ // which is called automatically
+ String get_start = PrefixConstants.getP_Prefix + "start";
+
+ // Need to check whether implementation is an executor which is encapsulated in a container. In this case, only
+ // the method of the container and not the method of the executor (which owns the same port) maybe called.
+ // Currently, this check is based on the use of "executor" as reserved part name (validation checks that the
+ // user does not use this name for application components)
+ if(hasUnconnectedStartRoutine(m_copy, implementation, containerSlot)) {
+ if(m_initCodeRun.equals("")) {
+ // call start's run method
+ // TODO: Need path that uses the right dereference operator ("->" or ".")
+ m_initCodeRun = varName + "." + get_start + "()->run ();\n";
+ } else {
+ throw new TransformationException("There must be at most one blocking \"run\" operation per node. " +
+ "refuse to add \"run\" call for component instance \"" + varName + "\". Existing invocations: " + m_initCodeRun);
+ }
+ }
+ if(hasUnconnectedLifeCycle(m_copy, implementation, containerSlot)) {
+ // precedence is checked below (when code is actually produced)
+ // multiple varNames might share the same implementation. Put a list of variable names into the table
+ EList<String> varNameList = m_activation.get(implementation);
+ if(varNameList == null) {
+ varNameList = new BasicEList<String>();
+ }
+ varNameList.add(varName + ".");
+ m_activation.put(implementation, varNameList);
+ }
+
+ // check, if implementation contains a composite if (implementation.getOwnedOperation ("createConnections", null, null) != null) {
+ boolean bCreateConn = false;
+ for(Connector connector : implementation.getOwnedConnectors()) {
+ if(ConnectorUtils.isAssembly(connector)) {
+ bCreateConn = true;
+ break;
+ }
+ }
+
+ if(bCreateConn) {
+ m_initCodeCConnections += varName + ".createConnections ();\n";
+ }
+ return implemPart;
+ }
+
+ /**
+ * Check whether the passed implementation has an unconnected start port.
+ * This information is required, since only unconnected start ports are automatically called by the
+ * bootloader, in particular we want to avoid calling a start port of an executor (which is connected)
+ * and its container.
+ *
+ * @param implementation
+ * @param containerSlot
+ * @return
+ */
+ public static boolean hasUnconnectedStartRoutine(Copy copy, Class implementation, Slot containerSlot) {
+ if(implementation != null) {
+ Element startPortElem = Utils.getNamedElementFromList(implementation.getAllAttributes(), "start");
+ if(startPortElem instanceof Port) {
+ Port startPort = (Port)startPortElem;
+ if(startPort.getType().getName().equals("IStart")) {
+ return !isConnected(copy, containerSlot, startPort);
+ }
+
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Check, if the passed implementation has an unconnected life-cycle interface (activate/deactivate).
+ * This information is required, since only unconnected life cycle ports are automatically called by the
+ * bootloader, in particular we want to avoid calling a life cycle port of an executor (which is connected)
+ * and its container.
+ *
+ * @param implementation
+ * @param name
+ * @return
+ */
+ public static boolean hasUnconnectedLifeCycle(Copy copy, Class implementation, Slot containerSlot) {
+ if(implementation != null) {
+ Element lcPortElem = Utils.getNamedElementFromList(implementation.getAllAttributes(), "lc");
+ if(lcPortElem instanceof Port) {
+ Port lcPort = (Port)lcPortElem;
+ // check, if port typed with ILifeCycle interface
+ if(lcPort.getType().getName().equals("ILifeCycle")) {
+ return !isConnected(copy, containerSlot, lcPort);
+ }
+ }
+
+ }
+ return false;
+ }
+
+ /**
+ * The check verifies whether the passed port is connected within
+ * the context of the composite represented by the passed slot
+ *
+ * @param containerSlot
+ * a slot within an instance that represents a composite class
+ * @Param a port that is checked for being connected
+ * @return true, if connected
+ */
+ private static boolean isConnected(Copy copy, Slot containerSlot, Port port) {
+ if(containerSlot != null) {
+ StructuralFeature sf = containerSlot.getDefiningFeature();
+ if(sf instanceof Property) {
+ // instance still points to a part in the tmp-model (there are no
+ // instance specifications in the final model). Therefore, we use copy to
+ // obtain the mapped instance.
+ Property part = (Property)copy.get(sf);
+ Class composite = part.getClass_();
+ for(Connector connector : composite.getOwnedConnectors()) {
+ // must assure same connector end connects part & port
+ ConnectorEnd end = ConnectorUtils.connEndForPart(connector, part);
+ if((end != null) && (end.getRole() == port)) {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public void instanceConfig(Stack<Slot> slotPath, InstanceSpecification instance) throws TransformationException {
+ Slot slot = slotPath.peek();
+ String varName = getPath(slotPath, instance, false);
+ StructuralFeature sf = slot.getDefiningFeature();
+ if(sf == null) {
+ throw new TransformationException("A slot for instance " + varName +
+ " has no defining feature");
+ }
+
+ for(ValueSpecification value : slot.getValues()) {
+
+ // only set value, if not null
+ if(value.stringValue() != null) {
+ m_initCodeCConfig += varName + " = " + value.stringValue() + ";\n";
+ }
+ }
+ }
+
+ public void addCreateConnections() {
+ // code generators do not handle connectors in a suitable way. Remove
+ // (alternative: no-code-gen tag, as available for C++)
+ m_bootLoader.getOwnedConnectors().clear();
+ }
+
+ public void addInit() {
+ // TODO: use template
+ Operation init = m_bootLoader.createOwnedOperation("init", null, null);
+ OpaqueBehavior initBehavior = (OpaqueBehavior)
+ m_bootLoader.createOwnedBehavior("init", UMLPackage.eINSTANCE.getOpaqueBehavior());
+ init.getMethods().add(initBehavior);
+
+
+ initBehavior.getLanguages().add("C/C++");
+ String code = m_initCode + "\n";
+ if(m_initCodeCConfig.length() > 0) {
+ code += "\n// instance configuration\n" +
+ m_initCodeCConfig + "\n";
+ }
+ if(m_initCodeCConnections.length() > 0) {
+ code += "\n// create connections between instances\n" +
+ m_initCodeCConnections + "\n";
+ }
+ Comparator<Class> comparator = new Comparator<Class>() {
+
+ public int compare(Class clazz1, Class clazz2) {
+
+ InitPrecedence precedenceC1 = StUtils.getApplication(clazz1, InitPrecedence.class);
+ InitPrecedence precedenceC2 = StUtils.getApplication(clazz2, InitPrecedence.class);
+ if(precedenceC1 != null) {
+ // need to use named comparison instead of precedenceC1.getInvokeAfter ().contains (clazz2)
+ // since class referenced by stereotype attribute still points to element in source model
+ if(Utils.getNamedElementFromList(precedenceC1.getInvokeAfter(), clazz2.getName()) != null) {
+ return 1;
+ }
+ else if(Utils.getNamedElementFromList(precedenceC1.getInvokeBefore(), clazz2.getName()) != null) {
+ return -1;
+ }
+ }
+ else if(precedenceC2 != null) {
+ if(Utils.getNamedElementFromList(precedenceC2.getInvokeAfter(), clazz1.getName()) != null) {
+ return -1;
+ }
+ else if(Utils.getNamedElementFromList(precedenceC2.getInvokeBefore(), clazz1.getName()) != null) {
+ return 1;
+ }
+ }
+ // singletons have precedence over "normal" classes
+ boolean ci1IsSingleton = Utils.isSingleton(clazz1);
+ boolean ci2IsSingleton = Utils.isSingleton(clazz2);
+ if(ci1IsSingleton) {
+ if(!ci2IsSingleton) {
+ // not both are singletons
+ return -1;
+ }
+ }
+ else if(ci2IsSingleton) {
+ return 1;
+ }
+ return 0;
+ }
+ };
+ Class[] activationKeys = m_activation.keySet().toArray(new Class[0]);
+ String get_lc = PrefixConstants.getP_Prefix + "lc";
+ if(activationKeys.length > 0) {
+ Arrays.sort(activationKeys, comparator);
+ code += "// activation code\n";
+ for(Class implementation : activationKeys) {
+ EList<String> varNameList = m_activation.get(implementation);
+ for(String varName : varNameList) {
+ code += varName + get_lc + " ()->activate ();\n";
+ }
+ }
+ }
+ if(!m_initCodeRun.equals("")) {
+ code += "// initial user start\n" +
+ m_initCodeRun;
+ } else {
+ // no run code - assume that application should not return immediately
+ // enter an endless sleep
+ // TODO: issue user warning
+ code += "// sleep forever (since there is no user \"start\" call)\n" +
+ "for (;;) { sleep (1000); }\n";
+ }
+ if(activationKeys.length > 0) {
+ code += "// deactivation code (reverse order)\n";
+
+ // traverse in reverse order
+ for(int i = activationKeys.length - 1; i >= 0; i--) {
+ Class implementation = activationKeys[i];
+ EList<String> varNameList = m_activation.get(implementation);
+ for(String varName : varNameList) {
+ code += varName + get_lc + " ()->deactivate ();\n";
+ }
+ }
+ }
+
+ initBehavior.getBodies().add(code);
+ }
+
+ public Class getUML() {
+ return m_bootLoader;
+ }
+
+ private Class m_bootLoader;
+
+ private final static String bootloaderQNAME = "core::composites::BootLoader";
+
+ /**
+ * Initialization code, in particular assignment of part properties within composites
+ */
+ private String m_initCode;
+
+ /**
+ * Init code for create connections calls in composites with at least one assembly
+ * connector
+ */
+ private String m_initCodeCConfig;
+
+ /**
+ * Init code for create connections calls in composites with at least one assembly
+ * connector
+ */
+ private String m_initCodeCConnections;
+
+ /**
+ * Init code for blocking "run" calls (related to CStart system component)
+ */
+ private String m_initCodeRun;
+
+ /**
+ * Map containing activations/de-activations
+ */
+ private Map<Class, EList<String>> m_activation;
+
+ private boolean outputSizeof;
+
+ /**
+ * copy variable (instances still point to non-copied classes)
+ */
+ private Copy m_copy;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Composite.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Composite.java
new file mode 100644
index 00000000000..36828b79fe8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Composite.java
@@ -0,0 +1,89 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.StructuralFeature;
+
+import Cpp.CppPtr;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+/**
+ * Composite deployment, i.e. the composite is responsible for instantiating the contained properties
+ *
+ * @author ansgar
+ * Currently not used
+ *
+ */
+@Deprecated
+public class Composite {
+
+ public EList<InstanceSpecification> getInstancesForImplementation(Package depPlan, Classifier implementation) {
+ Iterator<NamedElement> members = depPlan.getMembers().iterator();
+ EList<InstanceSpecification> list = new BasicEList<InstanceSpecification>();
+ while(members.hasNext()) {
+ NamedElement member = members.next();
+ if(member instanceof InstanceSpecification) {
+ InstanceSpecification is = (InstanceSpecification)member;
+ if(is.getClassifiers().contains(implementation)) {
+ list.add(is);
+ }
+ }
+ }
+ return list;
+ }
+
+ public void deploy(Package depPlan) {
+ Iterator<NamedElement> members = depPlan.getMembers().iterator();
+ while(members.hasNext()) {
+ NamedElement member = members.next();
+ if(member instanceof InstanceSpecification) {
+ InstanceSpecification is = (InstanceSpecification)member;
+ if(Utils.isComposite(is)) {
+ deployComposite(depPlan, is);
+ }
+ }
+ }
+ }
+
+ private void deployComposite(Package depPlan, InstanceSpecification composite) {
+ Class implementation = DepUtils.getImplementation(composite);
+ // assure that part is a pointer
+ for(Property part : Utils.getParts(implementation)) {
+ StUtils.apply(part, CppPtr.class);
+ }
+ // create function
+ String body = "";
+ for(Slot slot : composite.getSlots()) {
+ StructuralFeature f = slot.getDefiningFeature();
+ // TODO: avoid new, replace by adding additional properties (non pointer)
+ String line = f.getName() + " = new " + implementation.getName() + "()\n";
+ body = body + line;
+ }
+ /*
+ * EList<InstanceSpecification> otherInstances =
+ * getInstancesForImplementation (depPlan, implementation);
+ * // EList<InstanceSpecification> containedInstances = UMLTool.getContainedInstances (is);
+ * }
+ */
+ // create delegation connectors
+
+ for(Connector connector : implementation.getOwnedConnectors()) {
+ if(!ConnectorUtils.isAssembly(connector)) {
+ // is a delegation connector, add specific methods
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/CopyCompositeOpt.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/CopyCompositeOpt.java
new file mode 100644
index 00000000000..372dd96f603
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/CopyCompositeOpt.java
@@ -0,0 +1,197 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Node;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.Type;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.CreationUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+
+/**
+ * Copy a composite class while taking into account node allocation, i.e. only copy parts
+ * that are deployed on a certain node (properties that are not typed by a component are always
+ * copied). This function may be called several times and will successively add parts that are
+ * required.
+ * If the same composite (class level) is used in two different contexts, e.g. a socket connector
+ * serving as client and server on the same node (for the same interface), the resulting composite
+ * will be complete. On the instance level however, such as composite is sub-optimal, since their
+ * are two different instances that use a different subset. These cases are not very critical, since
+ * unused parts are not instantiated (overhead = pointer)
+ *
+ * The function will change existing composites: they use directly implementations referenced in the
+ * deployment plan.
+ *
+ *
+ * **** ATTENTION **** This class is currently not used and will very probably not work
+ *
+ * @author ansgar
+ *
+ */
+public class CopyCompositeOpt {
+
+ public static Classifier copyComposite(Copy copy, InstanceSpecification is, Node node) throws TransformationException {
+ Classifier classifier = DepUtils.getClassifier(is);
+ if(!(classifier instanceof Class)) {
+ return copy.getCopy(classifier);
+ }
+ Class smCl = (Class)classifier;
+
+ NamedElement existing = Utils.getExistingNEinTarget(copy, smCl);
+ if(existing instanceof Classifier) {
+ // classifier exists already in target model (or is imported), nothing todo
+ return (Classifier)existing;
+ }
+
+ // do not skip top, since copying imports: in this case, all elements appear in the package that
+ // corresponds to their original model name
+ Package newOwner = CreationUtils.getAndCreate(copy.target, smCl.allNamespaces(), false);
+
+ String name = smCl.getName();
+ Class newCl = null;
+ NamedElement ne = newOwner.getMember(name);
+ if(ne == null) {
+ Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "copyCompositeOpt " + smCl.getQualifiedName() + " for node " + node.getName());
+ newCl = newOwner.createOwnedClass(name, false);
+ CopyCompositeOpt.copyRelationships(copy, smCl, newCl);
+ // called before completion of access operations (getName), ...
+ // => can copy all operations here (?)
+ copy.copyOperations(smCl);
+ copy.copyMethods(smCl);
+ StUtils.copyStereotypes(smCl, newCl);
+ // copy attributes typed with non-component types (that may not be referenced by slots)
+ for(Property attribute : smCl.getOwnedAttributes()) {
+ Type type = attribute.getType();
+ if(attribute instanceof Port) {
+ // do nothing (ports are copied below, since not only
+ // owned, but also inherited ports are taken into account
+ // (since inheritance relationship with connector types are suppressed).
+ } else if(type instanceof Class) {
+ if(!Utils.isComponent((Class)type)) {
+ copy.getCopy(attribute);
+ }
+ } else {
+ copy.getCopy(attribute);
+ }
+ }
+ for(Port port : PortUtils.getAllPorts(smCl)) {
+ ConnectorEnd ce = ConnectorUtils.getDelegation(smCl, port);
+ if(ce == null) {
+ copy.getCopy(port);
+ }
+ }
+ } else if(ne instanceof Class) {
+ Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "copyComposite (extend) " + smCl.getQualifiedName() + " for node " + node.getName());
+ newCl = (Class)ne;
+ } else {
+ // exists, but is not a classifier
+ // => don't know how to handle
+ throw new TransformationException("error (copyClassifier): element <" + name + "> already exists in target package (<" + newOwner.getName() + ">), but is not a class");
+ }
+
+ for(Slot slot : is.getSlots()) {
+ Property part = (Property)slot.getDefiningFeature();
+ InstanceSpecification containedIS = DepUtils.getInstance(slot);
+ Classifier containedCl = DepUtils.getClassifier(containedIS);
+ String partName = part.getName();
+ if(newCl.getOwnedAttribute(partName, null) == null) {
+ // attribute does not exist yet
+ if((containedCl instanceof Class) && (Utils.isComponent((Class)containedCl))) {
+ // check whether allocation on this node...
+ // would not re-open
+ if(AllocUtils.getAllNodes(containedIS).contains(node)) {
+ Classifier copiedCl = CopyCompositeOpt.copyComposite(copy, containedIS, node);
+ newCl.createOwnedAttribute(partName, copiedCl);
+
+ // add ports that are connected by means of a delegation relationship with the
+ // port which has been copied to the new composite. These ports have not been
+ // copied earlier.
+ for(Port port : PortUtils.getAllPorts(smCl)) {
+ ConnectorEnd ce = ConnectorUtils.getDelegation(smCl, port);
+ if(ce != null) {
+ if(ce.getPartWithPort() == part) {
+ copy.getCopy(port);
+ }
+ }
+ }
+
+ // add connectors when possible, i.e. connectors that target the newly added part
+ for(Connector connector : smCl.getOwnedConnectors()) {
+ // check whether the newly added property enables the addition of connectors
+ // that connect this port.
+ if(ConnectorUtils.connectsPart(connector, part)) {
+ ConnectorEnd otherEnd = ConnectorUtils.connEndNotPart(connector, part);
+ // check whether the part references by the other end (i.e. that not connected with the part)
+ // TODO: connections without port
+ if((otherEnd.getPartWithPort() == null) || newCl.getAllAttributes().contains(otherEnd.getPartWithPort())) {
+ copy.getCopy(connector);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ }
+ return newCl;
+ }
+
+ /**
+ * Copy relationships. Similar to Copy.copyRelationships, but filters inheritance relationships
+ * i.e. copies inherited classes (and adds the relationships), but does not copy inherited
+ * component types.
+ * [Caveat: need component types in case of parts that are typed with a component type?]
+ *
+ * @param root
+ * @param cl
+ * @param newCl
+ */
+ public static void copyRelationships(Copy copy, Classifier cl, Classifier newCl)
+ throws TransformationException {
+ // copy relationships (and target classes, if not yet part of copied model)
+ // Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "relationships of " + cl.getName ());
+ for(DirectedRelationship relationship : cl.getSourceDirectedRelationships()) {
+ Element target = relationship.getTargets().get(0);
+ if(target instanceof Classifier) {
+ Log.log(Log.INFO_MSG, Log.DEPLOYMENT, " rel. target " + ((Classifier)target).getName());
+
+ if(relationship instanceof Generalization) {
+ if(!((target instanceof Class) && Utils.isCompType((Class)target))) {
+ // copy, unless target is a component type
+ Classifier newTarget = copy.getCopy((Classifier)target);
+ newCl.createGeneralization(newTarget);
+ }
+ } else if(relationship instanceof Dependency) {
+ Classifier newTarget = copy.getCopy((Classifier)target);
+ String depName = ((Dependency)relationship).getName();
+ // use generic method to support heirs of Dependency, such as Usage, Abstraction,
+ // (Interface)Realization, ...
+ Dependency dependency = (Dependency)newCl.getNearestPackage().createPackagedElement(depName, relationship.eClass());
+ dependency.getClients().add(newCl);
+ dependency.getSuppliers().add(newTarget);
+ } else {
+ throw new TransformationException("CoyCompositeOpt.copyRelationships: unsupported relationship: " + relationship);
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepCreation.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepCreation.java
new file mode 100644
index 00000000000..3866a7edae4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepCreation.java
@@ -0,0 +1,611 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Stack;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.InstanceValue;
+import org.eclipse.uml2.uml.LiteralInteger;
+import org.eclipse.uml2.uml.Node;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import FCM.AutoIndex;
+import FCM.AutoIndexPerNode;
+import FCM.ConfigurationProperty;
+import FCM.ContainerRule;
+import FCM.CopyAttributeValue;
+import FCM.InteractionComponent;
+import FCM.RuleApplication;
+
+import org.eclipse.papyrus.qompass.designer.core.ConfigUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Stereotypes;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+public class DepCreation {
+
+ private static Map<Object, Integer> map;
+
+ /**
+ * Create a slot and add an instance value associated with a part instance
+ * specification.
+ *
+ * @param is
+ * the instance specification for which a slot should be created
+ * @param partIS
+ * the instance specification associated with the slot (to be
+ * precise with slot's instance value)
+ * @param part
+ * the part associated with the slot, i.e. its defining feature
+ * @return The created slot
+ */
+ public static Slot createSlot(InstanceSpecification is,
+ InstanceSpecification partIS, Property part) {
+ // the instance specification of the composite has a slot for each part
+ // and it points
+ // to the instance specification associated with the part.
+ Slot slot = is.createSlot();
+ slot.setDefiningFeature(part);
+
+ InstanceValue iv = (InstanceValue)slot.createValue(null, null,
+ UMLPackage.eINSTANCE.getInstanceValue());
+ iv.setInstance(partIS);
+ return slot;
+
+ }
+
+ /**
+ * Create a Slot and a value for a configuration attribute
+ *
+ * @param attribute
+ */
+ public static Slot createSlotForConfigProp(InstanceSpecification is,
+ Property attribute) {
+
+ Slot slot = is.createSlot();
+ slot.setDefiningFeature(attribute);
+ // For primitive types, the UML type does not provide sufficient
+ // information to decide
+ // whether it is a string or a numerical value. In case of the C++
+ // profile, primitive
+ // UML types denote a language specific type, but we want to avoid C++
+ // specific code, if
+ // possible.
+ // => pragmatic solution: use LiteralString as default, unless a check
+ // for some known numerical
+ // primitive types holds (in particular the UML as well as Qompass CORBA
+ // types)
+ // In addition, string values are not automatically quoted, i.e. it is
+ // possible to enter e.g.
+ // a float value as a string expression (it also means that a "real"
+ // string value must be quoted
+ // by the user).
+ Type type = attribute.getType();
+ if(type != null) {
+ String name = type.getName();
+ String qname = type.getQualifiedName();
+ if(name.equals("Integer") || qname.equals("CORBA::Octet")
+ || qname.equals("CORBA::Long")
+ || qname.equals("CORBA::UnsignedLong")
+ || qname.equals("CORBA::Short")
+ || qname.equals("CORBA::UnsignedShort")) {
+ slot.createValue("value for " + attribute.getName(), type,
+ UMLPackage.eINSTANCE.getLiteralInteger());
+ } else if(name.equals("Boolean")) {
+ slot.createValue("value for " + attribute.getName(), type,
+ UMLPackage.eINSTANCE.getLiteralBoolean());
+ } else {
+ slot.createValue("value for " + attribute.getName(), type,
+ UMLPackage.eINSTANCE.getLiteralString());
+ }
+ }
+ return slot;
+ }
+
+ /**
+ * Create a string slot and a value for a configuration attribute
+ *
+ * @param attribute
+ */
+ public static Slot createStringSlotForConfigProp(InstanceSpecification is,
+ Property attribute) {
+
+ Slot slot = is.createSlot();
+ slot.setDefiningFeature(attribute);
+ Type type = attribute.getType();
+ if(type != null) {
+ slot.createValue("value for " + attribute.getName(), type,
+ UMLPackage.eINSTANCE.getLiteralString());
+ }
+ return slot;
+ }
+
+ /**
+ * create a deployment plan, i.e. a set of instances that correspond to an
+ * implementation which is potentially a composite. In case of the latter,
+ * this function is called recursively to create deployment plans for the
+ * parts. Since a composite implementation may optionally specify only the
+ * type of parts (not the concrete implementation), this function also
+ * supports that a type is passed. In this case, an implementation is
+ * automatically assigned.
+ *
+ * @param cdp
+ * the deployment plan (package) in which to create instances
+ * @param typeOrImplem
+ * the type
+ * @param nane
+ * the name of the instance
+ * @param createSlotsForConfigValues
+ * if true, create slots for configuration values
+ */
+ public static InstanceSpecification createDepPlan(Package cdp,
+ Class typeOrImplem, String name, boolean createSlotsForConfigValues)
+ throws TransformationException
+ {
+ return createDepPlan(cdp, typeOrImplem, name, createSlotsForConfigValues, new Stack<Classifier>());
+ }
+
+ public static InstanceSpecification createDepPlan(Package cdp,
+ Class typeOrImplem, String name, boolean createSlotsForConfigValues, Stack<Classifier> visitedClassifiers)
+ throws TransformationException
+ {
+ // create an instance specification for the composite
+ if(visitedClassifiers.contains(typeOrImplem)) {
+ String path = "";
+ for(Classifier cl : visitedClassifiers) {
+ if(path.length() > 0) {
+ path += ", ";
+ }
+ path += cl.getName();
+ }
+ path += ", " + typeOrImplem.getName();
+ throw new TransformationException("Class \"" + typeOrImplem.getQualifiedName() +
+ "\" is referenced in a circle! Thus, an infinite number of instance specifications would be required.\n\n" +
+ "recursion path: " + path);
+ }
+ visitedClassifiers.push(typeOrImplem);
+
+ InstanceSpecification is = (InstanceSpecification)
+ cdp.createPackagedElement(name, UMLPackage.eINSTANCE.getInstanceSpecification());
+
+ // TODO: hack, could be named differently.
+ if(name.equals("mainInstance")) {
+ DepUtils.setMainInstance(cdp, is);
+ }
+
+ Class implementation = null;
+
+ // treat HW architecture or nodes as implementations
+ if(Utils.isCompImpl(typeOrImplem)
+ || typeOrImplem instanceof Node) {
+ // implementation is known => must be able to do this.
+ if(typeOrImplem instanceof Class) {
+ implementation = (Class)typeOrImplem;
+ }
+ } else {
+ // problem? further tree expansion might depend on chosen
+ // implementation)
+ // TODO: don't know node yet => implementation choice is more
+ // general than necessary
+ implementation = DepUtils.chooseImplementation(typeOrImplem, null, true);
+ }
+
+ if(!(implementation instanceof Class)) {
+ throw new TransformationException(
+ "cannot find suitable implementation for instance <" + name
+ + "> (given type <" + typeOrImplem.getName() + ">)");
+ }
+ // else implementation is instance of Class (and not null)
+
+ is.getClassifiers().add(implementation);
+ // add connector and container implementations
+ RuleApplication ruleApplication = StUtils.getApplication(implementation, RuleApplication.class);
+ if((ruleApplication != null) && (createSlotsForConfigValues)) {
+ for(ContainerRule rule : ruleApplication.getContainerRule()) {
+ addConfigurationOfContainer(rule, is);
+ }
+ }
+
+ for(Connector connector : implementation.getOwnedConnectors()) {
+ FCM.Connector fcmConn = StUtils.getApplication(connector, FCM.Connector.class);
+ if(fcmConn != null) {
+ String partName = name + "." + connector.getName();
+ InteractionComponent connectorComp = fcmConn.getIc();
+ if(connectorComp != null) {
+ Class cl = fcmConn.getIc().getBase_Class();
+ if(cl == null) {
+ throw new TransformationException("An FCM connector has no base class. Check for broken model library");
+ }
+ // create sub-instance for connector. It is not possible to
+ // create a slot in the owning instance specification,
+ // since the connector cannot be referenced as a defining-feature
+ createDepPlan(cdp, cl, partName, createSlotsForConfigValues, visitedClassifiers);
+ }
+ }
+ }
+
+ for(Property attribute : implementation.getAllAttributes()) {
+ // loop over all attributes (not only parts, since we need to
+ // capture singletons)
+ if(attribute instanceof Port) {
+ continue;
+ }
+ Type type = attribute.getType();
+
+ if(Utils.isComposition(attribute)) {
+ // composition, attribute is a part
+ if(((type instanceof Class) && Utils.isComponent((Class)type)) || type instanceof Node) {
+ Class cl = (Class)type;
+
+ // hack: ad-hoc replication support. Better solution via design patterns
+ int upper = attribute.getUpper();
+ String infix = "";
+ Object obj = StUtils.getAttribute(attribute,
+ Stereotypes.replicationInfo, "initialNumberOfReplicas");
+ if(obj instanceof Integer) {
+ if(upper != 1) {
+ System.err.println("cannot replicate an array");
+ }
+ upper = ((Integer)obj).intValue();
+ infix = "r";
+ }
+ // TODO: check validation constraints
+ for(int i = 0; i < upper; i++) {
+ String partName = name + "." + attribute.getName();
+ if(upper > 1) {
+ partName += "_" + infix + i;
+ }
+ InstanceSpecification partIS = createDepPlan(cdp, cl,
+ partName, createSlotsForConfigValues, visitedClassifiers);
+
+ createSlot(is, partIS, attribute);
+ }
+ } else if(StUtils.isApplied(attribute,
+ ConfigurationProperty.class)
+ && createSlotsForConfigValues) {
+ // is a configuration property, create slot
+ // TODO: implicit assumption that configuration attributes
+ // are not components
+ createSlotForConfigProp(is, attribute);
+ }
+ } else if(type instanceof Class) {
+ // no composition - only create slot, if a singleton
+ // (otherwise, it's not clear with which instance the slot
+ // should be associated)
+ Log.log(Log.INFO_MSG, Log.DEPLOYMENT,
+ "DepCreation.createDepPlan: " + type.getQualifiedName());
+ if(Utils.isSingleton((Class)type)) {
+ // is a singleton - exactly one instance exists
+ // use a common instance prefix for singletons
+ String partName = "singleton_" + attribute.getName();
+ PackageableElement pe = cdp.getPackagedElement(partName);
+
+ if(pe instanceof InstanceSpecification) {
+ // instance specification for singleton exists already
+ Slot slot = createSlot(is, (InstanceSpecification)pe,
+ attribute);
+ slot.setDefiningFeature(attribute);
+ } else if(type instanceof Class) {
+ // instance specification for singleton does not exist
+ // => create
+ // [case that a non-instance specification with the name
+ // <partName> exists already
+ // is not handled]
+ InstanceSpecification partIS = createDepPlan(cdp,
+ (Class)type, partName, createSlotsForConfigValues, visitedClassifiers);
+ Slot slot = createSlot(is, partIS, attribute);
+ slot.setDefiningFeature(attribute);
+ }
+ }
+ } else if(type == null) {
+ throw new TransformationException("type of attribute \""
+ + attribute.getName() + "\" within class \""
+ + implementation.getName() + "\" is not defined");
+ }
+ }
+ visitedClassifiers.pop();
+ return is;
+ }
+
+ /**
+ * Create slot for configuration properties that come from container rules
+ *
+ * @param aRule
+ * @param is
+ * @throws TransformationException
+ */
+ private static void addConfigurationOfContainer(ContainerRule rule,
+ InstanceSpecification is) throws TransformationException {
+ boolean first = true;
+ for(Property attribute : ConfigUtils.getConfigAttributes(rule)) {
+ Type type = attribute.getType();
+ if((StUtils.isApplied(attribute, ConfigurationProperty.class))
+ && (type instanceof Class)) {
+ Class aggregateOrInterceptor = DepUtils.chooseImplementation(
+ (Class)type, new BasicEList<InstanceSpecification>(),
+ false);
+ // is a configuration property, create slot
+ if(first) {
+ // add contExtImpl to list of classifiers that the instance
+ // specification describes
+ is.getClassifiers().add(aggregateOrInterceptor);
+ first = false;
+ }
+ // CAVEAT:
+ // - single value specification for all occurrences of an
+ // interceptor
+ // - Could be done, but: how to know whether user wants single
+ // vs. interceptor specific configuration?
+ // - two different interceptors may not share the same type with
+ // a configuration
+ // attribute
+ Slot slot = createSlotForConfigProp(is, attribute);
+ }
+ }
+ }
+
+ /**
+ * create a deployment plan, i.e. a set of instances that correspond to an
+ * implementation which is potentially a composite. In case of the latter,
+ * this function is called recursively to create deployment plans for the
+ * parts. Since a composite implementation may optionally specify only the
+ * type of parts (not the concrete implementation), this function also
+ * supports that a type is passed. In this case, an implementation is
+ * automatically assigned.
+ *
+ * @param cdp
+ * the deployment plan (package) in which to create instances
+ * @param typeOrImplem
+ * the type
+ * @param nane
+ * the name of the instance
+ * @param createSlotsForConfigValues
+ * if true, create slots for configuration values
+ */
+ public static InstanceSpecification createPlatformInstances(
+ Package platform, Class implementation, String name)
+ throws TransformationException {
+ // create an instance specification for the composite
+ InstanceSpecification is = null;
+ if(name != null) {
+ // donn't create instance specification for root element (detectable via the empty name)
+ is = (InstanceSpecification)platform.createPackagedElement(name,
+ UMLPackage.eINSTANCE.getInstanceSpecification());
+ is.getClassifiers().add(implementation);
+ }
+
+ // add connector and container implementations
+
+ for(Property attribute : implementation.getAllAttributes()) {
+ // loop over all attributes (not only parts, since we need to
+ // capture singletons)
+ if(attribute instanceof Port) {
+ continue;
+ }
+ Type type = attribute.getType();
+
+ if(Utils.isComposition(attribute)) {
+ // composition, attribute is a part
+ if(type instanceof Class) { // should be a node, but do not require it
+ Class cl = (Class)type;
+
+ // hack: ad-hoc replication support. Better solution via
+ // Design patterns
+ int upper = attribute.getUpper();
+ String infix = "";
+ // TODO: check validation constraints
+ for(int i = 0; i < upper; i++) {
+ // prefix with name, unless null
+ String partName = (name != null) ? name + "." : "";
+ partName += attribute.getName();
+ if(upper > 1) {
+ partName += "_" + infix + i;
+ }
+ InstanceSpecification partIS = createPlatformInstances(
+ platform, cl, partName);
+
+ if(is != null) {
+ createSlot(is, partIS, attribute);
+ }
+ }
+ } else if(StUtils.isApplied(attribute,
+ ConfigurationProperty.class)) {
+ // is a configuration property, create slot
+ // TODO: implicit assumption that configuration attributes
+ // are not components
+ createSlotForConfigProp(is, attribute);
+ }
+ }
+ }
+ return is;
+ }
+
+ /**
+ * Initialize the automatic values within a deployment plan - and the update
+ * eventual copies of these values.
+ *
+ * @param is
+ * the main instance of the deployment plan
+ */
+ public static void initAutoValues(InstanceSpecification is) {
+ map = new HashMap<Object, Integer>();
+ initAutoValuesHelper(is);
+ Stack<InstanceSpecification> isStack = new Stack<InstanceSpecification>();
+ copyAutoValues(isStack, is);
+ }
+
+ /**
+ * Initialize the automatic values within a deployment plan.
+ *
+ * @param is
+ * the main instance of the deployment plan
+ */
+ public static void initAutoValuesHelper(InstanceSpecification is) {
+ for(Slot slot : is.getSlots()) {
+ StructuralFeature sf = slot.getDefiningFeature();
+ if(StUtils.isApplied(sf, AutoIndex.class)) {
+ Integer value = null;
+ Object key;
+ if(StUtils.isApplied(sf, AutoIndexPerNode.class)) {
+ InstanceSpecification nodeOrThread = AllocUtils.getNode(is);
+ key = sf.getName() + nodeOrThread.getName();
+ } else {
+ key = sf;
+ }
+ if(!map.containsKey(key)) {
+ map.put(key, new Integer(0));
+ }
+ value = map.get(key);
+ value++; // no need to put incremented value back into map,
+ // since Integer is a reference => value is updated
+
+ // create slot and value specification (literal-integer) for the
+ // auto index
+ LiteralInteger li = (LiteralInteger)slot.createValue(
+ sf.getName() + "_auto", sf.getType(),
+ UMLPackage.eINSTANCE.getLiteralInteger());
+ li.setValue(value);
+
+ // recursion in case of values that are instance values
+ for(ValueSpecification vs : slot.getValues()) {
+ if(vs instanceof InstanceValue) {
+ InstanceSpecification subIS = ((InstanceValue)vs)
+ .getInstance();
+ initAutoValues(subIS);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Initialize the automatic values within a deployment plan.
+ *
+ * @param is
+ * the main instance of the deployment plan
+ */
+ public static void copyAutoValues(Stack<InstanceSpecification> isStack,
+ InstanceSpecification is) {
+ isStack.push(is);
+ for(Slot slot : is.getSlots()) {
+ StructuralFeature sf = slot.getDefiningFeature();
+ if(sf == null) {
+ // throw new TransformationException (is.getName() + " has a slot without defining feature");
+ System.err.println(is.getName());
+ break;
+ }
+ if(StUtils.isApplied(sf, CopyAttributeValue.class)) {
+ CopyAttributeValue cav = StUtils.getApplication(sf,
+ CopyAttributeValue.class);
+ Property source = cav.getSource();
+ ValueSpecification vs = getNearestValue(isStack, source);
+ if(vs instanceof LiteralInteger) {
+ LiteralInteger liCopy = (LiteralInteger)slot.createValue(
+ sf.getName() + "_copy", sf.getType(),
+ UMLPackage.eINSTANCE.getLiteralInteger());
+ int value = ((LiteralInteger)vs).getValue();
+ liCopy.setValue(value);
+ }
+ }
+
+ // recursion in case of values that are instance values
+ for(ValueSpecification vs : slot.getValues()) {
+ if(vs instanceof InstanceValue) {
+ InstanceSpecification subIS = ((InstanceValue)vs).getInstance();
+ if(subIS != null) {
+ copyAutoValues(isStack, subIS);
+ }
+ }
+ }
+ }
+ isStack.pop();
+ }
+
+ /**
+ * try to find a value (ValueSpecification) for the passed source element,
+ * beginning a the "deepest" instance specification of the passed stack. If
+ * not found, continue at elements higher up in the hierarchy
+ *
+ * @param isStack
+ * a stack of instance specifications corresponding to a path
+ * within an instance tree
+ * @param source
+ * a property (defining feature) for which we search an instance
+ * specification
+ * @return The value specifications for the passed source property or null
+ */
+
+ public static ValueSpecification getNearestValue(
+ Stack<InstanceSpecification> isStack, Property source) {
+ Stack<InstanceSpecification> copy = new Stack<InstanceSpecification>();
+ copy.addAll(isStack);
+ while(!copy.isEmpty()) {
+ InstanceSpecification pop = copy.pop();
+ ValueSpecification vs = getNearestValueHelper(isStack, pop, source);
+ if(vs != null) {
+ return vs;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Helper for getNearestValue: search for an instance specification that has
+ * source as defining feature. Start at the passed instance specification,
+ * but do not recursed into elements that are contained in the stack.
+ *
+ * @param isStack
+ * A stack of instance specifications corresponding to a path
+ * within an instance tree
+ * @param is
+ * the starting instance specification
+ * @param source
+ * source a property (defining feature) for which we search an
+ * instance specification
+ * @return The value specifications for the passed source property or null
+ */
+ public static ValueSpecification getNearestValueHelper(
+ Stack<InstanceSpecification> isStack, InstanceSpecification is,
+ Property source) {
+ for(Slot slot : is.getSlots()) {
+ StructuralFeature sf = slot.getDefiningFeature();
+ if(sf == source) {
+ // found property, now return first value specification
+ for(ValueSpecification vs : slot.getValues()) {
+ return vs;
+ }
+ return null;
+ }
+
+ // recursion in case of values that are instance values
+ for(ValueSpecification vs : slot.getValues()) {
+ if(vs instanceof InstanceValue) {
+ InstanceSpecification subIS = ((InstanceValue)vs)
+ .getInstance();
+ if(!isStack.contains(subIS)) {
+ // only recurse, if not contained in stack of instance
+ // specifications (avoid traversing
+ // the same elements multiple times)
+ return getNearestValueHelper(isStack, subIS, source);
+ }
+ }
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepPlanUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepPlanUtils.java
new file mode 100644
index 00000000000..6ac5ccf4cd8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepPlanUtils.java
@@ -0,0 +1,311 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.Enumerator;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.InstanceValue;
+import org.eclipse.uml2.uml.LiteralInteger;
+import org.eclipse.uml2.uml.LiteralString;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import FCM.DeploymentPlan;
+
+public class DepPlanUtils {
+
+ public static final String depPlanFolder = "deployment";
+
+ /**
+ * Return the package in which deployment plans are stored. Caveat: needs to be executed within a
+ * transition, since the deployment plan package will be created, if it does not exist yet.
+ *
+ * @param element
+ * an arbitrary element of the source model (i.e. the model that will
+ * store the deployment plan
+ * @return package in which deployment plans are stored
+ */
+ public static Package getDepPlanRoot(Element element) {
+ return Utils.getRoot(element, depPlanFolder);
+ }
+
+ /**
+ * Return all deployment plans
+ *
+ * @param element
+ * an arbitrary element of the source model (i.e. the model that will
+ * store the deployment plan
+ * @return
+ */
+ public static EList<Package> getAllDepPlans(Element element) {
+ Package root = Utils.getTop(element);
+ Package depPlanRoot = root.getNestedPackage(depPlanFolder);
+ EList<Package> depPlanList = new BasicEList<Package>();
+ if(depPlanRoot != null) {
+ for(Package pkg : depPlanRoot.getNestedPackages()) {
+ if(StUtils.isApplied(pkg, DeploymentPlan.class)) {
+ depPlanList.add(pkg);
+ }
+ }
+ }
+ return depPlanList;
+ }
+
+ public static void delDepPlan(InstanceSpecification is) {
+ Iterator<Slot> slots = is.getSlots().iterator();
+ while(slots.hasNext()) {
+ Slot slot = slots.next();
+ InstanceSpecification subInstance = getInstance(slot);
+ if(subInstance != null) {
+ delDepPlan(subInstance);
+ }
+ }
+ Element owner = is.getOwner();
+ if(owner instanceof Package) {
+ ((Package)owner).getPackagedElements().remove(is);
+ }
+ }
+
+ /**
+ * Return the instance that is defined by a slot value
+ *
+ * @param slot
+ * @return the first slot that corresponds to an instance specification
+ */
+ public static InstanceSpecification getInstance(Slot slot) {
+ Iterator<ValueSpecification> values = slot.getValues().iterator();
+ while(values.hasNext()) {
+ ValueSpecification value = values.next();
+ // instances are accessible via ValueSpecification subclass InstanceValue
+ if(value instanceof InstanceValue) {
+ return ((InstanceValue)value).getInstance();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * create a slot for a given sub-instance specification.
+ *
+ * @param cdp
+ * a deployment plan
+ * @param is
+ * an instance specification for a composite class
+ * @param partIS
+ * the instance specification of a part within the composite
+ * @param part
+ * the part within the composite
+ */
+ public static Slot createSlot(Package cdp, InstanceSpecification is, InstanceSpecification partIS, Property part) {
+ // the instance specification of the composite has a slot for each part and it points
+ // to the instance specification associated with the part.
+ Slot slot = is.createSlot();
+ slot.setDefiningFeature(part);
+
+ InstanceValue iv = (InstanceValue)
+ slot.createValue(null, null, UMLPackage.eINSTANCE.getInstanceValue());
+ iv.setInstance(partIS);
+ return slot;
+
+ }
+
+ /**
+ * Apply the stereotype deployment plan and set the mainInstance value
+ *
+ * @param cdp
+ * the deployment plan
+ * @param main
+ * instance the top-level instance specification of the plan
+ */
+ public static void setMainInstance(Package cdp, InstanceSpecification mainInstance) {
+ DeploymentPlan cdpApp = StUtils.applyApp(cdp, DeploymentPlan.class);
+ if(cdpApp != null) {
+ cdpApp.setMainInstance(mainInstance);
+ }
+ }
+
+ /**
+ * Automatically choose an implementation, i.e. choose the first implementation
+ * within the component model that implements a given component type.
+ */
+ public static Class autoChooseImplementation(Classifier componentType) {
+ // choose implementation automatically: get the first one that implements the passed type
+ // (problem: further tree expansion might depend on chosen implementation)
+ // get reference to component model, then search all classes contained in it.
+ Package compModel = Utils.getRoot(componentType, "ComponentModel");
+ Iterator<Element> elements = compModel.allOwnedElements().iterator();
+ while(elements.hasNext()) {
+ Element element = elements.next();
+ if(element instanceof Class) {
+ Class candidate = (Class)element;
+ if(candidate.getSuperClass(componentType.getName()) != null) {
+ return candidate;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * create a deployment plan, i.e. a set of instances
+ * Automatic choice of implementations (otherwise leave unassigned)
+ *
+ * @param composite
+ * System composite
+ */
+ public static InstanceSpecification createDepPlan(Package cdp, Classifier composite, String name) {
+ // create an instance specification for the composite
+ InstanceSpecification is = (InstanceSpecification)
+ cdp.createPackagedElement(name, UMLPackage.eINSTANCE.getInstanceSpecification());
+
+ if(name == "mainInstance") {
+ setMainInstance(cdp, is);
+ }
+
+ Class implementation = null;
+
+ if(Utils.isCompImpl(composite)) {
+ // implementation is known => must be able to do this.
+ if(composite instanceof Class) {
+ implementation = (Class)composite;
+ }
+ } else {
+ // TODO: really need that? (better indicate to user that he needs to choose?)
+ // need hint on type level (if we want to avoid loosing information)
+ implementation = autoChooseImplementation(composite);
+ }
+
+ if(!(implementation instanceof Class)) {
+ return is;
+ }
+ // else implementation is instance of Class (and not null)
+
+ is.getClassifiers().add(implementation);
+ /*
+ * if (hasStereotype (composite), containerImplementation) {
+ * is.getClassifiers ().add (containerImplem);
+ * }
+ */
+
+ for(Property part : Utils.getParts(implementation)) {
+ if(part instanceof Port) {
+ continue;
+ }
+ InstanceSpecification partIS =
+ createDepPlan(cdp, (Classifier)part.getType(), name + "." + part.getName());
+
+ createSlot(cdp, is, partIS, part);
+ }
+ return is;
+ }
+
+ public static void configureProperty(InstanceSpecification instance, ENamedElement property, String value) {
+ configureProperty(instance, property.getName(), value);
+ }
+
+ public static void configureProperty(InstanceSpecification instance, String propertyName, String value) {
+ Classifier extension = DepUtils.getClassifier(instance);
+ Property attribute = (Property)Utils.getNamedElementFromList(extension.getAllAttributes(), propertyName);
+ if(attribute == null) {
+ throw new RuntimeException("cannot find attribute " + propertyName + " in classifier " + extension.getName());
+ }
+ if(attribute.getType() instanceof Enumeration) {
+ configureEnumProperty(instance, propertyName, value);
+ }
+ else {
+ // create a slot for a string value
+ Slot slotStringVal = DepCreation.createSlotForConfigProp(instance, attribute);
+ if(slotStringVal.getValues().get(0) instanceof LiteralString) {
+ ((LiteralString)slotStringVal.getValues().get(0)).setValue(value);
+ }
+ else {
+ // indicates that operation has been called although types do not match
+ throw new RuntimeException("configuration of property " + propertyName + " failed: type is not a string");
+ }
+ }
+
+ }
+
+ public static void configureProperty(InstanceSpecification instance, ENamedElement property, int value) {
+ configureProperty(instance, property.getName(), value);
+ }
+
+ public static void configureProperty(InstanceSpecification instance, String propertyName, int value) {
+ Classifier extension = DepUtils.getClassifier(instance);
+ Property attribute = (Property)Utils.getNamedElementFromList(extension.getAllAttributes(), propertyName);
+ if(attribute == null) {
+ throw new RuntimeException("cannot find attribute " + propertyName + " in classifier " + extension.getName());
+ }
+ Slot slotIntVal = instance.createSlot();
+ slotIntVal.setDefiningFeature(attribute);
+ LiteralInteger intValue = (LiteralInteger)
+ slotIntVal.createValue("value for " + attribute.getName(), attribute.getType(), UMLPackage.eINSTANCE.getLiteralInteger());
+ intValue.setValue(value);
+
+ }
+
+ /**
+ * Convenience function: allow that an ecore named element is passed instead of a property name. This is useful if the
+ * parameter that should be configured stems from a static profile [TODO: should not be in the general class support, but
+ * in the instance configurators for RT-Describe)
+ *
+ * @param instance
+ * @param extension
+ * @param property
+ * @param value
+ */
+ public static void configureProperty(InstanceSpecification instance, ENamedElement property, Enumerator value) {
+ configureProperty(instance, property.getName(), value);
+ }
+
+ /**
+ * configure a property for an enumeration. Enumerations are a bit difficult to handle, since the enumeration literal itself
+ * must be created first in form of an instance specification
+ *
+ * @param instance
+ * The instance of which an attribute should be configured.
+ * @param propertyName
+ * The name of the property that should be configured
+ * @param value
+ * its value in form of an element of a static profile [TODO: not general enough?]
+ */
+ public static void configureProperty(InstanceSpecification instance, String propertyName, Enumerator value) {
+ configureProperty(instance, propertyName, value.getName());
+ }
+
+ public static void configureEnumProperty(InstanceSpecification instance, String propertyName, String literalName) {
+ Classifier extension = DepUtils.getClassifier(instance);
+ Property attribute = (Property)Utils.getNamedElementFromList(extension.getAllAttributes(), propertyName);
+ if(attribute == null) {
+ throw new RuntimeException("cannot find attribute " + propertyName + " in classifier " + extension.getName());
+ }
+
+ if(attribute.getType() instanceof Enumeration) {
+ Enumeration enumeration = (Enumeration)attribute.getType();
+ for(EnumerationLiteral enumLiteral : enumeration.getOwnedLiterals()) {
+ if(enumLiteral.getLabel().equals(literalName)) {
+ Slot slotEnumVal = instance.createSlot();
+ slotEnumVal.setDefiningFeature(attribute);
+ InstanceValue enumLitValue = (InstanceValue)
+ slotEnumVal.createValue("value for " + attribute.getName(), attribute.getType(), UMLPackage.eINSTANCE.getInstanceValue());
+ enumLitValue.setInstance(enumLiteral);
+ break;
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java
new file mode 100644
index 00000000000..5deb24b9f3f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java
@@ -0,0 +1,448 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import java.util.Iterator;
+import java.util.Stack;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+import org.eclipse.uml2.common.util.UML2Util;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.InstanceValue;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import FCM.DeploymentPlan;
+import FCM.ImplementationGroup;
+import FCM.ImplementationProperties;
+import FCM.InteractionComponent;
+import FCM.Target;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+/**
+ * Utilities around instances (within deployment plan)
+ * [DepPlanUtils?]
+ * [but missing: creation, ..., allocation?]
+ * Structuration ??
+ *
+ * @author ansgar
+ *
+ */
+public class DepUtils {
+
+ /**
+ * Check whether a class is an eligible implementation for a certain node, i.e.
+ * has compatible requirements.
+ * Requires that setCurrentNode has been called earlier
+ * TODO: how does that work with connector reification between distributeToNode has been
+ * called??!
+ *
+ * @param implemCandidate
+ * @return
+ */
+ public static boolean isImplEligible(Class implemCandidate, EList<InstanceSpecification> nodes) {
+ if(!Utils.isCompImpl(implemCandidate)) {
+ return false;
+ }
+ if(nodes != null) {
+ // now check properties
+ if(nodes.size() > 1) {
+ // indicates distribution
+ InteractionComponent connImpl = StUtils.getApplication(implemCandidate, InteractionComponent.class);
+ // if a connector implementation, it must support distribution (in case of multiple nodes)
+ // TODO: criteria is not optimal, since a composite may be deployed on multiple nodes,
+ // but a contained connector might still only connect local parts.
+ if(connImpl != null) {
+ if(!connImpl.isForDistribution()) {
+ return false;
+ }
+ }
+ }
+ // must fit requirements of all nodes
+ for(InstanceSpecification nodeInstance : nodes) {
+ Target target = StUtils.getApplication(nodeInstance, Target.class);
+ if(target == null) {
+ // no target information on instance => try to get this
+ // information from the node referenced by the instance
+ target = StUtils.getApplication(DepUtils.getClassifier(nodeInstance), Target.class);
+ }
+ if(target != null) {
+ ImplementationProperties implProps = StUtils.getApplication(implemCandidate, ImplementationProperties.class);
+ if(implProps != null) {
+ if(!implProps.getArch().contains(target.getTargetArch())) {
+ return false;
+ }
+ // TODO: check OS and size as well!
+ }
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Find a sub instance via its name. This is in particular useful for connectors that cannot be
+ * found via a slot, since UML only supports structural features (a connector is only a feature)
+ * in the definingFeature attribute of a slot.
+ *
+ * @param owningInstance
+ * an owning instance
+ * @param name
+ * name of the sub-element (unqualified)
+ * @return the found sub-instance or null
+ */
+ public static InstanceSpecification getNamedSubInstance(InstanceSpecification owningInstance, String name) {
+ Element cdp = owningInstance.getOwner();
+ String candidateName = owningInstance.getName() + "." + name;
+ if(cdp instanceof Package) {
+ for(PackageableElement instance : ((Package)cdp).getPackagedElements()) {
+ if(instance instanceof InstanceSpecification) {
+ InstanceSpecification candidate = (InstanceSpecification)instance;
+
+ if(candidateName != null) {
+ if(candidateName.equals(candidate.getName())) {
+ return candidate;
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Automatically choose an implementation, i.e. if the passed classifier
+ * (1) is already an implementation, simply return it
+ * (2) is an implementation group, choose the first implementation that fits the requirements
+ * (3) is a type: choose the first implementation among the heirs that fits the requirements
+ */
+ public static Class chooseImplementation(Class componentType, EList<InstanceSpecification> nodes, boolean interactive) {
+ // choose implementation automatically: get the first one that implements the passed type
+ // get reference to component model, then search all classes contained in it.
+ // TODO: assumption that implementations are in same package as type;
+
+ EList<Class> implList = new BasicEList<Class>();
+ if(StUtils.isApplied(componentType, ImplementationGroup.class)) {
+ for(Property groupAttribute : componentType.getAttributes()) {
+ Type implClass = groupAttribute.getType();
+ if((implClass instanceof Class) && isImplEligible((Class)implClass, nodes)) {
+ InteractionComponent connImpl = StUtils.getApplication(implClass, InteractionComponent.class);
+ if((connImpl != null) && connImpl.isForDistribution()) {
+ // only add distributed connector, if distributed
+ // don't put check into
+ if(nodes.size() > 1) {
+ implList.add((Class)implClass);
+ }
+ }
+ else {
+ implList.add((Class)implClass);
+ }
+ }
+ }
+ } else if(Utils.isCompImpl(componentType)) {
+ // check this after implementation group, since the latter inherits from component implementation
+ return componentType;
+ } else if(Utils.isCompType(componentType)) {
+ for(DirectedRelationship relship : componentType.getTargetDirectedRelationships()) {
+ if(relship instanceof Generalization) {
+ Classifier source = ((Generalization)relship).getSpecific();
+ if(source instanceof Class) {
+ Class implClass = (Class)source;
+ if(isImplEligible(implClass, nodes)) {
+ implList.add(implClass);
+ }
+ }
+ }
+ }
+ }
+ if(implList.size() == 0) {
+ return null;
+ } else if(implList.size() == 1) {
+ return implList.get(0);
+ } else if(interactive) {
+ // SelectionDialog = SelectionDialog.
+ ILabelProvider ilabel = new LabelProvider() {
+
+ public String getText(Object element) {
+ return ((NamedElement)element).getQualifiedName();
+ }
+ };
+ ElementListSelectionDialog dialog =
+ new ElementListSelectionDialog(new Shell(), ilabel);
+
+ dialog.setTitle("Multiple implementations found");
+ dialog.setMessage("Select an implementation for component type " + componentType.getName());
+
+ dialog.setElements(implList.toArray());
+
+ dialog.open();
+ Object[] selection = dialog.getResult();
+ if(selection.length == 1) {
+ if(selection[0] instanceof Class) {
+ return (Class)selection[0];
+ }
+ }
+ } else if(implList.size() > 0) {
+ return implList.get(0);
+ }
+ return null;
+ }
+
+ /**
+ * return an instance specification for the main instance within
+ * a package.
+ *
+ * @param cdp
+ * the deployment plan
+ */
+ public static InstanceSpecification getMainInstance(Package cdp) {
+ DeploymentPlan dp = StUtils.getApplication(cdp, DeploymentPlan.class);
+ return dp.getMainInstance();
+ }
+
+ /**
+ * Apply the stereotype deployment plan and set the mainInstance value
+ *
+ * @param cdp
+ * the deployment plan
+ * @param main
+ * instance the top-level instance specification of the plan
+ */
+ public static void setMainInstance(Package cdp, InstanceSpecification mainInstance) {
+ StUtils.apply(cdp, DeploymentPlan.class);
+ DeploymentPlan dp = StUtils.getApplication(cdp, DeploymentPlan.class);
+ dp.setMainInstance(mainInstance);
+ }
+
+ /**
+ * return the implementation associated with an instance specification, i.e. a
+ * Class.
+ *
+ * @param instance
+ * @return
+ */
+ public static Class getImplementation(InstanceSpecification instance) {
+ Classifier cl = getClassifier(instance);
+ if(cl instanceof Class) {
+ return (Class)cl;
+ }
+ return null;
+ }
+
+ /**
+ * Small helper function
+ *
+ * @param instance
+ * an instance specification
+ * @return returns true, if the stereotype ConnectorComp
+ * is applied to the classifier associated with an instance specification
+ */
+ public static boolean isConnector(InstanceSpecification instance) {
+ Classifier cl = getClassifier(instance);
+ return StUtils.isApplied(cl, InteractionComponent.class);
+ }
+
+ /**
+ * Return the first classifier referenced by an instance specification. Whereas UML supports
+ * a set of classifiers, we assume that that an instance specification has only one.
+ *
+ * @param instance
+ * the instance, for which we are interested in type information
+ */
+ public static Classifier getClassifier(InstanceSpecification instance) {
+ Iterator<Classifier> classifierIt = instance.getClassifiers().iterator();
+ // simply return the first element (if there is any)
+ if(classifierIt.hasNext()) {
+ return classifierIt.next();
+ }
+ return null;
+ }
+
+ /**
+ * Return the first instance specification within a deployment plan that instantiates a given
+ * classifier
+ *
+ * @param cdp
+ * the deployment plan
+ * @param cl
+ * the classifier
+ * @return
+ */
+ public static InstanceSpecification getInstanceForClassifier(Package cdp, Classifier cl) {
+ for(PackageableElement pe : cdp.getPackagedElements()) {
+ if(pe instanceof InstanceSpecification) {
+ InstanceSpecification is = (InstanceSpecification)pe;
+ if(getClassifier(is) == cl) {
+ return is;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Return the (unique) list of implementations that are contained within an
+ * instance specification
+ */
+ public static EList<Classifier> getContainedImplementations(InstanceSpecification is) {
+ Iterator<InstanceSpecification> instances = getContainedInstances(is).iterator();
+ EList<Classifier> list = new UniqueEList<Classifier>();
+ while(instances.hasNext()) {
+ Classifier implementation = getClassifier(instances.next());
+ list.add(implementation);
+ }
+ return list;
+ }
+
+ /**
+ * Return the slot that is associated with a property
+ *
+ * @param is
+ * an instance specification (of a class having properties)
+ * @param property
+ * A property of the classifier associated with the passed instance specification
+ * @return the associated slot or null, if it does not exist
+ */
+ public static Slot getSlot(InstanceSpecification is, Property property) {
+ Iterator<Slot> slots = is.getSlots().iterator();
+ while(slots.hasNext()) {
+ Slot slot = slots.next();
+ if(slot.getDefiningFeature() == property) {
+ return slot;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Return the instance referenced by a slot value, i.e. the first instance value associated
+ * with a slot
+ *
+ * @param slot
+ * @return
+ */
+ public static InstanceSpecification getInstance(Slot slot) {
+ for(ValueSpecification value : slot.getValues()) {
+ // instances are accessible via ValueSpecification subclass InstanceValue
+ if(value instanceof InstanceValue) {
+ return ((InstanceValue)value).getInstance();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * This method returns the instances contained within a composite instance
+ * specification for an assembly.
+ */
+ public static EList<InstanceSpecification> getContainedInstances(InstanceSpecification is) {
+ EList<InstanceSpecification> contained = new BasicEList<InstanceSpecification>();
+ for(Slot slot : is.getSlots()) {
+ InstanceSpecification instance = getInstance(slot);
+ if(instance != null) {
+ contained.add(instance);
+ }
+ }
+ return contained;
+ }
+
+ /**
+ * return all slots that reference an instance specification
+ *
+ * @param is
+ * @return
+ */
+ public static EList<Slot> getReferencingSlots(InstanceSpecification is) {
+ EList<Slot> list = new BasicEList<Slot>();
+ for(Setting setting : UML2Util.getNonNavigableInverseReferences(is)) {
+ // no trigger is referencing the event any more, delete call event
+ EObject eObj = setting.getEObject();
+ if(eObj instanceof ValueSpecification) {
+ ValueSpecification vs = (ValueSpecification)eObj;
+ Element owner = vs.getOwner();
+ if(owner instanceof Slot)
+ list.add((Slot)owner);
+ }
+ }
+ return list;
+ }
+
+ /**
+ * Return an instance specification that refers to the composite in which the
+ * passed instance is contained
+ *
+ * @param is
+ * an instance that is contained within an composite (i.e. that
+ * belongs to a part of this composite).
+ * @return
+ */
+ public static Slot getParentSlot(InstanceSpecification is) {
+ for(Slot slot : getReferencingSlots(is)) {
+ // no trigger is referencing the event any more, delete call event
+ if(slot.getDefiningFeature() instanceof Property) {
+ if(((Property)slot.getDefiningFeature()).getAggregation() == AggregationKind.COMPOSITE_LITERAL) {
+ return slot;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Return an instance specification that refers to the composite in which the
+ * passed instance is contained
+ *
+ * @param is
+ * an instance that is contained within an composite (i.e. that
+ * belongs to a part of this composite).
+ * @return
+ */
+ public static InstanceSpecification getParentIS(InstanceSpecification is) {
+ Slot parentSlot = getParentSlot(is);
+ if(parentSlot != null) {
+ return parentSlot.getOwningInstance();
+ }
+ return null;
+ }
+
+ public static Stack<Slot> getAccessPath(InstanceSpecification is) {
+ Stack<Slot> path = new Stack<Slot>();
+ while(is != null) {
+ Slot parentSlot = getParentSlot(is);
+ if(parentSlot == null) {
+ break;
+ }
+ path.insertElementAt(parentSlot, 0);
+ is = parentSlot.getOwningInstance();
+ }
+ return path;
+ }
+
+ public static boolean isShared(Slot slot) {
+ StructuralFeature df = slot.getDefiningFeature();
+ if(df instanceof Property) {
+ return ((Property)df).getAggregation() == AggregationKind.SHARED_LITERAL;
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java
new file mode 100644
index 00000000000..7a72ace44b9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java
@@ -0,0 +1,161 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import java.util.Stack;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Slot;
+
+import org.eclipse.papyrus.qompass.designer.core.extensions.ILangSupport;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/*
+ * This file is part of Qompass GenTools
+ * Copyright (C) 2008 CEA LIST (http://www-list.cea.fr/)
+
+ * initial developer : Ansgar Radermacher, Christophe JOUVRAY from CEA LIST
+ */
+
+public class Deploy {
+
+ public static final String singletonPrefix = "singleton_";
+
+ /**
+ * distribute an instance, its contained sub-instances and the referenced
+ * classifiers to a certain node
+ *
+ * @param copy
+ * @param node
+ * @param nodeIndex
+ * @param numberOfNodes
+ * @param instance
+ * @throws TransformationException
+ */
+ public static Deploy distributeToNode(Copy copy, ILangSupport langSupport, InstanceSpecification node,
+ int nodeIndex, int numberOfNodes, InstanceSpecification instance)
+ throws TransformationException
+ {
+ Deploy deploy = new Deploy();
+ deploy.bootLoaderGen = new BootLoaderGen(copy, nodeIndex, numberOfNodes);
+ deploy.node = node;
+
+ // change to flat copy eventually later (not yet working)
+ deploy.depInstance = new PartialCopy();
+
+ deploy.depInstance.init(copy, deploy.bootLoaderGen, node);
+
+ // set a copy listener in order to assure that indirectly added classes
+ // are taken into account as well
+ copy.preCopyListeners.add(new GatherConfigData(langSupport));
+ // TODO: not nice at all (make non-static?)
+ Stack<Slot> slotPath = new Stack<Slot>();
+ deploy.distributeToNode(false, slotPath, instance);
+ Package cdp = instance.getNearestPackage();
+ // deploy singletons (difficult to embed singletons into main instance,
+ // since there is no attribute for these)
+ for(PackageableElement pe : cdp.getPackagedElements()) {
+ if((pe instanceof InstanceSpecification) && (pe.getName().startsWith(singletonPrefix) && (!pe.getName().contains(".")))) {
+ deploy.distributeToNode(false, slotPath, (InstanceSpecification)pe);
+ }
+ }
+ deploy.bootLoaderGen.addCreateConnections();
+ deploy.bootLoaderGen.addInit();
+ return deploy;
+ }
+
+ public void distributeToNode(boolean allocAll, Stack<Slot> slotPath, InstanceSpecification instance)
+ throws TransformationException {
+
+ // once an instance is explicitly allocated on a partition (use of getNodes instead of getAllNodes)
+ // all of its sub-instances are allocated on the node as well
+
+ if(AllocUtils.getNodesOrThreads(instance).contains(node)) {
+ allocAll = true;
+ }
+
+ // obtain implementation within source model
+ Classifier smImplementation = DepUtils.getClassifier(instance);
+ if(smImplementation == null) {
+ throw new TransformationException(
+ "Cannot find implementation for instance " + instance.getName());
+ }
+
+ // copy implementation into node specific model
+ Classifier tmImplementation = depInstance.deployInstance(instance);
+
+ for(Slot slot : instance.getSlots()) {
+ InstanceSpecification containedInstance = DepUtils.getInstance(slot);
+
+ if(containedInstance != null) {
+ if(allocAll || AllocUtils.getAllNodes(containedInstance).contains(node)) {
+ // if(!containedInstance.getName().startsWith(singletonPrefix)) {
+ slotPath.push(slot);
+ distributeToNode(allocAll, slotPath, containedInstance);
+ slotPath.pop();
+ }
+ } else {
+ // slot contains configuration of primitive attribute (no
+ // sub-instance, but primitive value)
+ slotPath.push(slot);
+ bootLoaderGen.instanceConfig(slotPath, instance);
+ slotPath.pop();
+ }
+ }
+
+ // ... and add the instance to the bootloader (this is done after
+ // copying the slots to
+ // ensure that the bootloader generator has the information about
+ // contained parts & connectors
+ // TODO: really necessary?
+ if(tmImplementation instanceof Class) {
+ bootLoaderGen.addInstance(slotPath, instance, (Class)tmImplementation, node);
+ }
+ }
+
+ /**
+ * Return the instance that is defined by a slot value
+ *
+ * @param slot
+ * @return the first slot that corresponds to an instance specification
+ */
+ /*
+ * public static InstanceSpecification getInstance (Slot slot) {
+ * Iterator<ValueSpecification> values = slot.getValues ().iterator(); while
+ * (values.hasNext ()) { ValueSpecification value = values.next (); //
+ * instances are accessible via ValueSpecification subclass InstanceValue if
+ * (value instanceof InstanceValue) { return ((InstanceValue)
+ * value).getInstance (); } } return null; }
+ */
+
+ /**
+ * This method returns a deployment plan when given an instance
+ * specification within that plan. It is used for convenience (avoid the
+ * need to pass the a deployment plan in the Acceleo scripts)
+ *
+ * @param instance
+ * an instance (specification) within the deployment plan
+ * @return the deployment plan
+ */
+ // TODO: make public? who is using it?
+ /*
+ * private static Package getDeploymentPlan (InstanceSpecification instance)
+ * { // all instance specifications are flat within the deployment plan
+ * package Element owner = instance.getOwner (); if (!(owner instanceof
+ * Package)) { return null; } else { // verify stereotype as well? return
+ * (Package) owner; } }
+ */
+
+ public Class getBootloader() {
+ return bootLoaderGen.getUML();
+ }
+
+ private BootLoaderGen bootLoaderGen;
+
+ private InstanceSpecification node;
+
+ private InstanceDeployer depInstance;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/FlatCopy.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/FlatCopy.java
new file mode 100644
index 00000000000..835a99b0a66
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/FlatCopy.java
@@ -0,0 +1,178 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.Type;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Deploy instances in a flat way, i.e. only deploy leaves. "Normal" composites
+ * still need to be deployed (since they might have a behavior of their own).
+ * However, composites tagged as assemblies (FCM stereotype attribute) may be
+ * not be deployed, instead their contents is deployed.
+ *
+ * A composite that is not deployed implies that
+ * - assembly connections within this composite need to move up one or more levels
+ * in the composite hierarchy
+ * - re-targeting connections from/to a composite to the inner part (along delegation connections inside
+ * the composite)
+ * [Need to stop at a composite]
+ *
+ * Problems: need to do that on instance level. It could be that the same composite is instantiated
+ * at different places in the tree with a different implementation choices => would require different
+ * variants of the sub-type.
+ * Solution: a. completely flatten except system of which we know that a single
+ * instance exists)
+ * b. forbid that different implementation variants are used by different instances of same composant
+ *
+ * CAVEAT: function not yet properly working,
+ * function currently not used
+ *
+ * @author ansgar
+ *
+ * [same problem in distToNode code: need to know implementation]
+ */
+public class FlatCopy implements InstanceDeployer {
+
+ public void init(Copy copy, BootLoaderGen bootloader, InstanceSpecification node) {
+ this.copy = copy;
+ // this.bootloader = bootloader;
+ pc = new PartialCopy();
+ pc.init(copy, bootloader, node);
+ this.node = node;
+ }
+
+ /**
+ * flatten an assembly, i.e. remove the passed containedPart (which must be a part within the passed containing
+ * composite)
+ *
+ * @param containingComposite
+ * @param containedPart
+ * a part within the passed containing composite
+ * @param containedComposite
+ * the type (implementation) of the passed part
+ */
+ public void flattenAssembly(InstanceSpecification instance) {
+ Class smContainedComposite = (Class)DepUtils.getClassifier(instance);
+ Class smContainingComposite = null; // ci.smCompClass;
+ Class tmContainingComposite = (Class)copy.get(smContainingComposite);
+ // Need parent information (logic: deploy a sub-instance and add in this moment the property to
+ // the parent of the parent ...
+ Property containedPart = null; // (Property)ci.slot.getDefiningFeature();
+ if(!smContainingComposite.getOwnedAttributes().contains(containedPart)) {
+ // should never happen.
+ return;
+ }
+ String partPrefix = containedPart.getName() + "_";
+ InstanceSpecification smInstance = null; // DepUtils.getInstance(ci.slot);
+ // add parts of contained composite to the containing composite
+ // for (InstanceSpecification partIS : InstanceUtils.getContainedInstance (is))
+ for(Slot slot : smInstance.getSlots()) {
+ Property smPart = (Property)slot.getDefiningFeature();
+ InstanceSpecification subInstance = DepUtils.getInstance(slot);
+ if(!AllocUtils.getNodesOrThreads(subInstance).contains(node)) {
+ continue;
+ }
+ Type type = smPart.getType();
+ if((type instanceof Class) && (Utils.isComponent((Class)type))) {
+
+ }
+ Property tmPart = copy.getCopy(smPart);
+ tmPart.setName(partPrefix + smPart.getName());
+
+ // now redirect connectors
+ for(Connector connector : smContainedComposite.getOwnedConnectors()) {
+ if(ConnectorUtils.connectsPart(connector, smPart)) {
+ // internal connector for the part, check whether delegation
+ ConnectorEnd ce = ConnectorUtils.connEndNotPart(connector, smPart);
+ if(ce.getPartWithPort() == null) {
+ // delegation connector, need to re-targed connections to external port
+ Port port = (Port)ce.getRole();
+ // now look for connections to this port in the containingComposite and shortcut these ...
+ retargetConnections(smContainingComposite, port, containedPart, tmPart);
+ } else {
+ // assembly: the connector needs to be added to the containing composite after all
+ // parts have been added (see below).
+ }
+ }
+ }
+ // move is
+ /*
+ * InstanceSpecification partIS;
+ * DepUtils.createSlot (cdp, newIS, partIS, newPart);
+ */
+ }
+ // create assembly connectors of containedComposite in containingComposite
+ for(Connector connector : smContainedComposite.getOwnedConnectors()) {
+ if(ConnectorUtils.isAssembly(connector)) {
+ // but need to assure that both connected parts have been added before.
+ copy.getCopy(connector);
+ }
+ }
+ // TODO: need to do that on instance level as well.
+ // remove contained part
+ tmContainingComposite.getOwnedAttributes().remove(containedPart);
+ }
+
+ /**
+ * Find a connection within a connecting
+ *
+ * @param containingComposite
+ * @param port
+ * @param part
+ * a part within the containing composite (which is a composite as well) = containedComposite
+ * @param subPart
+ * a newly created part which corresponds to a part of the containedComposite which should disappear
+ */
+ public void retargetConnections(Class containingComposite, Port port, Property part, Property subPart) {
+ for(Connector connector : containingComposite.getOwnedConnectors()) {
+ if(ConnectorUtils.connectsPart(connector, part) && ConnectorUtils.connectsPort(connector, port)) {
+ ConnectorEnd ce = ConnectorUtils.connEndForPart(connector, part);
+ if(ce != null) {
+ // support not using a port
+ ce.setPartWithPort(subPart);
+ }
+ }
+ }
+ }
+
+ public Classifier deployInstance(InstanceSpecification is)
+ throws TransformationException {
+ Classifier classifier = DepUtils.getClassifier(is);
+ Class smCl = (Class)classifier;
+ NamedElement existing = Utils.getExistingNEinTarget(copy, smCl);
+ if(existing instanceof Classifier) {
+ // classifier exists already in target model (or is imported), nothing todo
+ return (Classifier)existing;
+ }
+ if(!(classifier instanceof Class)) {
+ return copy.getCopy(classifier);
+ }
+ /*
+ * if(StUtils.isAssemblyImpl(smCl)) {
+ * // class is tagged as assembly, i.e. it does not need to be deployed.
+ * flattenAssembly(is);
+ * return null;
+ * } else {
+ */
+ return pc.deployInstance(is);
+ // }
+ }
+
+ private Copy copy;
+
+ private PartialCopy pc;
+
+ private InstanceSpecification node;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/GatherConfigData.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/GatherConfigData.java
new file mode 100644
index 00000000000..9b1287d72f1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/GatherConfigData.java
@@ -0,0 +1,38 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Class;
+
+import org.eclipse.papyrus.qompass.designer.core.extensions.ILangSupport;
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+/**
+ * Gather configuration data for a code generation project
+ * In particular, a class might be stereotyped to provide additional information
+ * about required compilation options (in case of C++ include paths, libraries, ...)
+ *
+ * @author ansgar
+ */
+public class GatherConfigData implements CopyListener {
+
+ /**
+ * Gather configuration data for a code generation project
+ * Constructor.
+ *
+ * @param langSupport
+ * A reference to a class providing the language support interface
+ */
+ public GatherConfigData(ILangSupport langSupport) {
+ this.langSupport = langSupport;
+ }
+
+ public EObject copyEObject(Copy copy, EObject sourceEObj) {
+ if(sourceEObj instanceof Class) {
+ langSupport.gatherConfigData((Class)sourceEObj);
+ }
+ return sourceEObj;
+ }
+
+ private ILangSupport langSupport;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/InstanceDeployer.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/InstanceDeployer.java
new file mode 100644
index 00000000000..7d07e7e2bbf
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/InstanceDeployer.java
@@ -0,0 +1,49 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Deploy an instance (on a certain node). This operation is specifically non recursive
+ *
+ * @author ansgar
+ *
+ */
+public interface InstanceDeployer {
+
+ /**
+ * Initialize the deployment
+ *
+ * @param sat
+ * information about source and target model
+ * @param bootloader
+ * the bootloader generator, which will contain instance information
+ * @param node
+ * the node onto which the allocation should be done.
+ */
+ public void init(Copy sat, BootLoaderGen bootloader, InstanceSpecification node);
+
+ /**
+ * Deploy an instance and copy the required classes into the target model.
+ * In case of a composite (assembly) class that is partially deployed on a target node
+ * (i.e. a subset of its parts is deployed on the target node, but not composite itself),
+ * this function may only partially copy the class or omit it completely.
+ * Parts and connections are not copied in the first place to take care of partially
+ * deployed composites and added when needed.
+ * Therefore, this function is also responsible for creating the part associated with the
+ * instance in the owning composite class and eventually complete connections within the
+ * composites.
+ *
+ * @param is
+ * an instance (UML instance specification) within the deployment plan
+ * @param composite
+ * information about the containing composite, i.e. the composite in source
+ * and target model as well as informations about the slot.
+ * @return the classifier modified for deployment
+ * @throws TransformationException
+ */
+ public Classifier deployInstance(InstanceSpecification is) throws TransformationException;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/PartialCopy.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/PartialCopy.java
new file mode 100644
index 00000000000..fd49e854f95
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/PartialCopy.java
@@ -0,0 +1,45 @@
+package org.eclipse.papyrus.qompass.designer.core.deployment;
+
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Copy a composite class while taking into account node allocation, i.e. only
+ * copy parts that are deployed on a certain node (properties that are not typed
+ * by a component are always copied). This function may be called several times
+ * and will successively add parts that are required. If the same composite
+ * (class level) is used in two different contexts, e.g. a socket connector
+ * serving as client and server on the same node (for the same interface), the
+ * resulting composite will be complete. On the instance level however, such as
+ * composite is sub-optimal, since their are two different instances that use a
+ * different subset. These cases are not very critical, since unused parts are
+ * not instantiated (overhead = pointer)
+ *
+ * The function will change assembly composites
+ *
+ * @author ansgar
+ *
+ */
+public class PartialCopy implements InstanceDeployer {
+
+ public void init(Copy copy, BootLoaderGen bootloader,
+ InstanceSpecification node) {
+ this.copy = copy;
+ this.node = node; // only needed for debug output
+ // add copy listeners ---
+ // 1. only add required parts
+ // does nothing for the moment
+ }
+
+ public Classifier deployInstance(InstanceSpecification is) throws TransformationException {
+ Classifier classifier = DepUtils.getClassifier(is);
+ return copy.getCopy(classifier);
+ }
+
+ private InstanceSpecification node;
+
+ private Copy copy;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AllocationDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AllocationDialog.java
new file mode 100644
index 00000000000..e79b16a38ba
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AllocationDialog.java
@@ -0,0 +1,302 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.draw2d.Label;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.papyrus.MARTE.MARTE_DesignModel.SRM.SW_Concurrency.SwSchedulableResource;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.BootLoaderGen;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.handlers.AddProfileAndModelLibsHandler;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeColumn;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.dialogs.SelectionStatusDialog;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.DeploymentPlan;
+
+/**
+ * Select a connector type and implementation (group)
+ * TODO: show information about the used connector [usage, implem properties, ...]
+ * similar help for ports?
+ *
+ * @author ansgar
+ *
+ */
+
+/*
+ * ListSelectionDialog lsd = new ListSelectionDialog(window.getShell(), list, new ArrayContentProvider(), new LabelProvider(),
+ * "ListSelectionDialog Message");
+ * lsd.setInitialSelections(list.toArray());
+ * lsd.setTitle("Select # of Nobel Prize Nominations :");
+ * lsd.open();
+ */
+public class AllocationDialog extends SelectionStatusDialog {
+
+ private DeploymentPlan m_cdp;
+
+ // protected EList<Package> visitedPackages;
+ // protected FilteredList fRules;
+ private Tree fTree;
+
+ private Label fLabel;
+
+ private Combo fAlloc;
+
+ private InstanceSpecification currentIS;
+
+ private EList<InstanceSpecification> nodeOrThreadList;
+
+ public AllocationDialog(Shell parent, Package cdp) {
+ super(parent);
+ // m_cdp = cdp;
+ m_cdp = StUtils.getApplication(cdp, DeploymentPlan.class);
+ visitedPackages = new BasicEList<Package>();
+ nodeOrThreadList = new BasicEList<InstanceSpecification>();
+ nodeOrThreadList.add(null); // dummy entry for no allocation
+ getAllNodesOrThreads(cdp.getModel(), nodeOrThreadList);
+ }
+
+ /**
+ * @see SelectionStatusDialog#computeResult()
+ */
+ protected void computeResult() {
+ // nothing to do
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite contents = (Composite)super.createDialogArea(parent);
+ // (parent, "Container rules", "Avail. extensions/interceptors");
+
+ fTree = new Tree(contents, SWT.H_SCROLL | SWT.BORDER);
+ fTree.setHeaderVisible(true);
+ GridData data = new GridData(GridData.FILL_BOTH);
+ fTree.setLayoutData(data);
+ data.heightHint = 150;
+ // data.widthHint = 200;
+
+ // Turn off drawing to avoid flicker
+ fTree.setRedraw(false);
+
+ TreeColumn instances = new TreeColumn(fTree, SWT.LEFT);
+ instances.setText("Instance");
+ instances.setWidth(200);
+ TreeColumn explicitAlloc = new TreeColumn(fTree, SWT.LEFT);
+ explicitAlloc.setText("explicit allocation");
+ explicitAlloc.setWidth(150);
+ TreeColumn implicitAlloc = new TreeColumn(fTree, SWT.LEFT);
+ implicitAlloc.setText("implicit allocation");
+ implicitAlloc.setWidth(150);
+
+ fillTree(fTree, null, m_cdp.getMainInstance());
+
+ // Turn drawing back on!
+ fTree.setRedraw(true);
+
+ fTree.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if(fTree.getSelection().length > 0) {
+ selectInstance(fTree.getSelection()[0]);
+ }
+ }
+ });
+
+ Label label = new Label();
+ label.setText("seletected instance:");
+ fLabel = new Label();
+
+ createAllocInfo(contents);
+ return contents;
+ }
+
+ /**
+ * Helper method to fill a tree with data
+ *
+ * @param tree
+ * the tree to fill
+ */
+ private void fillTree(Tree tree, TreeItem treeItem, InstanceSpecification is) {
+ TreeItem item;
+ if(treeItem != null) {
+ item = new TreeItem(treeItem, SWT.NONE);
+ } else {
+ item = new TreeItem(tree, SWT.NONE);
+ }
+ item.setData(is);
+ setTextFromData(item);
+
+ // create children
+ for(InstanceSpecification subIS : DepUtils.getContainedInstances(is)) {
+ fillTree(tree, item, subIS);
+ }
+ }
+
+ // obtain name and explicit/implicit node Allocation
+ protected void setTextFromData(TreeItem ti) {
+ Object data = ti.getData();
+ if(data instanceof InstanceSpecification) {
+ InstanceSpecification is = (InstanceSpecification)data;
+
+ String name = is.getName();
+ int index = name.lastIndexOf(".");
+ if(index != -1) {
+ name = name.substring(index + 1);
+ }
+ InstanceSpecification explicitNodeOrThread = AllocUtils.getNodeOrThread(is);
+ Classifier cl = DepUtils.getClassifier(is);
+ String nodeName;
+ if(explicitNodeOrThread == null) {
+ nodeName = "-";
+ } else {
+ nodeName = getAllocName(explicitNodeOrThread);
+ }
+ if(cl instanceof Class) {
+ if(BootLoaderGen.hasUnconnectedStartRoutine(null, (Class)cl, null)) {
+ nodeName += " (main)";
+ }
+ }
+ EList<InstanceSpecification> implicitNodes = AllocUtils.getAllNodesOrThreadsParent(is);
+ implicitNodes.addAll(AllocUtils.getAllNodesOrThreadsParent(is));
+ String list = "";
+ for(InstanceSpecification node : implicitNodes) {
+ if(list.equals("")) {
+ list = getAllocName(node);
+ } else {
+ list += ", " + getAllocName(node);
+ }
+ }
+ ti.setText(new String[]{ name, nodeName, "[" + list + "]" });
+ }
+ }
+
+ protected void refreshTree(TreeItem ti) {
+ setTextFromData(ti);
+ for(TreeItem subItem : ti.getItems()) {
+ refreshTree(subItem);
+ }
+ }
+
+ private String getAllocName(InstanceSpecification nodeOrThread) {
+ if(nodeOrThread == null) {
+ return "no explicit allocation";
+ } else {
+ String name = nodeOrThread.getName();
+ InstanceSpecification threadNode = AllocUtils.getNode(nodeOrThread);
+ return name + (threadNode != null ? " on " + threadNode.getName() : "");
+ }
+ }
+
+ protected void createAllocInfo(Composite parent) {
+ // create extension kind combo
+ fAlloc = DialogUtils.createComboWithText(parent, "Alloc to node:",
+ SWT.DROP_DOWN | SWT.READ_ONLY, SWT.NONE);
+
+ String items[] = new String[nodeOrThreadList.size()];
+ int i = 0;
+ for(InstanceSpecification nodeOrThread : nodeOrThreadList) {
+ items[i++] = getAllocName(nodeOrThread);
+ }
+ fAlloc.setItems(items);
+ fAlloc.addSelectionListener(new SelectionAdapter() {
+
+ public void widgetSelected(SelectionEvent event) {
+ if(currentIS != null) {
+ updateAllocation(currentIS, fAlloc.getSelectionIndex());
+ // selectionCount should always be 1
+ for(TreeItem ti : fTree.getSelection()) {
+ refreshTree(ti);
+ }
+ }
+ }
+ });
+
+ fAlloc.setEnabled(false);
+ }
+
+ /**
+ * Select a rule, i.e. update the visual representation from the rule
+ *
+ * @param rule
+ */
+ protected void selectInstance(TreeItem item) {
+ // for (Port port : rule.getPortSet ()) {
+ // fPorts.setSelection()
+ // }
+ currentIS = (InstanceSpecification)item.getData();
+ fLabel.setText(currentIS.getName());
+
+ fAlloc.setEnabled(true);
+ InstanceSpecification nodeOrThread = AllocUtils.getNodeOrThread(currentIS);
+
+ for(int i = 0; i < nodeOrThreadList.size(); i++) {
+ if(nodeOrThreadList.get(i) == nodeOrThread) {
+ fAlloc.select(i);
+ }
+ }
+ }
+
+ private void updateAllocation(InstanceSpecification is, int index) {
+ InstanceSpecification oldNode = AllocUtils.getNodeOrThread(is);
+ InstanceSpecification newNode = nodeOrThreadList.get(index);
+
+ if(oldNode == newNode) {
+ return;
+ }
+
+ // add or update
+ if(oldNode == null) {
+ if(!AllocUtils.allocate(is, newNode)) {
+ Shell shell = new Shell();
+ if(MessageDialog.openQuestion(shell, "Error",
+ "Stereotype application failed. The profile MARTE::Allocation is probably not applied. Try to apply it?")) {
+ AddProfileAndModelLibsHandler.addProfiles(Utils.getTop(is), AddProfileAndModelLibsHandler.APPLY_ALLOC);
+ AllocUtils.allocate(is, newNode);
+ }
+ }
+ } else {
+ AllocUtils.updateAllocation(is, oldNode, newNode);
+ }
+ }
+
+ void getAllNodesOrThreads(Package pkg, EList<InstanceSpecification> nodeList) {
+ for(Element el : pkg.getMembers()) {
+ if(el instanceof Package) {
+ if(!visitedPackages.contains(el)) {
+ visitedPackages.add((Package)el);
+ getAllNodesOrThreads((Package)el, nodeList);
+ }
+ } else if(el instanceof InstanceSpecification) {
+ Classifier cl = DepUtils.getClassifier((InstanceSpecification)el);
+ if(cl != null) {
+ if((cl instanceof Class) || (StUtils.isApplied(cl, SwSchedulableResource.class))) {
+ // check that instances are not part of a deployment plan
+ // [TODO:] check that owner of instance is a platform definition
+ if(!StUtils.isApplied(el.getOwner(), DeploymentPlan.class)) {
+ nodeList.add((InstanceSpecification)el);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private EList<Package> visitedPackages;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AttributeLabelProvider.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AttributeLabelProvider.java
new file mode 100644
index 00000000000..987c5fcc8ab
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/AttributeLabelProvider.java
@@ -0,0 +1,21 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+public class AttributeLabelProvider extends LabelProvider {
+
+ public String getText(Object element) {
+ if(element instanceof Property) {
+ Property p = (Property)element;
+ Type type = p.getType();
+ return p.getClass_().getName() + "." + p.getName() + ((type != null) ?
+ " : " + type.getQualifiedName() :
+ "");
+ }
+ else {
+ return "invalid";
+ }
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ChooseConfigOpt.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ChooseConfigOpt.java
new file mode 100644
index 00000000000..9ca12781405
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ChooseConfigOpt.java
@@ -0,0 +1,233 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.uml.profile.ui.dialogs.AlphabeticalViewerSorter;
+import org.eclipse.papyrus.uml.profile.ui.dialogs.ChooseSetAssistedDialog;
+import org.eclipse.papyrus.uml.profile.ui.dialogs.IChooseDialog;
+import org.eclipse.papyrus.uml.properties.profile.ui.dialogs.StereotypeQualifiedLabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.ConfigOption;
+import FCM.ContainerRule;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+
+public class ChooseConfigOpt extends ChooseSetAssistedDialog implements IChooseDialog {
+
+ protected EList<Package> visitedPackages;
+
+ /**
+ * LabelProvider for stereotype completion proposal provider with qualified names.
+ */
+ final private StereotypeQualifiedLabelProvider qualifiedLabelProvider = new StereotypeQualifiedLabelProvider();
+
+ /**
+ * Default Constructor.
+ *
+ * @param parentShell
+ * the parent shell
+ * @param theElement
+ * the UML element to be modified
+ */
+ public ChooseConfigOpt(Shell parentShell, Package model, ContainerRule rule) {
+ super(parentShell,
+ "Available configuration options: ",
+ "Applied configuration options: ");
+ labelProvider = new ConfigOptionLabelProvider();
+ decoratedContentProposalProvider = new ConfigOptContentProposalProvider();
+
+ for(ConfigOption option : rule.getForConfig()) {
+ selectedElementList.addElement(option.getBase_Class());
+ }
+
+ visitedPackages = new BasicEList<Package>();
+ EList<Class> configOptList = new BasicEList<Class>();
+ getAvailConfigOpts(model, configOptList);
+ for(Class current : configOptList) {
+ if(!selectedElementList.contains(current)) {
+ possibleElementList.addElement(current);
+ }
+ }
+ }
+
+ private void getAvailConfigOpts(Package pkg, EList<Class> configOptList) {
+ for(Element el : pkg.getMembers()) {
+ if(el instanceof Package) {
+ if(!visitedPackages.contains(el)) {
+ visitedPackages.add((Package)el);
+ getAvailConfigOpts((Package)el, configOptList);
+ }
+ } else if(el instanceof Class) {
+ if(StUtils.isApplied(el, ConfigOption.class)) {
+ configOptList.add((Class)el);
+ }
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.papyrus.ui.dialogs.ChooseSetAssistedDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+ */
+ /**
+ * Creates the dialog area.
+ *
+ * @param parent
+ * the parent
+ *
+ * @return the control
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Control composite = super.createDialogArea(parent);
+
+ // Add 2 columns to the table area
+ // possibleElementsTable.setLinesVisible(true);
+ possibleElementsTable.setHeaderVisible(true);
+
+ // 1st column with image/checkboxes - NOTE: The SWT.CENTER has no effect!!
+ TableColumn column = new TableColumn(possibleElementsTable, SWT.CENTER, 0);
+ column.setText("Option");
+ column.setWidth(100);
+ column.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ possibleElementsTableViewer.setSorter(new AlphabeticalViewerSorter(0));
+ }
+ });
+
+ // 2nd column with task Description
+ column = new TableColumn(possibleElementsTable, SWT.LEFT, 1);
+ column.setText("Information");
+ column.setWidth(165);
+ // Add listener to column so tasks are sorted by description when clicked
+ column.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ possibleElementsTableViewer.setSorter(new AlphabeticalViewerSorter(1));
+ }
+ });
+
+ // set sorter to the possible element table viewer
+ possibleElementsTableViewer.setSorter(new AlphabeticalViewerSorter(0));
+
+ return composite;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.papyrus.ui.dialogs.ChooseSetAssistedDialog#runAddElement(java.lang.String)
+ */
+ /**
+ * Run add element.
+ *
+ * @param name
+ * the name
+ */
+ @Override
+ protected void runAddElement(String name) {
+ // find the stereotype in the list
+ Class option = null;
+ for (Object possibleElement : possibleElementList.getElements()) {
+ Class element = (Class) possibleElement;
+ if(name.equalsIgnoreCase(element.getName()) ||
+ name.equalsIgnoreCase(element.getQualifiedName())) {
+ option = element;
+ }
+ }
+ if(option != null) {
+ runActionAdd(option);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.papyrus.ui.dialogs.ChooseSetAssistedDialog#isSelectableElement(java.lang.String)
+ */
+ /**
+ * Checks if is selectable element.
+ *
+ * @param text
+ * the text
+ *
+ * @return true, if is selectable element
+ */
+ @Override
+ protected boolean isSelectableElement(String text) {
+ // iterate through all possibilities and return true if text corresponds
+ for (Object possibleElement : possibleElementList.getElements()) {
+ Class element = (Class) possibleElement;
+ if(text.equalsIgnoreCase(element.getName()) || text.equalsIgnoreCase(element.getQualifiedName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Content Proposal provider for stereotypes dialog. Propose the simple
+ * name of the stereotype and its qualified name.
+ *
+ * @author Remi Schnekenburger
+ */
+ public class ConfigOptContentProposalProvider extends DecoratedContentProposalProvider {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.papyrus.ui.dialogs.ChooseSetAssistedDialog.DecoratedContentProposalProvider#getProposals(java.lang.String, int)
+ */
+ /**
+ * Gets the proposals.
+ *
+ * @param contents
+ * the contents
+ * @param position
+ * the position
+ *
+ * @return the proposals
+ */
+ @Override
+ public DecoratedContentProposal[] getProposals(String contents, int position) {
+ ArrayList<DecoratedContentProposal> proposals = new ArrayList<DecoratedContentProposal>();
+
+ if(possibleElementList != null) {
+ for(Object configOptObj : possibleElementList.getElements()) {
+ final Class configOpt = (Class)configOptObj;
+ final String simpleName = configOpt.getName();
+ final String qualifiedName = configOpt.getQualifiedName();
+
+ if(position < simpleName.length() && contents.substring(0, position).equalsIgnoreCase(simpleName.substring(0, position))) {
+ proposals.add(new DecoratedContentProposal(configOpt, labelProvider));
+ }
+
+ if(position < qualifiedName.length() && contents.substring(0, position).equalsIgnoreCase(qualifiedName.substring(0, position))) {
+ proposals.add(new DecoratedContentProposal(configOpt, qualifiedLabelProvider));
+ }
+ }
+ }
+
+ Collections.sort(proposals);
+ return proposals.toArray(new DecoratedContentProposal[proposals.size()]);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ChoosePorts.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ChoosePorts.java
new file mode 100644
index 00000000000..370b7e8641b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ChoosePorts.java
@@ -0,0 +1,231 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import java.util.ArrayList;
+import java.util.Collections;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.uml.profile.ui.dialogs.AlphabeticalViewerSorter;
+import org.eclipse.papyrus.uml.profile.ui.dialogs.ChooseSetAssistedDialog;
+import org.eclipse.papyrus.uml.profile.ui.dialogs.IChooseDialog;
+import org.eclipse.papyrus.uml.properties.profile.ui.dialogs.StereotypeQualifiedLabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+
+import FCM.InterceptionRule;
+
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+
+public class ChoosePorts extends ChooseSetAssistedDialog implements IChooseDialog {
+
+ protected EList<Package> visitedPackages;
+
+ /**
+ * LabelProvider for stereotype completion proposal provider with qualified names.
+ */
+ final private StereotypeQualifiedLabelProvider qualifiedLabelProvider = new StereotypeQualifiedLabelProvider();
+
+ /**
+ * Default Constructor.
+ *
+ * @param parentShell
+ * the parent shell
+ * @param theElement
+ * the UML element to be modified
+ */
+ public ChoosePorts(Shell parentShell, Class component, InterceptionRule rule) {
+ super(parentShell, "Available features", "Intercepted features");
+ labelProvider = new PortLabelProvider();
+ decoratedContentProposalProvider = new ConfigOptContentProposalProvider();
+
+ for(Feature feature : rule.getInterceptionSet()) {
+ selectedElementList.addElement(feature);
+ }
+
+ visitedPackages = new BasicEList<Package>();
+ if(component != null) {
+ // local rule with intercept some policy: choose executor ports
+ for(Property current : component.getOwnedAttributes()) {
+ if(!selectedElementList.contains(current)) {
+ possibleElementList.addElement(current);
+ }
+ }
+ for(Feature current : Utils.getAllElementsOfType(component, Feature.class)) {
+ if(!selectedElementList.contains(current)) {
+ possibleElementList.addElement(current);
+ }
+ }
+ } else {
+ // global rule with intercept some policy
+ // choose all ports vs. ports of "standard components"
+ Package top = Utils.getTop(rule.getBase_Property());
+ for(Feature current : Utils.getAllElementsOfType(top, Feature.class)) {
+ if(!selectedElementList.contains(current)) {
+ possibleElementList.addElement(current);
+ }
+ }
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.papyrus.ui.dialogs.ChooseSetAssistedDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+ */
+ /**
+ * Creates the dialog area.
+ *
+ * @param parent
+ * the parent
+ *
+ * @return the control
+ */
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Control composite = super.createDialogArea(parent);
+
+ // Add 2 columns to the table area
+ // possibleElementsTable.setLinesVisible(true);
+ possibleElementsTable.setHeaderVisible(true);
+
+ // 1st column with image/checkboxes - NOTE: The SWT.CENTER has no effect!!
+ TableColumn column = new TableColumn(possibleElementsTable, SWT.CENTER, 0);
+ column.setText("Port");
+ column.setWidth(60);
+ column.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ possibleElementsTableViewer.setSorter(new AlphabeticalViewerSorter(0));
+ }
+ });
+
+ // 2nd column with task Description
+ column = new TableColumn(possibleElementsTable, SWT.LEFT, 1);
+ column.setText("Type");
+ column.setWidth(100);
+ // Add listener to column so tasks are sorted by description when clicked
+ column.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ possibleElementsTableViewer.setSorter(new AlphabeticalViewerSorter(1));
+ }
+ });
+
+ // set sorter to the possible element table viewer
+ possibleElementsTableViewer.setSorter(new AlphabeticalViewerSorter(0));
+
+ return composite;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.papyrus.ui.dialogs.ChooseSetAssistedDialog#runAddElement(java.lang.String)
+ */
+ /**
+ * Run add element.
+ *
+ * @param name
+ * the name
+ */
+ @Override
+ protected void runAddElement(String name) {
+ // find the stereotype in the list
+ Port port = null;
+ for(Object possibleElement : possibleElementList.getElements()) {
+ Port element = (Port)possibleElement;
+ if(name.equalsIgnoreCase(element.getName()) || name.equalsIgnoreCase(element.getQualifiedName())) {
+ port = element;
+ }
+ }
+ if(port != null) {
+ runActionAdd(port);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.papyrus.ui.dialogs.ChooseSetAssistedDialog#isSelectableElement(java.lang.String)
+ */
+ /**
+ * Checks if is selectable element.
+ *
+ * @param text
+ * the text
+ *
+ * @return true, if is selectable element
+ */
+ @Override
+ protected boolean isSelectableElement(String text) {
+ // iterate through all possibilities and return true if text corresponds
+ for(Object possibleElement : possibleElementList.getElements()) {
+ Port element = (Port)possibleElement;
+ if(text.equalsIgnoreCase(element.getName()) || text.equalsIgnoreCase(element.getQualifiedName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Content Proposal provider for stereotypes dialog. Propose the simple
+ * name of the stereotype and its qualified name.
+ *
+ * @author Remi Schnekenburger
+ */
+ public class ConfigOptContentProposalProvider extends DecoratedContentProposalProvider {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.cea.papyrus.ui.dialogs.ChooseSetAssistedDialog.DecoratedContentProposalProvider#getProposals(java.lang.String, int)
+ */
+ /**
+ * Gets the proposals.
+ *
+ * @param contents
+ * the contents
+ * @param position
+ * the position
+ *
+ * @return the proposals
+ */
+ @Override
+ public DecoratedContentProposal[] getProposals(String contents, int position) {
+ ArrayList<DecoratedContentProposal> proposals = new ArrayList<DecoratedContentProposal>();
+
+ if(possibleElementList != null) {
+ for(Object portObj : possibleElementList.getElements()) {
+ final Port port = (Port)portObj;
+ final String simpleName = port.getName();
+ final String qualifiedName = port.getQualifiedName();
+
+ if(position < simpleName.length() && contents.substring(0, position).equalsIgnoreCase(simpleName.substring(0, position))) {
+ proposals.add(new DecoratedContentProposal(port, labelProvider));
+ }
+
+ if(position < qualifiedName.length() && contents.substring(0, position).equalsIgnoreCase(qualifiedName.substring(0, position))) {
+ proposals.add(new DecoratedContentProposal(port, qualifiedLabelProvider));
+ }
+ }
+ }
+
+ Collections.sort(proposals);
+ return proposals.toArray(new DecoratedContentProposal[proposals.size()]);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigOptionLabelProvider.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigOptionLabelProvider.java
new file mode 100644
index 00000000000..81743756677
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigOptionLabelProvider.java
@@ -0,0 +1,34 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.uml2.uml.Class;
+
+import org.eclipse.papyrus.qompass.designer.core.Description;
+
+public class ConfigOptionLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ public String getText(Object element) {
+ return ((Class)element).getName();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ if(columnIndex == 0) {
+ return getText(element);
+ } else if(columnIndex == 1) {
+ return Description.getDescription((Class)element);
+ }
+ return null;
+ }
+
+ public Image getColumnImage(Object element, int columnIndex) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigureInstanceDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigureInstanceDialog.java
new file mode 100644
index 00000000000..0e1bc786e6f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigureInstanceDialog.java
@@ -0,0 +1,515 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.qompass.designer.core.ConfigUtils;
+import org.eclipse.papyrus.qompass.designer.core.Description;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.sync.DepPlanSync;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.dialogs.SelectionStatusDialog;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.LiteralBoolean;
+import org.eclipse.uml2.uml.LiteralInteger;
+import org.eclipse.uml2.uml.LiteralString;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import FCM.ContainerRule;
+
+/**
+ * Select container rules, either from a list of globally defined rules or from
+ * local rules which may be created "on the fly" by this dialog.
+ *
+ * TODO: extend rule application to instances (problematic, since rules
+ * transformation is done on type level)
+ *
+ * @author ansgar
+ */
+public class ConfigureInstanceDialog extends SelectionStatusDialog {
+
+ protected Class m_component;
+
+ protected Label fDescriptionLabel;
+
+ protected Text fDescription;
+
+ protected TreeViewer fInstanceList;
+
+ protected TableViewer fPropertyList;
+
+ protected Property m_currentAttribute;
+
+ protected final String valueLabelPrefix = "Value:";
+
+ protected Label fValueLabel;
+
+ protected Text fValue;
+
+ protected Package m_model;
+
+ protected Feature m_feature;
+
+ protected EList<Package> visitedPackages;
+
+ protected boolean m_rulePropertiesOnly;
+
+ protected InstanceSpecification m_instance;
+
+ EList<InstanceSpecification> m_instanceList;
+
+ public ConfigureInstanceDialog(Shell parent) {
+ super(parent);
+ }
+
+ public boolean init(Class component) {
+ // visitedPackages = new BasicEList<Package> ();
+ DepPlanSync.syncAllDepPlans(component);
+ m_component = component;
+ m_instance = null;
+ m_feature = null;
+ m_model = Utils.getUserModel();
+ if(m_model == null) {
+ return false;
+ }
+ return checkAndGetInstances();
+ }
+
+ public boolean init(InstanceSpecification instance) {
+ // visitedPackages = new BasicEList<Package> ();
+ DepPlanSync.syncDepPlan(instance.getNearestPackage());
+ m_component = DepUtils.getImplementation(instance);
+ m_instance = instance;
+ m_feature = null;
+ m_model = Utils.getUserModel();
+ return checkAndGetInstances();
+ }
+
+ public boolean init(Feature feature) {
+ // visitedPackages = new BasicEList<Package> ();
+ m_feature = feature;
+ m_model = Utils.getUserModel();
+ m_instance = null;
+ if(feature instanceof Connector) {
+ FCM.Connector fcmConn = StUtils.getApplication(feature,
+ FCM.Connector.class);
+ if((fcmConn != null) && (fcmConn.getIc() != null)) {
+ m_component = fcmConn.getIc().getBase_Class();
+ return checkAndGetInstances();
+ }
+ } else if(feature instanceof Property) {
+ Type type = ((Property)feature).getType();
+ if(type instanceof Class) {
+ m_component = (Class)type;
+ return checkAndGetInstances();
+ }
+ }
+ return false;
+ }
+
+
+ /**
+ * retrieve the instance list. Returns false, if no deploymentplan could be found.
+ *
+ * @return
+ */
+ public boolean checkAndGetInstances() {
+ visitedPackages = new BasicEList<Package>();
+ m_instanceList = new BasicEList<InstanceSpecification>();
+
+ getInstances(m_instanceList);
+ if(m_instanceList.size() == 0) {
+ Shell shell = new Shell();
+ if(DepPlanUtils.getAllDepPlans(m_model).size() == 0) {
+ MessageDialog.openInformation(shell, "Instance configuration",
+ "No deployment plans are defined. Create a deployment plan before configuring instances");
+ return false;
+ }
+ else if(MessageDialog.openConfirm(shell, "Instance configuration",
+ "The list of available instances is empty. Synchronize deployment plans?")) {
+ DepPlanSync.syncAllDepPlans(m_model);
+ visitedPackages = new BasicEList<Package>();
+ getInstances(m_instanceList);
+ if(m_instanceList.size() == 0) {
+ MessageDialog.openInformation(shell, "Instance configuration",
+ "There are still no instances available\n" +
+ "Check whether you created already a deployment plan for your system." +
+ "Check as well, if the parts in your a composite use \"composite\" as aggregation kind\n." +
+ "(Results of deployment plan synchronizations will be unrolled)");
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * @see SelectionStatusDialog#computeResult()
+ */
+ protected void computeResult() {
+ // nothing to do
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite contents = (Composite)super.createDialogArea(parent);
+ // (parent, "Container rules", "Avail. extensions/interceptors");
+
+ createInstanceSelectionGroup(contents);
+ createInstanceConfigurationGroup(contents);
+ return contents;
+ }
+
+ protected void createInstanceSelectionGroup(Composite parent) {
+ Composite instanceSelection = new Composite(parent, SWT.NONE);
+ GridLayout grid = new GridLayout(1, true);
+ GridData groupGridData = new GridData();
+
+ groupGridData.grabExcessVerticalSpace = true;
+ groupGridData.grabExcessHorizontalSpace = true;
+ groupGridData.horizontalAlignment = GridData.FILL;
+ groupGridData.verticalAlignment = GridData.FILL;
+ instanceSelection.setLayout(grid);
+ instanceSelection.setLayoutData(groupGridData);
+
+ /*
+ * fRules = DialogUtils.createFilteredList (ruleSelGroup, new
+ * RuleLabelProvider(), 200, 200, SWT.BORDER | SWT.V_SCROLL |
+ * SWT.H_SCROLL);
+ */
+
+ //
+ // --------------- instance selection -------------------
+ //
+ Group instanceSelGroup = new Group(instanceSelection, SWT.BORDER);
+ instanceSelGroup.setText(" associated instance specifications ");
+ // ruleGroup.setLayout(new RowLayout (SWT.VERTICAL));
+ instanceSelGroup.setLayout(new GridLayout(1, false));
+ instanceSelGroup.setLayoutData(groupGridData);
+
+ fInstanceList = new TreeViewer(instanceSelGroup, SWT.BORDER);
+
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.heightHint = 100;
+ data.widthHint = 350;
+
+ fInstanceList.getTree().setLayoutData(data);
+ fInstanceList.setLabelProvider(new InstanceLabelProvider());
+ fInstanceList.setContentProvider(new ITreeContentProvider() {
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ public void dispose() {
+ }
+
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length > 0;
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public Object[] getElements(Object inputElement) {
+ return (Object[])inputElement;
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ if(parentElement instanceof InstanceSpecification) {
+ return DepUtils.getContainedInstances((InstanceSpecification)parentElement).toArray();
+ }
+ return new Object[0];
+ }
+ });
+
+ fInstanceList.setInput(m_instanceList.toArray());
+ fInstanceList.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = fInstanceList.getSelection();
+ if(selection instanceof StructuredSelection) {
+ Object[] selected = ((StructuredSelection)selection)
+ .toArray();
+ if((selected.length == 1)
+ && (selected[0] instanceof InstanceSpecification)) {
+ m_instance = (InstanceSpecification)selected[0];
+ Classifier cl = DepUtils.getClassifier(m_instance);
+ fPropertyList.setInput(getConfigAttributes(cl).toArray());
+ selectProperty(m_currentAttribute);
+ }
+ }
+ }
+ });
+ if(m_instance != null) {
+ int index = m_instanceList.indexOf(m_instance);
+ if(index != -1) {
+ TreeItem treeItem = fInstanceList.getTree().getItem(index);
+ fInstanceList.getTree().setSelection(treeItem);
+ }
+ }
+ }
+
+ // create instance configuration group
+ protected void createInstanceConfigurationGroup(Composite parent) {
+ GridData groupGridData = DialogUtils.createFillGridData();
+
+ Group instanceConfigurationGroup = new Group(parent, SWT.BORDER);
+ instanceConfigurationGroup.setText(" Configuration ");
+ instanceConfigurationGroup.setLayout(new RowLayout(SWT.VERTICAL));
+ instanceConfigurationGroup.setLayout(new GridLayout(1, false));
+ instanceConfigurationGroup.setLayoutData(groupGridData);
+
+ // fRuleName = new Text (ruleInfoGroup, SWT.NONE);
+ Label configL = new Label(instanceConfigurationGroup, SWT.NONE);
+ configL.setText("Available properties:");
+
+ fPropertyList = new TableViewer(instanceConfigurationGroup, SWT.BORDER);
+ fPropertyList.setLabelProvider(new AttributeLabelProvider());
+ fPropertyList.setContentProvider(new ArrayContentProvider());
+ fPropertyList.setInput(getConfigAttributes(m_component).toArray());
+ fPropertyList
+ .addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = fPropertyList.getSelection();
+ if(selection instanceof StructuredSelection) {
+ Object[] selected = ((StructuredSelection)selection)
+ .toArray();
+ if((selected.length == 1)
+ && (selected[0] instanceof Property)) {
+ selectProperty((Property)selected[0]);
+ }
+ }
+ }
+ });
+
+ fValueLabel = new Label(instanceConfigurationGroup, SWT.NONE);
+
+ GridData span2 = new GridData();
+ span2.horizontalAlignment = GridData.FILL;
+ span2.grabExcessHorizontalSpace = true;
+ span2.heightHint = 70;
+ fPropertyList.getTable().setLayoutData(span2);
+
+ fValue = new Text(instanceConfigurationGroup, SWT.WRAP);
+ span2 = new GridData();
+ span2.horizontalAlignment = GridData.FILL;
+ span2.grabExcessHorizontalSpace = true;
+ fValue.setLayoutData(span2);
+ fValue.addFocusListener(new FocusListener() {
+
+ public void focusLost(FocusEvent e) {
+ // store value, once focus is lost (different element is
+ // selected)
+ String valueStr = fValue.getText();
+ Slot valueSlot = null;
+ if(m_instance == null) {
+ // no instance has been selected
+ // (field should be inactive, if not selected)
+ return;
+ }
+ for(Slot slot : m_instance.getSlots()) {
+ if(slot.getDefiningFeature() == m_currentAttribute) {
+ valueSlot = slot;
+ }
+ }
+ if(valueSlot == null) {
+ // slot does not exist yet, create
+ valueSlot = DepCreation.createSlotForConfigProp(m_instance,
+ m_currentAttribute);
+ }
+ for(ValueSpecification value : valueSlot.getValues()) {
+ if(value instanceof LiteralString) {
+ ((LiteralString)value).setValue(valueStr);
+ } else if(value instanceof LiteralInteger) {
+ ((LiteralInteger)value).setValue(Integer
+ .parseInt(valueStr));
+ } else if(value instanceof LiteralBoolean) {
+ ((LiteralBoolean)value).setValue(Boolean
+ .parseBoolean(valueStr));
+ }
+ }
+ }
+
+ public void focusGained(FocusEvent e) {
+ }
+ });
+
+ fDescriptionLabel = new Label(instanceConfigurationGroup, SWT.NONE);
+ fDescriptionLabel.setText("Description:");
+ fDescriptionLabel.setLayoutData(span2);
+
+ span2 = new GridData();
+ span2.horizontalAlignment = GridData.FILL;
+ span2.grabExcessHorizontalSpace = true;
+ span2.grabExcessVerticalSpace = true;
+ span2.verticalAlignment = GridData.FILL;
+ span2.heightHint = 80;
+
+ fDescription = new Text(instanceConfigurationGroup, SWT.NONE | SWT.WRAP
+ | SWT.V_SCROLL | SWT.READ_ONLY);
+ fDescription.setLayoutData(span2);
+ // createMessageArea (ruleInfoGroup);
+ instanceConfigurationGroup.pack();
+ setEnabled(false);
+ }
+
+ /**
+ * Select a rule, i.e. update the visual representation from the rule
+ *
+ * @param rule
+ */
+ protected void selectProperty(Property attribute) {
+ m_currentAttribute = attribute;
+ if((attribute == null) || (fValue == null)) {
+ setEnabled(false);
+ return;
+ }
+ setEnabled(true);
+ fDescription.setText(Description.getDescription(attribute, "not available"));
+ fValueLabel.setText(getValueLabel(attribute));
+ for(Slot slot : m_instance.getSlots()) {
+ if(slot.getDefiningFeature() == m_currentAttribute) {
+ for(ValueSpecification value : slot.getValues()) {
+ if(value instanceof LiteralInteger) {
+ Integer intVal = ((LiteralInteger)value).getValue();
+ fValue.setText(intVal.toString());
+ return;
+ }
+ else if(value instanceof LiteralBoolean) {
+ Boolean boolVal = ((LiteralBoolean)value).booleanValue();
+ fValue.setText(boolVal.toString());
+ return;
+ }
+ else if(value instanceof LiteralString) {
+ fValue.setText(((LiteralString)value).getValue());
+ return;
+ }
+ }
+ }
+ }
+ fValue.setText("");
+ }
+
+ private void setEnabled(boolean enabled) {
+ fDescriptionLabel.setEnabled(enabled);
+ fDescription.setEnabled(enabled);
+ fValueLabel.setEnabled(enabled);
+ fValue.setEnabled(enabled);
+ if(!enabled) {
+ fValue.setText("");
+ fDescription.setText("");
+ fValueLabel.setText(valueLabelPrefix);
+ }
+ }
+
+ private String getValueLabel(Property attribute) {
+ String label = valueLabelPrefix;
+ if(attribute.getDefault() != null) {
+ return label + " (Default = " + attribute.getDefault() + ")";
+ }
+ return label;
+ }
+
+ // TODO(?): need a generic utility function for getting all elements obeying a
+ // certain criteria from a model
+ void getInstances(EList<InstanceSpecification> instanceList) {
+ Package deploymentPlans = Utils.getRoot(m_model, DepPlanUtils.depPlanFolder);
+ String featureCandidateName = null;
+ if(deploymentPlans == null) {
+ return;
+ }
+ for(PackageableElement deploymentPlan : deploymentPlans
+ .getPackagedElements()) {
+ if(deploymentPlan instanceof Package) {
+ for(PackageableElement instance : ((Package)deploymentPlan).getPackagedElements()) {
+ if(instance instanceof InstanceSpecification) {
+ InstanceSpecification candidate = (InstanceSpecification)instance;
+ if(m_feature instanceof Property) {
+ for(Slot slot : candidate.getSlots()) {
+ if(slot.getDefiningFeature() == m_feature) {
+ instanceList
+ .add(DepUtils.getInstance(slot));
+ }
+ }
+ } else if(m_feature instanceof Connector) {
+ // Connector cannot be found directly, since there is no slot in containing composite (defining
+ // feature is a structural-feature, not a feature): find via name.
+ Element owner = m_feature.getOwner();
+ if(DepUtils.getImplementation(candidate) == owner) {
+ // instance is for owner of feature: examine name
+ featureCandidateName = candidate.getName() + "." + m_feature.getName();
+ }
+ else if(featureCandidateName != null) {
+ if(featureCandidateName.equals(candidate.getName())) {
+ instanceList.add(candidate);
+ }
+ }
+ } else if(DepUtils.getImplementation(candidate) == m_component) {
+ instanceList.add(candidate);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private EList<Property> getConfigAttributes(Classifier component) {
+ EList<Property> list = new BasicEList<Property>();
+ // add properties of component
+ list.addAll(ConfigUtils.getConfigAttributes(component));
+ // now add properties of container rules
+ // TODO: is it possible that multiple container extensions of the same
+ // type exist, and if yes, how do we configure these?
+ if(component instanceof Class) {
+ EList<ContainerRule> rules = Utils.getRules((Class)component);
+ if(rules != null) {
+ for(ContainerRule aRule : rules) {
+ // (many, in case of a composite rule)
+ try {
+ list.addAll(ConfigUtils.getConfigAttributes(aRule));
+ } catch (TransformationException e) {
+ }
+ }
+ }
+ }
+ return list;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigurePortDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigurePortDialog.java
new file mode 100644
index 00000000000..a51c9a4ff98
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConfigurePortDialog.java
@@ -0,0 +1,360 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import java.util.Collections;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.papyrus.infra.widgets.editors.TreeSelectorDialog;
+import org.eclipse.papyrus.uml.tools.providers.ServiceEditFilteredContentProvider;
+import org.eclipse.papyrus.uml.tools.providers.UMLLabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.SelectionStatusDialog;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import FCM.PortKind;
+
+import org.eclipse.papyrus.qompass.designer.core.Description;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+/**
+ * Select container rules, either from a list of globally defined rules or from
+ * local rules which may be created "on the fly" by this dialog.
+ *
+ * TODO: extend rule application to instances (problematic, since rules
+ * transformation is done on type level)
+ *
+ * @author ansgar
+ */
+public class ConfigurePortDialog extends SelectionStatusDialog {
+
+ protected Class m_component;
+
+ protected Text fDescription;
+
+ protected TableViewer fPortList;
+
+ protected Port m_currentPort;
+
+ protected Combo fKindCombo;
+
+ protected EList<PortKind> portKindList;
+
+ protected Label fType;
+
+ protected Button fTypeButton;
+
+ protected Label fProvided;
+
+ protected Label fRequired;
+
+ protected Package m_model;
+
+ protected EList<Port> m_ports;
+
+ public ConfigurePortDialog(Shell parent) {
+ super(parent);
+ }
+
+ public boolean init(Port port) {
+ // visitedPackages = new BasicEList<Package> ();
+ m_component = port.getClass_();
+ m_currentPort = port; // preselect port (don't call selectPort before initialization of dialog area);
+ m_model = Utils.getTop(m_component);
+ m_ports = PortUtils.getAllPorts(m_component);
+ return true;
+ }
+
+ public boolean init(Class clazz) {
+ // visitedPackages = new BasicEList<Package> ();
+ m_component = clazz;
+ m_model = Utils.getTop(m_component);
+ m_currentPort = null;
+ m_ports = PortUtils.getAllPorts(m_component);
+ return true;
+ }
+
+
+ /**
+ * @see SelectionStatusDialog#computeResult()
+ */
+ protected void computeResult() {
+ // nothing to do
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite contents = (Composite)super.createDialogArea(parent);
+ // (parent, "Container rules", "Avail. extensions/interceptors");
+
+ createPortConfigurationGroup(contents);
+ if(m_currentPort != null) {
+ int index = m_ports.indexOf(m_currentPort);
+ if(index != -1) {
+ fPortList.getTable().setSelection(index);
+ selectPort(m_currentPort);
+ }
+ }
+ return contents;
+ }
+
+ // create instance configuration group
+ protected void createPortConfigurationGroup(Composite parent) {
+ GridData groupGridData = DialogUtils.createFillGridData();
+
+ // create grid data
+ GridData gridData = DialogUtils.createFillGridData();
+ GridData gridDataH80Span2 = DialogUtils.createFillGridData();
+ gridDataH80Span2.horizontalSpan = 2;
+ gridDataH80Span2.heightHint = 80;
+ GridData gridDataH25Span2 = DialogUtils.createFillGridData();
+ gridDataH25Span2.horizontalSpan = 2;
+ gridDataH25Span2.heightHint = 25;
+ GridData gridDataH60 = DialogUtils.createFillGridData();
+ gridDataH60.heightHint = 60;
+ GridData gridDataSpan2 = DialogUtils.createFillGridData();
+ gridDataSpan2.horizontalSpan = 2;
+
+ // fRuleName = new Text (ruleInfoGroup, SWT.NONE);
+ Group portSelection = new Group(parent, SWT.BORDER);
+ portSelection.setLayout(new GridLayout(1, false));
+ // configL.setLayout(new RowLayout());
+
+ portSelection.setText(" Available Ports ");
+ portSelection.setLayoutData(gridDataH60);
+
+ fPortList = new TableViewer(portSelection, SWT.BORDER);
+ fPortList.setLabelProvider(new PortLabelProvider());
+ fPortList.setContentProvider(new ArrayContentProvider());
+ fPortList.setInput(m_ports.toArray());
+ fPortList.getTable().setLayoutData(gridDataH60);
+ fPortList.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = fPortList.getSelection();
+ if(selection instanceof StructuredSelection) {
+ Object[] selected = ((StructuredSelection)selection)
+ .toArray();
+ if((selected.length == 1)
+ && (selected[0] instanceof Port)) {
+ selectPort((Port)selected[0]);
+ }
+ }
+ }
+ });
+ portSelection.pack();
+
+ Group instanceConfigurationGroup = new Group(parent, SWT.BORDER);
+ instanceConfigurationGroup.setText(" Port configuration ");
+ instanceConfigurationGroup.setLayout(new GridLayout(2, false));
+ instanceConfigurationGroup.setLayoutData(groupGridData);
+
+ Label kindText = new Label(instanceConfigurationGroup, SWT.NONE);
+ kindText.setText("Kind:");
+
+ fKindCombo = new Combo(instanceConfigurationGroup, SWT.NONE);
+ portKindList = getAvailableKinds(m_model);
+ String[] portKindStrList = new String[portKindList.size() + 1];
+ portKindStrList[0] = "none";
+ for(int i = 0; i < portKindList.size(); i++) {
+ portKindStrList[i + 1] = portKindList.get(i).getBase_Class().getName();
+ }
+ fKindCombo.setItems(portKindStrList);
+ fKindCombo.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ // changePortKind
+ FCM.Port fcmPort = StUtils.applyApp(m_currentPort, FCM.Port.class);
+ if(fcmPort != null)
+ {
+ int index = fKindCombo.getSelectionIndex();
+ if(index > 0) {
+ PortKind kind = portKindList.get(index - 1);
+ fcmPort.setKind(kind);
+ selectPort(m_currentPort);
+ }
+ else {
+ StUtils.unapply(m_currentPort, FCM.Port.class);
+ selectPort(m_currentPort);
+ }
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ Label fTypeLabel = new Label(instanceConfigurationGroup, SWT.NONE);
+ fTypeLabel.setText("Type:");
+ fTypeLabel.setLayoutData(gridData);
+
+ fType = new Label(instanceConfigurationGroup, SWT.NONE);
+ fType.setLayoutData(gridData);
+
+ fTypeButton = new Button(instanceConfigurationGroup, SWT.NONE);
+ fTypeButton.setText("change type");
+ fTypeButton.setLayoutData(gridDataH25Span2);
+ fTypeButton.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ // use Papyrus type selection dialog ...
+ TreeSelectorDialog tsd = new TreeSelectorDialog(new Shell());
+
+ EStructuralFeature feature = UMLPackage.eINSTANCE.getTypedElement_Type();
+ ServiceEditFilteredContentProvider contentProvider =
+ new ServiceEditFilteredContentProvider(m_currentPort, feature, new EObject[] { m_model });
+
+ EList<EClassifier> wantedMetaClasses = new BasicEList<EClassifier>();
+ wantedMetaClasses.add(feature.getEType());
+ contentProvider.setWantedMetaclasses(wantedMetaClasses);
+ contentProvider.setNotWantedMetaclasses(Collections.EMPTY_LIST);
+ tsd.setContentProvider(contentProvider);
+ tsd.setLabelProvider(new UMLLabelProvider());
+ tsd.open();
+ Object result[] = tsd.getResult();
+ if(result.length == 1) {
+ if(result[0] instanceof IAdaptable) {
+ Object type = ((IAdaptable)result[0]).getAdapter(EObject.class);
+ if(type instanceof Type) {
+ m_currentPort.setType((Type)type);
+ selectPort(m_currentPort);
+ }
+ }
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ // Label emptySpace = new Label(instanceConfigurationGroup, SWT.NONE);
+ // emptySpace.setLayoutData(gridDataSpan2);
+
+
+ // Composite derivedInterfaces = new Composite(instanceConfigurationGroup, SWT.NONE);
+ Group derivedInterfaces = new Group(instanceConfigurationGroup, SWT.NONE);
+ derivedInterfaces.setLayout(new GridLayout(2, false));
+
+ // Label dil = new Label(derivedInterfaces, SWT.NONE);
+ // dil.setText("Interfaces derived from port kind");
+ derivedInterfaces.setText("Interfaces derived from kind and type");
+ // dil.setLayoutData(gridDataSpan2);
+ derivedInterfaces.setLayoutData(gridDataSpan2);
+
+ Label fProvidedLabel = new Label(derivedInterfaces, SWT.NONE);
+ fProvidedLabel.setText("Provided:");
+ fProvided = new Label(derivedInterfaces, SWT.NONE);
+ fProvided.setLayoutData(gridData);
+
+ Label fRequiredLabel = new Label(derivedInterfaces, SWT.NONE);
+ fRequiredLabel.setText("Required:");
+ fRequired = new Label(derivedInterfaces, SWT.NONE);
+ fRequired.setLayoutData(gridData);
+ derivedInterfaces.pack();
+
+ fDescription = new Text(instanceConfigurationGroup, SWT.NONE | SWT.WRAP
+ | SWT.V_SCROLL | SWT.READ_ONLY);
+ fDescription.setLayoutData(gridDataH80Span2);
+ // createMessageArea (ruleInfoGroup);
+ instanceConfigurationGroup.pack();
+ setEnabled(false);
+ }
+
+ /**
+ * Select a rule, i.e. update the visual representation from the rule
+ *
+ * @param rule
+ */
+ protected void selectPort(Port port) {
+ m_currentPort = port;
+ if(port == null) {
+ setEnabled(false);
+ return;
+ }
+ setEnabled(true);
+ FCM.Port fcmPort = StUtils.getApplication(port, FCM.Port.class);
+ if(port.getType() != null) {
+ fType.setText(port.getType().getQualifiedName());
+ }
+ else {
+ fType.setText("undefined");
+ }
+ if((fcmPort != null) && (fcmPort.getKind() != null)) {
+ PortKind kind = fcmPort.getKind();
+ if(portKindList.contains(kind)) {
+ int index = portKindList.indexOf(kind) + 1;
+ fKindCombo.select(index);
+ }
+ fDescription.setText(Description.getDescription(kind.getBase_Class(), "not available"));
+ Interface providedI = PortUtils.getProvided(port);
+ Interface requiredI = PortUtils.getRequired(port);
+ fProvided.setText(providedI != null ? providedI.getQualifiedName() : "none");
+ fRequired.setText(requiredI != null ? requiredI.getQualifiedName() : "none");
+ }
+ else {
+ fProvided.setText(port.getProvideds().size() > 0 ? port.getProvideds().get(0).getQualifiedName() : "none");
+ fRequired.setText(port.getRequireds().size() > 0 ? port.getRequireds().get(0).getQualifiedName() : "none");
+ fKindCombo.select(0);
+ fDescription.setText("");
+ }
+ }
+
+ private void setEnabled(boolean enabled) {
+ fDescription.setEnabled(enabled);
+ if(!enabled) {
+ fDescription.setText("");
+ }
+ }
+
+ protected EList<PortKind> getAvailableKinds(Package pkg) {
+ EList<PortKind> portKindList = new UniqueEList<PortKind>();
+ EList<Package> visitedPackages = new BasicEList<Package>();
+ getAvailableKinds(pkg, portKindList, visitedPackages);
+ return portKindList;
+ }
+
+ protected void getAvailableKinds(Package pkg, EList<PortKind> portKindList, EList<Package> visitedPackages) {
+ for(Element el : pkg.getMembers()) {
+ if(el instanceof Package) {
+ if(!visitedPackages.contains(el)) {
+ visitedPackages.add((Package)el);
+ getAvailableKinds((Package)el, portKindList, visitedPackages);
+ }
+ } else if(el instanceof Class) {
+ PortKind portKind = StUtils.getApplication((Class)el, PortKind.class);
+ if(portKind != null) {
+ portKindList.add(portKind);
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConnectorSelectionDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConnectorSelectionDialog.java
new file mode 100644
index 00000000000..3959132a69a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ConnectorSelectionDialog.java
@@ -0,0 +1,349 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+
+import java.util.Arrays;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.AbstractElementListSelectionDialog;
+import org.eclipse.ui.dialogs.FilteredList;
+import org.eclipse.ui.dialogs.SelectionStatusDialog;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.InteractionComponent;
+
+import org.eclipse.papyrus.qompass.designer.core.Description;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.templates.ConnectorBinding;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Select a connector type and implementation (group)
+ * TODO: show information about the used connector [usage, implem properties, ...]
+ * similar help for ports?
+ *
+ * @author ansgar
+ *
+ */
+public class ConnectorSelectionDialog extends AbstractElementListSelectionDialog {
+
+ protected Package m_model;
+
+ protected EList<Package> visitedPackages;
+
+ protected Text m_description;
+
+ protected Button fTypeOnly;
+
+ private EList<Class> connectorList;
+
+ private Feature m_selectedConnector;
+
+ private Object[] fUpperElements;
+
+ protected FilteredList fUpper;
+
+ protected FilteredList fLower;
+
+ private InteractionComponent initialSelection = null;
+
+ public ConnectorSelectionDialog(Shell parent, Package model, Feature selectedConnector) {
+ super(parent, new QNameLabelProvider());
+ connectorList = new BasicEList<Class>();
+ visitedPackages = new BasicEList<Package>();
+ getAllConnectors(model, selectedConnector, connectorList);
+ m_selectedConnector = selectedConnector;
+ setMultipleSelection(false);
+ m_model = model;
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite contents = (Composite)super.createDialogArea(parent);
+ createMessageArea(contents);
+ // createLabel(contents, "Connector type");
+ GridData gridData = DialogUtils.createFillGridData();
+ gridData.heightHint = 200;
+
+ Group fUpperGroup = new Group(contents, SWT.NONE);
+ fUpperGroup.setLayout(new GridLayout());
+ fUpperGroup.setLayoutData(gridData);
+ fUpperGroup.setText(" Abstract interaction components ");
+ createFilterText(fUpperGroup);
+ fUpper = createFilteredList(fUpperGroup);
+
+ final Group fLowerGroup = new Group(contents, SWT.NONE);
+ fLowerGroup.setLayout(new GridLayout());
+ fLowerGroup.setLayoutData(gridData);
+ fLowerGroup.setText(" Realizations/groups of interaction components ");
+ // createLabel(contents, lowerLabel);
+ fLower = createFilteredList(fLowerGroup);
+ fFilteredList = fUpper;
+ FCM.Connector fcmConnector = StUtils.getApplication(m_selectedConnector, FCM.Connector.class);
+ if(fcmConnector != null) {
+ // getInitialElementSelections();
+ initialSelection = fcmConnector.getIc();
+ } else {
+ initialSelection = null;
+ }
+
+ fTypeOnly = new Button(contents, SWT.CHECK);
+ fTypeOnly.setText("Select type only");
+ SelectionListener fTypeOnlySL = new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ if(fTypeOnly.getSelection()) {
+ fLower.setEnabled(false);
+ fLowerGroup.setEnabled(false);
+ fLower.setSelection(new int[0]);
+ fLower.setElements(null);
+ }
+ else {
+ fLower.setEnabled(true);
+ fLowerGroup.setEnabled(true);
+ handleSelectionChanged();
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ };
+ fTypeOnly.addSelectionListener(fTypeOnlySL);
+
+ fUpper.setElements(connectorList.toArray());
+
+ // create initial selections
+ if(initialSelection instanceof InteractionComponent) {
+ InteractionComponent componentComp = initialSelection;
+ Class componentCompBase = componentComp.getBase_Class();
+ if(!componentCompBase.isAbstract()) {
+ // get first superclass that is a component type
+ Class componentTypeBase = Utils.componentType(componentCompBase);
+ componentComp = StUtils.getApplication(componentTypeBase, InteractionComponent.class);
+ } else {
+ // fLower.setEnabled (false);
+ // fLowerGroup.setEnabled(false);
+ fTypeOnly.setSelection(true);
+ }
+ // update status (listener does not evaluate passed data)
+ fTypeOnlySL.widgetSelected(null);
+
+ // set initial selections
+ fUpper.setSelection(new Object[]{ componentComp.getBase_Class() });
+ }
+
+ Label info = createMessageArea(contents);
+ info.setText("Information about connector implementation:");
+ // m_description = createMessageArea(contents);
+
+ GridData descriptionGD = new GridData();
+ descriptionGD.horizontalAlignment = GridData.FILL;
+ descriptionGD.grabExcessHorizontalSpace = true;
+ descriptionGD.heightHint = 80;
+ descriptionGD.grabExcessVerticalSpace = true;
+ descriptionGD.verticalAlignment = GridData.FILL;
+
+ m_description = new Text(contents, SWT.NONE | SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
+ m_description.setLayoutData(descriptionGD);
+
+ fLower.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ Object[] selected = fLower.getSelection();
+ if((selected.length > 0) && (selected[0] instanceof NamedElement)) {
+ NamedElement selectedNE = (NamedElement)selected[0];
+ m_description.setText(Description.getDescription(selectedNE));
+ }
+ else {
+ m_description.setText("");
+ updateOkState();
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+
+ return contents;
+ }
+
+ @Override
+ /**
+ * Update the enablement of the OK button based on whether or not there
+ * is a selection.
+ *
+ */
+ protected void updateOkState() {
+ if(fTypeOnly.getSelection()) {
+ super.updateOkState();
+ } else {
+ Button okButton = getOkButton();
+ if(okButton != null) {
+ okButton.setEnabled(fLower.getSelection().length != 0);
+ }
+ }
+ }
+
+
+ protected Label createLabel(Composite parent, String name) {
+ if(name == null) {
+ return null;
+ }
+ Label label = new Label(parent, SWT.NONE);
+ label.setText(name);
+ label.setFont(parent.getFont());
+ return label;
+ }
+
+ /**
+ * Creates a label if name was not <code>null</code>.
+ *
+ * @param parent
+ * the parent composite.
+ * @param name
+ * the name of the label.
+ * @return returns a label if a name was given, <code>null</code> otherwise.
+ */
+
+
+ /**
+ * @see SelectionStatusDialog#computeResult()
+ */
+ protected void computeResult() {
+ Object[] result = new Object[]{ getSelectedElement(fTypeOnly.getSelection()) };
+ setResult(Arrays.asList(result));
+ }
+
+ /**
+ * @see AbstractElementListSelectionDialog#handleDefaultSelected()
+ */
+ protected void handleDefaultSelected() {
+ if(validateCurrentSelection() && (getSelectedElement(false) != null)) {
+ buttonPressed(IDialogConstants.OK_ID);
+ }
+ }
+
+ /**
+ * @see AbstractElementListSelectionDialog#handleSelectionChanged()
+ */
+ protected void handleSelectionChanged() {
+ handleUpperSelectionChanged();
+ }
+
+ private void handleUpperSelectionChanged() {
+ int index = getSelectionIndex();
+ if(index >= 0) {
+ fUpperElements = getFoldedElements(index);
+
+ if((fUpperElements == null) || fTypeOnly.getSelection()) {
+ // lower list remains empty, if typeOnly is true
+ fLower.setElements(new Object[]{});
+ } else {
+ fLower.setElements(getLowerList(fUpperElements[0]));
+ if(initialSelection instanceof InteractionComponent) {
+ // select existing selection in lower section
+ fLower.setSelection(new Object[]{ initialSelection });
+ // do not try to set it again.
+ initialSelection = null;
+ }
+ }
+ }
+ validateCurrentSelection();
+ }
+
+ /**
+ * Returns the selected element from the upper or lower pane.
+ *
+ * @return Object
+ */
+ protected Object getSelectedElement(boolean upper) {
+ Object[] selection;
+ if(upper) {
+ selection = fFilteredList.getSelection();
+ } else {
+ selection = fLower.getSelection();
+ }
+ if(selection.length > 0) {
+ return selection[0];
+ }
+ return null;
+ }
+
+ protected Object[] getLowerList(Object selectedUpperObj) {
+ EList<Class> connectorList = new UniqueEList<Class>();
+ if(selectedUpperObj instanceof Class) {
+ visitedPackages = new BasicEList<Package>();
+ getImplGroups(m_model, (Class)selectedUpperObj, connectorList);
+ }
+ return connectorList.toArray();
+ }
+
+ void getAllConnectors(Package pkg, Feature selectedConnector, EList<Class> connectorList) {
+ for(Element el : pkg.getMembers()) {
+ if(el instanceof Package) {
+ if(!visitedPackages.contains(el)) {
+ visitedPackages.add((Package)el);
+ getAllConnectors((Package)el, selectedConnector, connectorList);
+ }
+ } else if(el instanceof Class) {
+ if(StUtils.isApplied(el, InteractionComponent.class) && Utils.isCompType((Class)el)) {
+
+ if(selectedConnector == null) {
+ connectorList.add((Class)el);
+ } else {
+ try {
+ Element owner = (Class)selectedConnector.getOwner();
+ if(owner instanceof Class) {
+ Class composite = (Class)owner;
+ Log.log(Log.INFO_MSG, Log.DIALOGS, "ConnectorSelectionDialog.getAllConnectors: try to bind connector " +
+ ((Class)el).getQualifiedName());
+ ConnectorBinding.obtainBinding(composite, selectedConnector, (Class)el, false);
+ connectorList.add((Class)el);
+ } else {
+ connectorList.add((Class)el);
+ }
+ } catch (TransformationException e) {
+ // ignore error (normal, since potentially incompatible connectors are tried out)
+ // System.err.println(e);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ void getImplGroups(Package pkg, Class selectedConnType, EList<Class> implGroupList) {
+ for(Element el : pkg.getMembers()) {
+ if(el instanceof Package) {
+ if(!visitedPackages.contains(el)) {
+ visitedPackages.add((Package)el);
+ getImplGroups((Package)el, selectedConnType, implGroupList);
+ }
+ } else if(el instanceof Class) {
+ Class class_ = (Class)el;
+ if(class_.getGeneralization(selectedConnType) != null) {
+ implGroupList.add((Class)el);
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ContainerDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ContainerDialog.java
new file mode 100644
index 00000000000..037f82a11e1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/ContainerDialog.java
@@ -0,0 +1,290 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.papyrus.qompass.designer.core.Description;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.SelectionStatusDialog;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import FCM.ContainerRule;
+import FCM.RuleApplication;
+
+/**
+ * Select container rules, either from a list of globally defined rules
+ * or from local rules which may be created "on the fly" by this dialog.
+ *
+ * TODO: extend rule application to instances (problematic, since rules transformation
+ * is done on type level)
+ *
+ * @author ansgar
+ */
+public class ContainerDialog extends SelectionStatusDialog {
+
+ protected Class m_component;
+
+ // protected EList<Package> visitedPackages;
+ protected Text fDescription;
+
+ // protected FilteredList fRules;
+ protected CheckboxTableViewer fRules;
+
+ // protected Combo fInterceptionKind;
+
+ // protected Button fInterButton;
+
+ // protected Label fPortLabel;
+ // protected Text fRuleName;
+ // protected Button fOptionButton;
+
+ // protected Button fPortButton;
+
+ protected ContainerRule m_currentRule;
+
+ protected Package m_model;
+
+ protected boolean m_rulePropertiesOnly;
+
+ public ContainerDialog(Shell parent, Class componentOrRule) {
+ super(parent);
+ // visitedPackages = new BasicEList<Package> ();
+ m_rulePropertiesOnly = StUtils.isApplied(componentOrRule, ContainerRule.class);
+ if(m_rulePropertiesOnly) {
+ // m_currentRule = StUtils.getApplication(componentOrRule, ContainerRule.class);
+ } else {
+ m_component = componentOrRule;
+ }
+ m_model = Utils.getTop(componentOrRule);
+ }
+
+ /**
+ * @see SelectionStatusDialog#computeResult()
+ */
+ protected void computeResult() {
+ // nothing to do
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite contents = (Composite)super.createDialogArea(parent);
+ // (parent, "Container rules", "Avail. extensions/interceptors");
+
+ if(m_rulePropertiesOnly) {
+ createRuleInfoGroup(contents);
+ selectRule(m_currentRule);
+ } else {
+ createRuleSelectionGroup(contents);
+ createRuleInfoGroup(contents);
+ }
+ return contents;
+ }
+
+ protected void createRuleSelectionGroup(Composite parent) {
+ Composite ruleSelections = new Composite(parent, SWT.NONE);
+ GridLayout grid = new GridLayout(1, true);
+ GridData groupGridData = new GridData();
+ // data3.widthHint = 400;
+ // data3.heightHint = 300;
+ groupGridData.grabExcessVerticalSpace = true;
+ groupGridData.grabExcessHorizontalSpace = true;
+ groupGridData.horizontalAlignment = GridData.FILL;
+ groupGridData.verticalAlignment = GridData.FILL;
+ ruleSelections.setLayout(grid);
+ ruleSelections.setLayoutData(groupGridData);
+ ruleSelections.setSize(400, 300);
+
+ /*
+ * fRules = DialogUtils.createFilteredList (ruleSelGroup, new RuleLabelProvider(), 200, 200,
+ * SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ */
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.heightHint = 150;
+ data.widthHint = 200;
+
+ ICheckStateListener checkListener = new ICheckStateListener() {
+
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ Object obj = event.getElement();
+ if(obj instanceof ContainerRule) {
+ ContainerRule rule = (ContainerRule)obj;
+ if(event.getChecked()) {
+ applyRule(rule);
+ }
+ else {
+ unapplyRule(rule);
+ }
+ }
+ }
+ };
+
+ //
+ // --------------- global rules -------------------
+ //
+ Group gRuleSelGroup = new Group(ruleSelections, SWT.BORDER);
+ gRuleSelGroup.setText(" available rules ");
+ // ruleGroup.setLayout(new RowLayout (SWT.VERTICAL));
+ gRuleSelGroup.setLayout(new GridLayout(1, false));
+ gRuleSelGroup.setLayoutData(groupGridData);
+
+ EList<ContainerRule> globalRuleList = Utils.getAllRules(m_model);
+ // Table table = new Table(gRuleSelGroup, SWT.CHECK);
+ fRules = CheckboxTableViewer.newCheckList(gRuleSelGroup, SWT.BORDER);
+ // fRules = new CheckboxTableViewer(table);
+
+
+ GridData data2 = new GridData(GridData.FILL_BOTH);
+ data2.heightHint = 200;
+ // data.widthHint = 200;
+ fRules.getTable().setLayoutData(data);
+ fRules.setLabelProvider(new RuleLabelProvider());
+ fRules.setContentProvider(new ArrayContentProvider());
+
+ fRules.setInput(globalRuleList.toArray());
+ for(ContainerRule rule : globalRuleList) {
+ if(isRuleApplied(rule)) {
+ fRules.setChecked(rule, true);
+ }
+ }
+ fRules.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = fRules.getSelection();
+ if(selection instanceof StructuredSelection) {
+ Object[] selected = ((StructuredSelection)selection).toArray();
+ if((selected.length == 1) && (selected[0] instanceof ContainerRule)) {
+ if(m_currentRule != selected[0]) {
+ selectRule((ContainerRule)selected[0]);
+ }
+ }
+ }
+ }
+ });
+ fRules.addCheckStateListener(checkListener);
+ }
+
+ protected void createRuleInfoGroup(Composite parent) {
+ GridData groupGridData = DialogUtils.createFillGridData();
+ // data3.widthHint = 400;
+ // data3.heightHint = 300;
+
+ Group ruleInfoGroup = new Group(parent, SWT.BORDER);
+ ruleInfoGroup.setText(" rule information ");
+ // ruleGroup.setLayout(new RowLayout (SWT.VERTICAL));
+ ruleInfoGroup.setLayout(new GridLayout(2, false));
+ ruleInfoGroup.setLayoutData(groupGridData);
+
+ GridData span2 = new GridData();
+ span2.horizontalSpan = 2;
+ span2.horizontalAlignment = GridData.FILL;
+ span2.grabExcessHorizontalSpace = true;
+ span2.grabExcessVerticalSpace = true;
+ span2.verticalAlignment = GridData.FILL;
+ span2.heightHint = 80;
+
+
+ fDescription = new Text(ruleInfoGroup, SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
+ fDescription.setLayoutData(span2);
+ // createMessageArea (ruleInfoGroup);
+ ruleInfoGroup.pack();
+ // fPortLabel = new Label (ruleInfoGroup, SWT.NONE);
+ // fPortLabel.setText ("for Ports");
+ // fPortLabel.setEnabled (false);
+ }
+
+ /**
+ * Select a rule, i.e. update the visual representation from the rule
+ *
+ * @param rule
+ */
+ protected void selectRule(ContainerRule rule) {
+ m_currentRule = rule;
+ fDescription.setText(Description.getDescription(rule.getBase_Class()));
+ }
+
+ /**
+ * Helper: add a local container rule to the current class
+ *
+ * @param name
+ * the name of the local rule
+ * @return
+ */
+ ContainerRule addRule(String name) {
+ Class ruleCl = (Class)
+ m_component.createNestedClassifier(name, UMLPackage.eINSTANCE.getClass_());
+ StUtils.apply(ruleCl, ContainerRule.class);
+ return StUtils.getApplication(ruleCl, ContainerRule.class);
+ }
+
+ /**
+ * Helper function: delete a container rule from a class
+ *
+ * @param rule
+ */
+ void deleteRule(ContainerRule rule) {
+ Classifier ruleCl = m_component.getNestedClassifier(rule.getBase_Class().getName());
+ if(ruleCl instanceof Class) {
+ ruleCl.destroy();
+ }
+ }
+
+ /**
+ * Helper: apply a container rule to current component
+ *
+ * @param rule
+ */
+ void applyRule(ContainerRule rule) {
+ if(!StUtils.isApplied(m_component, RuleApplication.class)) {
+ StUtils.apply(m_component, RuleApplication.class);
+ }
+ RuleApplication containerConfig =
+ StUtils.getApplication(m_component, RuleApplication.class);
+ containerConfig.getContainerRule().add(rule);
+ }
+
+ /**
+ * Helper: apply a container rule to current component
+ *
+ * @param rule
+ */
+ void unapplyRule(ContainerRule rule) {
+ RuleApplication containerConfig =
+ StUtils.getApplication(m_component, RuleApplication.class);
+ int index = containerConfig.getContainerRule().indexOf(rule);
+ if((index >= 0) && (index < containerConfig.getContainerRule().size())) {
+ containerConfig.getContainerRule().remove(index);
+ }
+ }
+
+ /**
+ * check whether a container rule is applied
+ * h * @param rule
+ *
+ * @return true, if container rule is applied
+ */
+ boolean isRuleApplied(ContainerRule rule) {
+ RuleApplication containerConfig =
+ StUtils.getApplication(m_component, RuleApplication.class);
+ if(containerConfig != null) {
+ return containerConfig.getContainerRule().contains(rule);
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/DialogUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/DialogUtils.java
new file mode 100644
index 00000000000..207a44c2f70
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/DialogUtils.java
@@ -0,0 +1,89 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.dialogs.FilteredList;
+
+
+public class DialogUtils {
+
+ public static FilteredList createFilteredList(Composite parent, ILabelProvider labelProvider,
+ int width, int height, int style) {
+ FilteredList list = new FilteredList(parent, style, labelProvider,
+ true, true, true);
+
+ GridData data = new GridData();
+ data.widthHint = width;
+ // data.heightHint = convertHeightInCharsToPixels(height);
+ data.heightHint = height;
+ data.grabExcessVerticalSpace = true;
+ data.grabExcessHorizontalSpace = true;
+ data.horizontalAlignment = GridData.FILL;
+ data.verticalAlignment = GridData.FILL;
+ list.setLayoutData(data);
+ list.setFont(parent.getFont());
+ return list;
+ }
+
+ /*
+ * public static List createList (Composite parent, ILabelProvider labelProvider,
+ * int width, int height, int style)
+ * {
+ * style = SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL | style;
+ *
+ * List list = new List (parent, style);
+ *
+ * GridData data = new GridData();
+ * data.widthHint = width;
+ * // data.heightHint = convertHeightInCharsToPixels(height);
+ * data.heightHint = height;
+ * data.grabExcessVerticalSpace = true;
+ * data.grabExcessHorizontalSpace = true;
+ * data.horizontalAlignment = GridData.FILL;
+ * data.verticalAlignment = GridData.FILL;
+ * list.setLayoutData(data);
+ * list.setFont (parent.getFont());
+ * return list;
+ * }
+ */
+
+ public static Combo createComboWithText(Composite parent, String label, int flags, int compFlags) {
+ Composite comboComposite = new Composite(parent, compFlags);
+ comboComposite.setLayout(new GridLayout(2, false));
+ Label comboLabel = new Label(comboComposite, SWT.NONE);
+ comboLabel.setText(label);
+ Combo combo = new Combo(comboComposite, flags);
+ comboComposite.pack();
+ return combo;
+ }
+
+ public static Button createButtonWithText(Composite parent, String label, int flags, int compFlags) {
+ Composite buttonComposite = new Composite(parent, compFlags);
+ buttonComposite.setLayout(new GridLayout(2, false));
+ Label buttonLabel = new Label(buttonComposite, SWT.NONE);
+ buttonLabel.setText(label);
+ Button button = new Button(buttonComposite, flags);
+ buttonComposite.pack();
+ return button;
+ }
+
+ /**
+ * Create a GridData object which fills the available vertical and horizontal space
+ *
+ * @return
+ */
+ public static GridData createFillGridData() {
+ GridData gridData = new GridData();
+ gridData.grabExcessVerticalSpace = true;
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.verticalAlignment = GridData.FILL;
+ return gridData;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/GenerationOptionsDialog.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/GenerationOptionsDialog.java
new file mode 100644
index 00000000000..c212a2442ec
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/GenerationOptionsDialog.java
@@ -0,0 +1,119 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import java.util.Arrays;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.SelectionStatusDialog;
+
+import org.eclipse.papyrus.qompass.designer.core.generate.GenerationOptions;
+
+/**
+ * Select options for code generation.
+ *
+ * @author ansgar
+ */
+public class GenerationOptionsDialog extends SelectionStatusDialog implements GenerationOptions {
+
+ protected Button fButtonModelOnly;
+
+ protected Button fButtonRewriteSettings;
+
+ protected Button fButtonOnlyChanged;
+
+ protected Button fButtonCACOnly;
+
+ public static int oldResultInt = 0;
+
+ public GenerationOptionsDialog(Shell parent) {
+ super(parent);
+ }
+
+ /**
+ * @see SelectionStatusDialog#computeResult()
+ */
+ protected void computeResult() {
+ int resultInt = (isRewriteSettings() ? REWRITE_SETTINGS : 0) +
+ (isOnlyChanged() ? ONLY_CHANGED : 0) +
+ (isModelOnly() ? MODEL_ONLY : 0) +
+ (isCACOnly() ? CAC_ONLY : 0);
+ oldResultInt = resultInt;
+ Object[] result = new Object[]{
+ resultInt
+ };
+ setResult(Arrays.asList(result));
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite contents = (Composite)super.createDialogArea(parent);
+ // (parent, "Container rules", "Avail. extensions/interceptors");
+
+ fButtonCACOnly = new Button(contents, SWT.CHECK);
+ fButtonCACOnly.setText("Only perform container and connector expansion (intermediate model without code generation)");
+ fButtonCACOnly.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ updateButtonEnableStatus();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+ fButtonCACOnly.setSelection((oldResultInt & CAC_ONLY) != 0);
+
+ fButtonModelOnly = new Button(contents, SWT.CHECK);
+ fButtonModelOnly.setText("Only generate model (not code)");
+ fButtonModelOnly.addSelectionListener(new SelectionListener() {
+
+ public void widgetSelected(SelectionEvent e) {
+ // only write types that have changed does not make sense, if the whole directory is cleaned
+ boolean modelOnly = fButtonModelOnly.getSelection();
+ fButtonOnlyChanged.setEnabled(!modelOnly);
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+ fButtonModelOnly.setSelection((oldResultInt & MODEL_ONLY) != 0);
+
+ fButtonRewriteSettings = new Button(contents, SWT.CHECK);
+ fButtonRewriteSettings.setText("Rewrite project settings, if project exists already (may overwrite user settings)");
+ fButtonRewriteSettings.setSelection((oldResultInt & REWRITE_SETTINGS) != 0);
+
+ fButtonOnlyChanged = new Button(contents, SWT.CHECK);
+ fButtonOnlyChanged.setText("Experimental: only write types that have changed (based on a difference model via EMF compare)");
+ fButtonOnlyChanged.setSelection((oldResultInt & ONLY_CHANGED) != 0);
+
+ updateButtonEnableStatus();
+ return contents;
+ }
+
+ protected void updateButtonEnableStatus() {
+ boolean onlyCAC = fButtonCACOnly.getSelection();
+ boolean modelOnly = fButtonModelOnly.getSelection();
+ fButtonModelOnly.setEnabled(!onlyCAC);
+ fButtonOnlyChanged.setEnabled(!modelOnly && !onlyCAC);
+ fButtonRewriteSettings.setEnabled(!onlyCAC);
+ }
+
+ public boolean isRewriteSettings() {
+ return fButtonRewriteSettings.getSelection();
+ }
+
+ public boolean isOnlyChanged() {
+ return fButtonOnlyChanged.getSelection();
+ }
+
+ public boolean isModelOnly() {
+ return fButtonModelOnly.getSelection();
+ }
+
+ public boolean isCACOnly() {
+ return fButtonCACOnly.getSelection();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/InstanceLabelProvider.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/InstanceLabelProvider.java
new file mode 100644
index 00000000000..931c4c3cdeb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/InstanceLabelProvider.java
@@ -0,0 +1,24 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+
+public class InstanceLabelProvider extends LabelProvider {
+
+ public String getText(Object element) {
+ if (element instanceof NamedElement) {
+ String instanceName = ((NamedElement)element).getName();
+ Element owner = ((Element) element).getOwner();
+ if (owner instanceof NamedElement) {
+ return "Plan " + ((NamedElement) owner).getName() + ": " + instanceName;
+ }
+ else {
+ return instanceName;
+ }
+ }
+ else {
+ return "not a named element";
+ }
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/NameLabelProvider.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/NameLabelProvider.java
new file mode 100644
index 00000000000..646846101a1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/NameLabelProvider.java
@@ -0,0 +1,11 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.uml2.uml.NamedElement;
+
+public class NameLabelProvider extends LabelProvider {
+
+ public String getText(Object element) {
+ return ((NamedElement)element).getName();
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/PortLabelProvider.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/PortLabelProvider.java
new file mode 100644
index 00000000000..1fc97608bc2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/PortLabelProvider.java
@@ -0,0 +1,63 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.uml2.uml.Port;
+
+/**
+ * A label provider for either UML or FCM ports
+ *
+ * @author ansgar
+ *
+ */
+public class PortLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ /**
+ * small helper function: simply retrieval of port (element might be either a port or an FCM port)
+ *
+ * @param element
+ * @return
+ */
+ private Port getUMLport(Object element) {
+ if(element instanceof FCM.Port) {
+ FCM.Port port = (FCM.Port)element;
+ if(port != null) {
+ return port.getBase_Port();
+ }
+ } else if(element instanceof Port) {
+ return (Port)element;
+ }
+ return null;
+ }
+
+ public String getText(Object element) {
+ Port umlPort = getUMLport(element);
+ if(umlPort != null) {
+ return umlPort.getName();
+ }
+ return "";
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ public String getColumnText(Object element, int columnIndex) {
+ if(columnIndex == 0) {
+ return getText(element);
+ } else if(columnIndex == 1) {
+ Port umlPort = getUMLport(element);
+ if(umlPort != null) {
+ return umlPort.getType().getName();
+ }
+ }
+ return "";
+ }
+
+ public Image getColumnImage(Object element, int columnIndex) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/QNameLabelProvider.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/QNameLabelProvider.java
new file mode 100644
index 00000000000..65930b54412
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/QNameLabelProvider.java
@@ -0,0 +1,11 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.uml2.uml.NamedElement;
+
+public class QNameLabelProvider extends LabelProvider {
+
+ public String getText(Object element) {
+ return ((NamedElement)element).getQualifiedName();
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/RuleLabelProvider.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/RuleLabelProvider.java
new file mode 100644
index 00000000000..aa13a68970e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/dialogs/RuleLabelProvider.java
@@ -0,0 +1,25 @@
+package org.eclipse.papyrus.qompass.designer.core.dialogs;
+
+import org.eclipse.jface.viewers.LabelProvider;
+
+import FCM.ContainerRule;
+
+/**
+ * Return a label for ContainerRules. Since the name of the rule itself, is not
+ * really interesting for the user, the returned name is based on the interceptor
+ * (or extension)
+ *
+ * @author ansgar
+ *
+ */
+public class RuleLabelProvider extends LabelProvider {
+
+ public String getText(Object element) {
+ if(element instanceof ContainerRule) {
+ ContainerRule rule = (ContainerRule)element;
+ // TODO? Add information about contained parts?
+ return rule.getBase_Class().getName();
+ }
+ return null;
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/EmbeddingRule.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/EmbeddingRule.java
new file mode 100644
index 00000000000..597b6b99e48
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/EmbeddingRule.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Port;
+
+import org.eclipse.papyrus.qompass.designer.core.Activator;
+
+
+/**
+ * Support for embedding rules.
+ * Currently not used, unclear if kept
+ */
+@Deprecated
+public class EmbeddingRule {
+
+ public static final String IEMBEDDING_RULE_ID = Activator.PLUGIN_ID + ".embeddingRule";
+
+ /**
+ *
+ * @param iConfiguratorName
+ * @param component
+ * containing composite (container)
+ * @param instance
+ */
+ public static void embeddExtension(String embeddingRuleID, InstanceSpecification executorIS, InstanceSpecification instance, Port port) {
+ IEmbeddingRule iEmbeddingRule = getEmbeddingRule(embeddingRuleID);
+ if(iEmbeddingRule != null) {
+ iEmbeddingRule.embeddExtension(executorIS, instance, port);
+ }
+ }
+
+ private static IEmbeddingRule getEmbeddingRule(String embeddingRuleID) {
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] configElements = reg.getConfigurationElementsFor(IEMBEDDING_RULE_ID);
+ for(IConfigurationElement configElement : configElements) {
+ try {
+ final String iConfiguratorIDext = configElement.getAttribute("configuratorID");
+ if(iConfiguratorIDext.equals(embeddingRuleID)) {
+ // TODO: cache returned instance (avoid creating a new instance each time => more efficient, no need for static attributes)
+ final Object obj = configElement.createExecutableExtension("class");
+ if(obj instanceof IEmbeddingRule) {
+ return (IEmbeddingRule)obj;
+ }
+ }
+ } catch (CoreException exception) {
+ exception.printStackTrace();
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/ExternalGenerator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/ExternalGenerator.java
new file mode 100644
index 00000000000..6409d4b9edf
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/ExternalGenerator.java
@@ -0,0 +1,65 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Classifier;
+
+import org.eclipse.papyrus.qompass.designer.core.Activator;
+
+
+/**
+ * Support for multiple target languages via the Eclipse extension mechanism
+ */
+public class ExternalGenerator {
+
+ public static final String IEXTERNAL_GENERATOR_ID = Activator.PLUGIN_ID + ".externalGenerator";
+
+ /**
+ *
+ * @param iConfiguratorName
+ * @param component
+ * containing composite (container)
+ * @param instance
+ */
+ public static EList<Classifier> generate(String iGeneratorID, Classifier source) {
+ IExternalGenerator iExternalGenerator = getExternalGenerator(iGeneratorID);
+ if(iExternalGenerator != null) {
+ return iExternalGenerator.generate(source);
+ }
+ return null;
+ }
+
+ private static IExternalGenerator getExternalGenerator(String iGeneratorID) {
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] configElements = reg.getConfigurationElementsFor(IEXTERNAL_GENERATOR_ID);
+ for(IConfigurationElement configElement : configElements) {
+ try {
+ final String iConfiguratorIDext = configElement.getAttribute("extGeneratorID");
+ if(iConfiguratorIDext.equals(iGeneratorID)) {
+ // TODO: cache returned instance (avoid creating a new instance each time => more efficient, no need for static attributes)
+ final Object obj = configElement.createExecutableExtension("class");
+ if(obj instanceof IExternalGenerator) {
+ return (IExternalGenerator)obj;
+ }
+ }
+ } catch (CoreException exception) {
+ exception.printStackTrace();
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IEmbeddingRule.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IEmbeddingRule.java
new file mode 100644
index 00000000000..2e3f5dd966d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IEmbeddingRule.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Port;
+
+/**
+ * Interface used by Qompass extensions that supports specific instance configurators,
+ * used for containers.
+ */
+public interface IEmbeddingRule {
+
+ // TODO: ordre? appliqué
+ /**
+ * configure an instance (within a container)
+ * @param executorIS the instance specification of the component that is used as basis for configuring the instance
+ * @param instance the instance of an element of the container.
+ * @param port the port within a container transformation for which the instance is used as an interceptor.
+ * Is null for "normal" connectors or container extensions is configured.
+ */
+ public void embeddExtension (InstanceSpecification executorIS, InstanceSpecification instance, Port port);
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IExternalGenerator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IExternalGenerator.java
new file mode 100644
index 00000000000..6ae47788a8c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IExternalGenerator.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Classifier;
+
+/**
+ * Interface used by Qompass extensions that supports specific external code generators, e.g. CORBA and DDS
+ */
+public interface IExternalGenerator {
+
+ /**
+ * generate a class by means of an external generator
+ * @param source A source element for the generator, e.g. an interface for a CORBA generator
+ * @returns a list of generated classifiers:
+ * Even, if the external generator produces code directly, the Java wrapper should return a set
+ * model elements (may be incomplete) that represent the generated elements. For instance, in case
+ * of C++, an empty class with the stereotype "extern C" could be returned
+ */
+ public EList<Classifier> generate (Classifier source);
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IInstanceConfigurator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IInstanceConfigurator.java
new file mode 100644
index 00000000000..18480c3de37
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IInstanceConfigurator.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Property;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.ContainerContext;
+
+/**
+ * Interface used by Qompass extensions that supports specific instance configurators,
+ * used for containers.
+ */
+public interface IInstanceConfigurator {
+
+ /**
+ * configure an instance (within a container)
+ *
+ * @param instance
+ * the instance of an element which should be configured.
+ * @param componentPort
+ * the property that represents the component within the enclosing composite. May be null, if the instance
+ * that should be configured is the main instance.
+ * @param containerContext
+ * additional information, if the element that should be configured is part of a container, e.g. an interceptor
+ * or an extension within the container.
+ */
+ public void configureInstance(InstanceSpecification instance, Property componentPart, ContainerContext containerContext);
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/ILangSupport.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/ILangSupport.java
new file mode 100644
index 00000000000..de5417e6931
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/ILangSupport.java
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.PackageableElement;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Interface used by Qompass extensions that support a specific programming language
+ */
+public interface ILangSupport {
+
+ /**
+ * Create a project for a specific language and configure it (according to gathered configuration
+ * data before). In case of C/C++ for instance, a CDT project should be created, in case of Java,
+ * a JDT project.
+ * And implementation should call setProject and setSettings before returning the project
+ *
+ * @param projectName
+ * the named of the project
+ * @param node
+ * the node for which the project should be created
+ * @return the created project
+ */
+ public IProject createProject(String projectName, InstanceSpecification node) throws TransformationException;
+
+ /**
+ * Set project information
+ *
+ * @param project
+ * the project (must already been initialized)
+ */
+ public void setProject(IProject project);
+
+ /**
+ * Re-create the project settings from model information
+ *
+ * @param node
+ * node for which settings should be set
+ * @throws TransformationException
+ */
+ public void setSettings(InstanceSpecification node) throws TransformationException;
+
+ /**
+ * Generate code for a specific language
+ *
+ * @param monitor
+ * a progress monitor
+ * @param element
+ * a packageable element, typically a classifier or a package
+ *
+ * @throws TransformationException
+ */
+ public void generateCode(IProgressMonitor monitor, PackageableElement element)
+ throws TransformationException;
+
+
+ /**
+ * Clean the code for a certain element, i.e. remove code that has previously generated for this element
+ * This code is required for differential code generation which needs to remove elements for instance
+ * after they have been renamed.
+ *
+ * @param project
+ * project in which code should be generated
+ * @param element
+ * the element for which the generate code should be removed
+ * @throws TransformationException
+ */
+ public void cleanCode(IProgressMonitor monitor, PackageableElement element)
+ throws TransformationException;
+
+ /**
+ * Reset gathered configuration data
+ *
+ * @see gatherConfigData
+ */
+ public void resetConfigurationData();
+
+
+ /**
+ * Gather configuration data from implementations, e.g. required include paths or libraries
+ *
+ * @param implementation
+ * a class copied to the target
+ */
+ public void gatherConfigData(Class implementation);
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/InstanceConfigurator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/InstanceConfigurator.java
new file mode 100644
index 00000000000..675834bfec0
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/InstanceConfigurator.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Property;
+
+import FCM.ContainerRule;
+import FCM.UseInstanceConfigurator;
+
+import org.eclipse.papyrus.qompass.designer.core.Activator;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.ContainerContext;
+
+
+/**
+ * Support for the configuration of instances via the Eclipse extension mechanism
+ */
+public class InstanceConfigurator {
+
+ public static final String IINSTANCE_CONFIG_ID = Activator.PLUGIN_ID + ".instanceConfig";
+
+ /**
+ * Configure an instance
+ *
+ * @see org.eclipse.papyrus.qompass.designer.core.extensions.IInstanceConfigurator
+ * @param instance
+ * the specification of instance that should be configured
+ * @param executorIS
+ * the instance specification of the executor (within a container)
+ * @param componentPart
+ * the part representing the instance (before container expansion)
+ * @param port
+ * a port within the context of container
+ */
+ public static void configureInstance(InstanceSpecification instance, Property componentPart, ContainerContext containerContext) {
+ Classifier component = DepUtils.getClassifier(instance);
+ UseInstanceConfigurator useInstanceConfigurator = StUtils.getApplication(component, UseInstanceConfigurator.class);
+ configureInstance(useInstanceConfigurator, instance, componentPart, containerContext);
+ }
+
+ /**
+ * Configure an instance
+ *
+ * @see org.eclipse.papyrus.qompass.designer.core.extensions.IInstanceConfigurator
+ * @param instance
+ * the specification of instance that should be configured
+ * @param executorIS
+ * the instance specification of the executor (within a container)
+ * @param componentPart
+ * the part representing the instance (before container expansion)
+ * @param port
+ * a port within the context of container
+ */
+ public static void configureInstance(ContainerRule rule, InstanceSpecification instance, Property componentPart, ContainerContext containerContext) {
+ UseInstanceConfigurator useInstanceConfigurator = StUtils.getApplication(rule.getBase_Class(), UseInstanceConfigurator.class);
+ configureInstance(useInstanceConfigurator, instance, componentPart, containerContext);
+ }
+
+ public static void configureInstance(UseInstanceConfigurator useInstanceConfigurator, InstanceSpecification instance, Property componentPart, ContainerContext containerContext) {
+ if(useInstanceConfigurator != null) {
+ FCM.InstanceConfigurator instanceConfigurator = useInstanceConfigurator.getConfigurator();
+ if(instanceConfigurator != null) {
+ String id = instanceConfigurator.getBase_Class().getName();
+ IInstanceConfigurator iConfigurator = getInstanceConfigurator(id);
+ if(iConfigurator != null) {
+ iConfigurator.configureInstance(instance, componentPart, containerContext);
+
+ }
+ }
+ }
+ }
+
+ protected static IInstanceConfigurator getInstanceConfigurator(String iConfiguratorID) {
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] configElements = reg.getConfigurationElementsFor(IINSTANCE_CONFIG_ID);
+ for(IConfigurationElement configElement : configElements) {
+ try {
+ final String iConfiguratorIDext = configElement.getAttribute("configuratorID");
+ if(iConfiguratorIDext.equals(iConfiguratorID)) {
+ // TODO: cache returned instance (avoid creating a new instance each time => more efficient, no need for static attributes)
+ final Object obj = configElement.createExecutableExtension("class");
+ if(obj instanceof IInstanceConfigurator) {
+ return (IInstanceConfigurator)obj;
+ }
+ }
+ } catch (CoreException exception) {
+ exception.printStackTrace();
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/LanguageSupport.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/LanguageSupport.java
new file mode 100644
index 00000000000..237f3403cee
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/LanguageSupport.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+
+import org.eclipse.papyrus.qompass.designer.core.Activator;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+
+/**
+ * Support for multiple target languages via the Eclipse extension mechanism
+ */
+public class LanguageSupport {
+
+ public static final String ILANG_SUPPORT_ID = Activator.PLUGIN_ID + ".language";
+
+ public static ILangSupport getLangSupport(String language) throws TransformationException
+ {
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] configElements = reg.getConfigurationElementsFor(ILANG_SUPPORT_ID);
+ for(IConfigurationElement configElement : configElements) {
+ try {
+ final String extLanguage = configElement.getAttribute("language");
+ if(extLanguage.equals(language)) {
+ // TODO: cache returned instance (avoid creating a new instance each time => more efficient, no need for static attributes)
+ final Object obj = configElement.createExecutableExtension("class");
+ if(obj instanceof ILangSupport) {
+ return (ILangSupport)obj;
+ }
+ }
+ } catch (CoreException exception) {
+ exception.printStackTrace();
+ }
+ }
+ throw new TransformationException("Support for language " + language + "not configured for Qompass");
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/generate/GenerateCode.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/generate/GenerateCode.java
new file mode 100644
index 00000000000..0d6532be14e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/generate/GenerateCode.java
@@ -0,0 +1,189 @@
+package org.eclipse.papyrus.qompass.designer.core.generate;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.compare.diff.metamodel.AttributeChange;
+import org.eclipse.emf.compare.diff.metamodel.DiffElement;
+import org.eclipse.emf.compare.diff.metamodel.DiffModel;
+import org.eclipse.emf.compare.diff.metamodel.DifferenceKind;
+import org.eclipse.emf.compare.diff.metamodel.ModelElementChangeLeftTarget;
+import org.eclipse.emf.compare.diff.metamodel.ModelElementChangeRightTarget;
+import org.eclipse.emf.compare.diff.service.DiffService;
+import org.eclipse.emf.compare.match.MatchOptions;
+import org.eclipse.emf.compare.match.metamodel.MatchModel;
+import org.eclipse.emf.compare.match.service.MatchService;
+import org.eclipse.emf.compare.util.ModelUtils;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+
+import org.eclipse.papyrus.qompass.designer.core.ModelManagement;
+import org.eclipse.papyrus.qompass.designer.core.extensions.ILangSupport;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+public class GenerateCode {
+
+ public GenerateCode(IProject genProject, ILangSupport langSupport, ModelManagement genMM, IProgressMonitor monitor) {
+ this.genProject = genProject;
+ this.genMM = genMM;
+ this.monitor = monitor;
+ this.langSupport = langSupport;
+ }
+
+ public void generate(InstanceSpecification node, String targetLanguage, boolean differential)
+ throws TransformationException, InterruptedException
+ {
+ String path = genMM.getPath(genProject, "model", null);
+ Package genModel = genMM.getModel();
+ EObject oldGenModel = null;
+ if(differential) {
+ try {
+ oldGenModel = ModelUtils.load(URI.createURI(path), ModelManagement.getResourceSet());
+ } catch (IOException io) {
+ System.err.println(io);
+
+ }
+ }
+ genMM.saveModel(path);
+
+ monitor.worked(1);
+
+ if(genProject == null) {
+ return;
+ }
+
+ if(oldGenModel != null) {
+ // Matching model elements
+ Map<String, Object> options = new HashMap<String, Object>();
+ options.put(MatchOptions.OPTION_IGNORE_XMI_ID, true);
+ monitor.setTaskName("generating " + targetLanguage + " code for node " + node.getName());
+ monitor.subTask("create difference model for node " + node.getName());
+ monitor.worked(1);
+ MatchModel match = MatchService.doMatch(genModel, oldGenModel, options);
+ // Computing differences
+ DiffModel diffModel = DiffService.doDiff(match, false);
+ deleteRemovedClasses(diffModel);
+
+ Map<PackageableElement, Boolean> alreadyGenerated = new HashMap<PackageableElement, Boolean>();
+ monitor.subTask("generate code");
+
+ for(DiffElement diff : diffModel.getDifferences()) {
+ if((diff.getKind() == DifferenceKind.ADDITION) ||
+ (diff.getKind() == DifferenceKind.CHANGE)) {
+ EObject modifiedEObj = null;
+ if(diff instanceof AttributeChange) {
+ modifiedEObj = ((AttributeChange)diff).getLeftElement();
+ }
+ else if(diff instanceof ModelElementChangeLeftTarget) {
+ modifiedEObj = ((ModelElementChangeLeftTarget)diff).getLeftElement();
+ }
+ if(modifiedEObj instanceof Element) {
+ PackageableElement modifiedPElement = getNearestClassifierOrPackage((Element)modifiedEObj);
+ Element modifiedElement = modifiedPElement;
+ // check whether code has already been generated for a parent
+ boolean found = false;
+ while(modifiedElement != null) {
+ modifiedElement = modifiedElement.getOwner();
+ if(alreadyGenerated.containsKey(modifiedElement)) {
+ found = true;
+ }
+ }
+ // TODO: re-create code for elements that depend on this one (e.g. if the modified element is a
+ // class and its name has changed, caller have to use a different name, even if the model reference
+ // has not changed.
+ if(!found) {
+ alreadyGenerated.put(modifiedPElement, true);
+ langSupport.generateCode(monitor, modifiedPElement);
+ }
+ }
+ }
+ }
+ }
+ else {
+ monitor.setTaskName("generating " + targetLanguage + " code for node " + node.getName());
+ IFolder folder = genProject.getFolder(genModel.getName());
+ try {
+ folder.delete(true, null);
+ } catch (CoreException e) {
+ throw new TransformationException("Could not delete old code: " + e.getMessage());
+ }
+ langSupport.generateCode(monitor, genModel);
+ }
+ if(monitor.isCanceled()) {
+ return;
+ }
+ monitor.worked(1);
+ }
+
+ /**
+ * @param element
+ * @return
+ */
+ public PackageableElement getNearestClassifierOrPackage(Element element) {
+ while(element != null) {
+ if(element instanceof Classifier) {
+ return (Classifier)element;
+ }
+ if(element instanceof Package) {
+ return (Package)element;
+ }
+ element = element.getOwner();
+ }
+ return null;
+ }
+
+ public void deleteRemovedClasses(EObject diffModelOrElement) throws TransformationException {
+ EList<DiffElement> diffs;
+ if(diffModelOrElement instanceof DiffModel) {
+ diffs = ((DiffModel)diffModelOrElement).getDifferences();
+ }
+ else if(diffModelOrElement instanceof DiffElement) {
+ diffs = ((DiffElement)diffModelOrElement).getSubDiffElements();
+ }
+ else {
+ return;
+ }
+ for(DiffElement diff : diffs) {
+ EObject modifiedEObj = null;
+
+ if(diff.getKind() == DifferenceKind.DELETION) {
+ if(diff instanceof AttributeChange) {
+ modifiedEObj = ((AttributeChange)diff).getRightElement();
+ }
+ else if(diff instanceof ModelElementChangeRightTarget) {
+ modifiedEObj = ((ModelElementChangeRightTarget)diff).getRightElement();
+ }
+ }
+ else if(diff.getKind() == DifferenceKind.CHANGE) {
+ if(diff instanceof AttributeChange) {
+ modifiedEObj = ((AttributeChange)diff).getRightElement();
+ }
+ }
+ if(modifiedEObj instanceof PackageableElement) {
+ // => delete tree
+ langSupport.cleanCode(monitor, (PackageableElement)modifiedEObj);
+ }
+ // no recursion needed?
+ // deleteRemovedClasses(diff);
+ }
+ }
+
+ private ModelManagement genMM;
+
+ private IProject genProject;
+
+ private IProgressMonitor monitor;
+
+ private ILangSupport langSupport;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/generate/GenerationOptions.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/generate/GenerationOptions.java
new file mode 100644
index 00000000000..d4561067269
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/generate/GenerationOptions.java
@@ -0,0 +1,19 @@
+package org.eclipse.papyrus.qompass.designer.core.generate;
+
+/**
+ * Constants for generation options (must be powers of 2)
+ *
+ * @author ansgar
+ *
+ */
+public interface GenerationOptions {
+
+ final public static int REWRITE_SETTINGS = 1;
+
+ final public static int ONLY_CHANGED = 2;
+
+ final public static int MODEL_ONLY = 4;
+
+ final public static int CAC_ONLY = 8;
+
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/AddProfileAndModelLibsHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/AddProfileAndModelLibsHandler.java
new file mode 100644
index 00000000000..5df31d34a6e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/AddProfileAndModelLibsHandler.java
@@ -0,0 +1,299 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtilsForActionHandlers;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.ListSelectionDialog;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageImport;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.UMLFactory;
+
+// TODO: Papyrus dependency => put into separate plug-in and declare as option
+
+/**
+ * ResourceSet Manager for UML and DI files, and also other loaded models
+ * This manager is designed for EAST-ADL2 diagrams.
+ */
+public class AddProfileAndModelLibsHandler extends CmdHandler {
+
+ static final String FCM_PROFILE_URI = "pathmap://FCM_PROFILES/FCM.profile.uml";
+
+ static final String MARTE_PROFILE_URI = "pathmap://Papyrus_PROFILES/MARTE.profile.uml";
+
+ static final String EC3M_BASIC_CALLS_URI = "pathmap://QML_CORE/core.uml";
+
+ static final String EC3M_MARTE_CALLS_URI = "pathmap://QML_MARTE/marte.uml";
+
+ public static final int APPLY_FCM = 1;
+
+ public static final int APPLY_ALLOC = 2;
+
+ public static final int APPLY_HLAM_GCM = 4;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if(selectedObj instanceof Package) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Retrieve a model library from the repository
+ *
+ * @param uri
+ * the URI of the repository
+ *
+ * @return
+ */
+ public PackageImport getModelLibraryImportFromURI(URI uri, EditingDomain domain) {
+ // Try to reach model
+ Element root = getContent(uri, domain);
+ if(root instanceof Package) {
+
+ // Import model library
+ Package libToImport = (Package)root;
+ // create import package
+ PackageImport modelLibImport = UMLFactory.eINSTANCE.createPackageImport();
+ modelLibImport.setImportedPackage(libToImport);
+
+ return modelLibImport;
+ }
+ return null;
+ }
+
+ public static Element getContent(URI uri, EditingDomain domain) {
+ // Resource resource = getTransactionalEditingDomain ().getResourceSet().getResource (uri, true);
+ Resource resource = domain.getResourceSet().getResource(uri, true);
+ return getContent(resource);
+ }
+
+ public static Element getContent(Resource resource) {
+ EList<EObject> contentObj = resource.getContents();
+ if((contentObj.size() > 0) && (contentObj.get(0) instanceof Element)) {
+ return (Element)contentObj.get(0);
+ }
+ return null;
+ }
+
+ /**
+ * Check whether a package import is already done
+ *
+ * @param selectedPkg
+ * @param pi
+ * @return
+ */
+ boolean isAlreadyImported(Package selectedPkg, PackageImport pi) {
+ for(PackageImport existingPI : selectedPkg.getPackageImports()) {
+ if((existingPI.getImportedPackage() == null) ||
+ (pi.getImportedPackage() == null)) {
+ // import package are null (should not happen?!)
+ continue;
+ }
+ if((existingPI.getImportedPackage().getName() == null) ||
+ (pi.getImportedPackage().getName() == null)) {
+ // import package name not set (should not happen?!)
+ continue;
+ } else if(existingPI.getImportedPackage().getName().equals(pi.getImportedPackage().getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ /**
+ * {@inheritDoc}
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if(!(getSelectedEObject() instanceof Package)) {
+ return null;
+ }
+ final Package selectedPkg = (Package)getSelectedEObject();
+
+ final TransactionalEditingDomain domain;
+ try {
+ ServiceUtilsForActionHandlers serviceUtils = ServiceUtilsForActionHandlers.getInstance();
+ domain = serviceUtils.getTransactionalEditingDomain();
+ } catch (ServiceException e) {
+ Log.log(Log.ERROR_MSG, Log.DIALOGS, "Cannot get service handler");
+ return null;
+ }
+ CommandStack stack = domain.getCommandStack();
+ PackageImport pi = getModelLibraryImportFromURI(URI.createURI(EC3M_BASIC_CALLS_URI), domain);
+ EList<Object> list = new BasicEList<Object>();
+ EList<Object> selection = new BasicEList<Object>();
+ if(pi != null) {
+ list.add(pi);
+ if(isAlreadyImported(selectedPkg, pi)) {
+ selection.add(pi);
+ }
+ }
+ pi = getModelLibraryImportFromURI(URI.createURI(EC3M_MARTE_CALLS_URI), domain);
+ if(pi != null) {
+ list.add(pi);
+ if(isAlreadyImported(selectedPkg, pi)) {
+ selection.add(pi);
+ }
+ }
+ final ListSelectionDialog dialog = new ListSelectionDialog(new Shell(),
+ list.toArray(),
+ new ArrayContentProvider(),
+ new LabelProvider() {
+
+ public String getText(Object pi) {
+ return ((PackageImport)pi).getImportedPackage().getName();
+ }
+ },
+ "Select Qompass model libraries for package import.\n" +
+ "Libraries that are already imported, are selected. Please note that additional\n" +
+ "Qompass model library might be loaded with the standard \"import registered library\" option\n" +
+ "\n" +
+ "Pressing \"Ok\" will continue with the application of the FCM profile and (parts of) the MARTE profile\n");
+ dialog.setTitle("Select import library");
+ dialog.setInitialElementSelections(selection);
+ // dialog.setElements (list.toArray ());
+ int result = dialog.open();
+ if(result == IDialogConstants.OK_ID) {
+ stack.execute(new RecordingCommand(domain, "Add libraries")
+ {
+
+ public void doExecute() {
+ // add primitive types
+ // create import package to primitiveType
+ // PackageImport pi = getModelLibraryImportFromURI (URI.createURI(UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI));
+ // selectedPkg.getPackageImports().add(pi);
+
+ for(Object obj : dialog.getResult()) {
+ PackageImport pi = (PackageImport)obj;
+ if(!isAlreadyImported(selectedPkg, pi)) {
+ selectedPkg.getPackageImports().add(pi);
+ }
+ }
+ addProfiles(selectedPkg, APPLY_FCM | APPLY_ALLOC | APPLY_HLAM_GCM);
+ }
+ });
+ }
+ return null;
+ }
+
+ public static void addProfiles(Package selectedPkg, int applyCode) {
+
+ final TransactionalEditingDomain domain;
+ try {
+ ServiceUtilsForActionHandlers serviceUtils = ServiceUtilsForActionHandlers.getInstance();
+ domain = serviceUtils.getTransactionalEditingDomain();
+ } catch (ServiceException e) {
+ Log.log(Log.ERROR_MSG, Log.DIALOGS, "Cannot get service handler");
+ return;
+ }
+ try {
+ /*
+ * // Apply UML Standard profile
+ * // Retrieve standard profile
+ * Profile umlStdProfile =
+ * (Profile) getContent (URI.createURI(UMLResource.STANDARD_PROFILE_URI));
+ * // Apply to new model
+ * umlModel.applyProfile(umlStdProfile);
+ */
+
+ if((applyCode & APPLY_FCM) != 0) {
+ // Retrieve FCM profile
+ Profile fcmProfile =
+ (Profile)getContent(URI.createURI(FCM_PROFILE_URI), domain);
+
+ // Apply FCM profile and its nested profiles to new model
+ if(fcmProfile instanceof Profile) {
+ Profile profile = selectedPkg.getAppliedProfile(fcmProfile.getQualifiedName());
+ if((profile == null) && (!fcmProfile.getOwnedStereotypes().isEmpty())) {
+ selectedPkg.applyProfile(fcmProfile);
+ }
+ }
+ else {
+ MessageDialog.openWarning(
+ null,
+ "Warning",
+ "The FCM profile is not available.");
+ }
+ }
+
+ if((applyCode & (APPLY_ALLOC | APPLY_HLAM_GCM)) != 0) {
+ // Retrieve MARTE profile
+ Profile marteProfile =
+ (Profile)getContent(URI.createURI(MARTE_PROFILE_URI), domain);
+
+ // Apply MARTE::MARTE_DesignModel::HLAM
+ // & MARTE::MARTE_DesignModel::GCM
+ if(marteProfile != null) {
+ PackageableElement foundationModel = marteProfile.getPackagedElement("MARTE_Foundations");
+ if((foundationModel instanceof Package) && ((applyCode & APPLY_ALLOC) != 0)) {
+ PackageableElement alloc = ((Package)foundationModel).getPackagedElement("Alloc");
+
+ // if(selectedPkg.getAppliedProfile(alloc.getQualifiedName()) == null) {
+ selectedPkg.applyProfile((Profile)alloc);
+ // }
+ }
+ PackageableElement designModel = marteProfile.getPackagedElement("MARTE_DesignModel");
+ if((designModel instanceof Package) && ((applyCode & APPLY_HLAM_GCM) != 0)) {
+ PackageableElement hlam = ((Package)designModel).getPackagedElement("HLAM");
+ if(hlam instanceof Profile) {
+ // if(selectedPkg.getAppliedProfile(hlam.getQualifiedName()) == null) {
+ selectedPkg.applyProfile((Profile)hlam);
+ // }
+ }
+ PackageableElement gcm = ((Package)designModel).getPackagedElement("GCM");
+ if(gcm instanceof Profile) {
+ // if(selectedPkg.getAppliedProfile(gcm.getQualifiedName()) == null) {
+ selectedPkg.applyProfile((Profile)gcm);
+ // }
+ }
+ }
+ }
+ else {
+ MessageDialog.openWarning(new Shell(),
+ "Warning", "The MARTE profile is not available.");
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/AllocateHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/AllocateHandler.java
new file mode 100644
index 00000000000..74e5bc21e11
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/AllocateHandler.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.DeploymentPlan;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.RunnableWithResult;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.dialogs.AllocationDialog;
+
+/**
+ * Implementation class for ClassAction action
+ */
+public class AllocateHandler extends CmdHandler {
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if(selectedObj instanceof Package) {
+ return (StUtils.isApplied((Package)selectedObj, DeploymentPlan.class));
+ }
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object execute(ExecutionEvent event)
+ throws ExecutionException {
+ if(!(getSelectedEObject() instanceof Package)) {
+ return null;
+ }
+
+ final Package cdp = (Package)getSelectedEObject();
+ final Shell shell = new Shell();
+
+ // org.eclipse.papyrus.qompass.designer.vsl.ParseVSL.test();
+ if(DepUtils.getMainInstance(cdp) == null) {
+ MessageDialog.openInformation(shell, "Error",
+ "Deployment plan has no main instance (check stereotype attribute mainInstance)");
+ return null;
+ }
+
+ // 1. select possible connectors according to port types
+ // (only show compatible connectors check-box?)
+ // 2. select implementation group according to connector type
+
+ // container dialog: either extension, rule or interceptor
+ // howto select? which? (and howto add/remove?) - Std - dialog is good?
+ CommandSupport.exec("Instance allocation", new RunnableWithResult() {
+
+ public CommandResult run() {
+ AllocationDialog allocDialog =
+ new AllocationDialog(shell, cdp);
+ allocDialog.setTitle("Allocate instances");
+ allocDialog.open();
+ if(allocDialog.getReturnCode() == IDialogConstants.OK_ID) {
+ return CommandResult.newOKCommandResult();
+ }
+ else {
+ return CommandResult.newCancelledCommandResult();
+ }
+ }
+ });
+
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CmdHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CmdHandler.java
new file mode 100644
index 00000000000..d9387503538
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CmdHandler.java
@@ -0,0 +1,140 @@
+/*****************************************************************************
+ * Copyright (c) 2010 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Remi Schnekenburger (CEA LIST) remi.schnekenburger@cea.fr - Initial API and implementation
+ *****************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Vector;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Element;
+
+
+
+
+/**
+ * Handler for the command of customization of the content of the properties view
+ * The same class is used for menu actions within model explorer and diagram
+ */
+public class CmdHandler extends AbstractHandler implements IObjectActionDelegate {
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ Display current = Display.getCurrent();
+
+ if(current == null) {
+ current = Display.getDefault();
+ }
+ Shell shell = current.getActiveShell();
+
+ if(shell == null) {
+ // Activator.log.error("impossible to find a shell to open the message dialog", null);
+ }
+
+ return null;
+ }
+
+ /**
+ * Convert each selected elements from the explorator menu, or modeling view
+ * to an EObject and add it to a list
+ *
+ * @return list of EObject
+ */
+ public void updateSelectedEObject() {
+ Vector<EObject> currentSelectedEObjects = new Vector<EObject>();
+
+ // Retrieve selected elements
+ IStructuredSelection selection = (IStructuredSelection)PlatformUI
+ .getWorkbench().getActiveWorkbenchWindow()
+ .getSelectionService().getSelection();
+
+ Iterator<?> eltIt = (Iterator<?>)selection.iterator();
+
+ while(eltIt.hasNext()) {
+ Object currentObject = eltIt.next();
+
+ // If the object is an edit part, try to get semantic bridge
+ if(currentObject instanceof GraphicalEditPart) {
+ GraphicalEditPart editPart = (GraphicalEditPart)currentObject;
+ if(editPart.getModel() instanceof View) {
+ View view = (View)editPart.getModel();
+ if(view.getElement() instanceof Element) {
+ currentObject = (Element)view.getElement();
+ }
+ }
+ }
+
+ // check whether part of model explorer
+ if(currentObject instanceof IAdaptable) {
+ // modisco ModelElementItem supports IAdaptable (cleaner than cast / dependency with modisco)
+ currentObject = ((IAdaptable)currentObject).getAdapter(EObject.class);
+ }
+
+ // If element is a UML Element
+ if(currentObject instanceof Element) {
+ currentSelectedEObjects.add((EObject)currentObject);
+ }
+
+ }
+ selectedEObjects = currentSelectedEObjects;
+ }
+
+ /**
+ * Convert each selected elements from the explorer menu, or modeling view
+ * to an EObject and add it to a list
+ *
+ * @return list of EObject
+ */
+ public EObject getSelectedEObject() {
+ if(selectedEObjects.size() > 0) {
+ return selectedEObjects.get(0);
+ }
+ return null;
+ }
+
+ public List<EObject> getSelectedEObjects() {
+ return selectedEObjects;
+ }
+
+ private List<EObject> selectedEObjects;
+
+ public void run(IAction action) {
+ // method from action-delegate
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ // method from action-delegate
+ updateSelectedEObject(); // required??
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ // TODO Auto-generated method stub
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/ConfigureInstanceHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/ConfigureInstanceHandler.java
new file mode 100644
index 00000000000..fe5f4ea0c78
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/ConfigureInstanceHandler.java
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Property;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.RunnableWithResult;
+import org.eclipse.papyrus.qompass.designer.core.dialogs.ConfigureInstanceDialog;
+
+/**
+ * Implementation class for ClassAction action
+ */
+public class ConfigureInstanceHandler extends CmdHandler {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if((selectedObj instanceof Class) ||
+ (selectedObj instanceof Connector) ||
+ (selectedObj instanceof Property) ||
+ (selectedObj instanceof InstanceSpecification)) {
+ return true;
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if(!(getSelectedEObject() instanceof NamedElement)) {
+ return null;
+ }
+
+ final NamedElement element = (NamedElement)getSelectedEObject();
+ final Shell shell = new Shell();
+
+ // 1. select possible connectors according to port types
+ // (only show compatible connectors check-box?)
+ // 2. select implementation group according to connector type
+
+ if(element instanceof Class) {
+ // container dialog: either extension, rule or interceptor
+ // howto select? which? (and howto add/remove?) - Std - dialog is good?
+ CommandSupport.exec("Configure associated component instance", new RunnableWithResult() {
+
+ public CommandResult run() {
+ ConfigureInstanceDialog configureInstanceDialog =
+ new ConfigureInstanceDialog(shell);
+ if (configureInstanceDialog.init((Class)element)) {
+ configureInstanceDialog.setTitle("Configure instance");
+ configureInstanceDialog.setMessage("Configure instance for component " + element.getName());
+ configureInstanceDialog.open();
+ if(configureInstanceDialog.getReturnCode() == IDialogConstants.OK_ID) {
+ return CommandResult.newOKCommandResult();
+ }
+ }
+ return CommandResult.newCancelledCommandResult();
+ }
+ });
+ } else if(element instanceof Feature) {
+ // container dialog: either extension, rule or interceptor
+ // howto select? which? (and howto add/remove?) - Std - dialog is good?
+ CommandSupport.exec("Configure associated instance", new RunnableWithResult() {
+
+ public CommandResult run() {
+ ConfigureInstanceDialog configureInstanceDialog =
+ new ConfigureInstanceDialog(shell);
+ if (configureInstanceDialog.init((Feature)element)) {
+ configureInstanceDialog.setTitle("Configure instance");
+ configureInstanceDialog.setMessage("Configure instance for property/connector " + element.getName());
+ configureInstanceDialog.open();
+ if(configureInstanceDialog.getReturnCode() == IDialogConstants.OK_ID) {
+ return CommandResult.newOKCommandResult();
+ }
+ }
+ return CommandResult.newCancelledCommandResult();
+ }
+ });
+
+
+ } else if(element instanceof InstanceSpecification) {
+
+ CommandSupport.exec("Configure instance", new RunnableWithResult() {
+
+ public CommandResult run() {
+ ConfigureInstanceDialog configureInstanceDialog =
+ new ConfigureInstanceDialog(shell);
+ if (configureInstanceDialog.init((InstanceSpecification)element)) {
+ configureInstanceDialog.setMessage("Configure instance " + element.getName());
+ configureInstanceDialog.open();
+ if(configureInstanceDialog.getReturnCode() == IDialogConstants.OK_ID) {
+ return CommandResult.newOKCommandResult();
+ }
+ }
+ return CommandResult.newCancelledCommandResult();
+ }
+ });
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/ConfigurePortHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/ConfigurePortHandler.java
new file mode 100644
index 00000000000..82194623f4b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/ConfigurePortHandler.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Port;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.RunnableWithResult;
+import org.eclipse.papyrus.qompass.designer.core.dialogs.ConfigureInstanceDialog;
+import org.eclipse.papyrus.qompass.designer.core.dialogs.ConfigurePortDialog;
+
+/**
+ * Implementation class for ClassAction action
+ */
+public class ConfigurePortHandler extends CmdHandler {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if((selectedObj instanceof Class) ||
+ (selectedObj instanceof Port)) {
+ return true;
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if(!(getSelectedEObject() instanceof NamedElement)) {
+ return null;
+ }
+
+ final NamedElement element = (NamedElement)getSelectedEObject();
+ final Shell shell = new Shell();
+
+ // 1. select possible connectors according to port types
+ // (only show compatible connectors check-box?)
+ // 2. select implementation group according to connector type
+
+ if(element instanceof Class) {
+ CommandSupport.exec("Configure ports", new RunnableWithResult() {
+
+ public CommandResult run() {
+ ConfigurePortDialog configureInstanceDialog =
+ new ConfigurePortDialog(shell);
+ if (configureInstanceDialog.init((Class)element)) {
+ configureInstanceDialog.setTitle("Configure ports");
+ configureInstanceDialog.setMessage("Configure ports of component " + element.getName());
+ configureInstanceDialog.open();
+ if(configureInstanceDialog.getReturnCode() == IDialogConstants.OK_ID) {
+ return CommandResult.newOKCommandResult();
+ }
+ }
+ return CommandResult.newCancelledCommandResult();
+ }
+ });
+ } else if(element instanceof Port) {
+ CommandSupport.exec("Configure ports", new RunnableWithResult() {
+
+ public CommandResult run() {
+ ConfigurePortDialog configurePortDialog =
+ new ConfigurePortDialog(shell);
+ if (configurePortDialog.init((Port)element)) {
+ configurePortDialog.setTitle("Configure ports");
+ configurePortDialog.setMessage("Configure port " + element.getName());
+ configurePortDialog.open();
+ if(configurePortDialog.getReturnCode() == IDialogConstants.OK_ID) {
+ return CommandResult.newOKCommandResult();
+ }
+ }
+ return CommandResult.newCancelledCommandResult();
+ }
+ });
+
+
+ } else if(element instanceof InstanceSpecification) {
+
+ CommandSupport.exec("Configure instance", new RunnableWithResult() {
+
+ public CommandResult run() {
+ ConfigureInstanceDialog configureInstanceDialog =
+ new ConfigureInstanceDialog(shell);
+ if (configureInstanceDialog.init((InstanceSpecification)element)) {
+ configureInstanceDialog.setMessage("Configure instance " + element.getName());
+ configureInstanceDialog.open();
+ if(configureInstanceDialog.getReturnCode() == IDialogConstants.OK_ID) {
+ return CommandResult.newOKCommandResult();
+ }
+ }
+ return CommandResult.newCancelledCommandResult();
+ }
+ });
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CreateDepPlanHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CreateDepPlanHandler.java
new file mode 100644
index 00000000000..69a6ead8450
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CreateDepPlanHandler.java
@@ -0,0 +1,126 @@
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Stereotype;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.RunnableWithResult;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils;
+import org.eclipse.papyrus.qompass.designer.core.sync.DepPlanSync;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+public class CreateDepPlanHandler extends CmdHandler {
+
+ private final String DepPlanPostfix = "DepPlan";
+
+ private Package depPlans;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if((selectedObj instanceof Class) && Utils.isCompImpl((Class)selectedObj)) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if(!(getSelectedEObject() instanceof Class)) {
+ return null;
+ }
+ final Class selectedComposite = (Class)getSelectedEObject();
+
+ CommandSupport.exec("Create deployment plans", new Runnable() {
+
+ public void run() {
+ // execute with transaction support
+ depPlans = DepPlanUtils.getDepPlanRoot(selectedComposite);
+ }
+ });
+
+ try {
+ String name = selectedComposite.getName() + DepPlanPostfix;
+ if(depPlans.getMember(name) != null) {
+ Shell shell = new Shell();
+ String dialogButtonLabels[] = new String[]{
+ "Cancel",
+ "Synchronize",
+ "create new (auto number name)"
+ };
+ MessageDialog dialog = new MessageDialog(shell, "What should I do?", null,
+ "Deployment plan with name \"" + name + "\" exists already. You can always synchronize an " +
+ "existing deployment plan via the context menu \"Synchronize derived elements\"",
+ MessageDialog.QUESTION, dialogButtonLabels, 0);
+ int result = dialog.open();
+ if(result == 0) {
+ return null;
+ }
+ else if(result == 1) {
+ NamedElement existing = depPlans.getMember(name);
+ if(existing instanceof Package) {
+ DepPlanSync.syncDepPlan((Package)existing);
+ }
+ else {
+ MessageDialog.openError(shell, "Cannot synchronize", "Element with name \"" + name + "\" exists, but is not a package");
+ }
+ }
+ else {
+ for(int i = 2;; i++) {
+ name = selectedComposite.getName() + DepPlanPostfix + i;
+ if(depPlans.getMember(name) == null)
+ break;
+ }
+
+ }
+ }
+ final String depPlanName = name;
+
+ CommandSupport.exec("Create deployment plan", new RunnableWithResult() {
+
+ public CommandResult run() {
+ Package cdp = depPlans.createNestedPackage(depPlanName);
+ Stereotype st = StUtils.apply(cdp, FCM.DeploymentPlan.class);
+ if(st == null) {
+ MessageDialog.openInformation(new Shell(), "Cannot create deployment plan",
+ "Application of stereotype \"FCM::DeploymentPlan\" failed. Check, if FCM profile is applied");
+ return CommandResult.newErrorCommandResult("cannot create deployment plan");
+ }
+ try {
+ InstanceSpecification newRootIS =
+ DepCreation.createDepPlan(cdp, selectedComposite, "mainInstance", true);
+ DepCreation.initAutoValues(newRootIS);
+ return CommandResult.newOKCommandResult();
+ }
+ catch (TransformationException e) {
+ MessageDialog.openInformation(new Shell(), "Error during deployment plan creation",
+ e.getMessage());
+ return CommandResult.newErrorCommandResult(e.getMessage());
+ }
+ }
+ });
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CreatePlatformHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CreatePlatformHandler.java
new file mode 100644
index 00000000000..49184905271
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/CreatePlatformHandler.java
@@ -0,0 +1,76 @@
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Package;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+public class CreatePlatformHandler extends CmdHandler {
+
+ private Package platform;
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if(selectedObj instanceof Class) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if(!(getSelectedEObject() instanceof Class)) {
+ return null;
+ }
+ final Class selectedComposite = (Class)getSelectedEObject();
+
+ CommandSupport.exec("Create platform model", new Runnable() {
+
+ public void run() {
+ // execute with transaction support
+ platform = Utils.getRoot(selectedComposite, "PlatformModel");
+ }
+ });
+
+ final String newPlatform = selectedComposite.getName() + "Platform";
+
+ try {
+ if(platform.getMember(newPlatform) != null) {
+ Shell shell = new Shell();
+ MessageDialog.openInformation(shell, "Error",
+ "Platform definition \"" + newPlatform + "\" exists already");
+ } else {
+ CommandSupport.exec("Create platform definition", new Runnable() {
+
+ public void run() {
+ Package platformPkg = platform.createNestedPackage(newPlatform);
+ try {
+ DepCreation.createPlatformInstances(platformPkg, selectedComposite, null);
+ }
+ catch (TransformationException e) {
+ System.err.println(e);
+ }
+ }
+ });
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenCollaborationUseHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenCollaborationUseHandler.java
new file mode 100644
index 00000000000..4efb346b61b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenCollaborationUseHandler.java
@@ -0,0 +1,38 @@
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IViewPart;
+
+import FCM.Connector;
+import FCM.util.FCMUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+/**
+ * currently unused
+ *
+ * @author ansgar
+ */
+public class GenCollaborationUseHandler extends CmdHandler {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ updateSelectedEObject();
+
+ org.eclipse.uml2.uml.Connector selectedConnector = (org.eclipse.uml2.uml.Connector)getSelectedEObject();
+ Connector fcmConn = StUtils.getApplication(selectedConnector, Connector.class);
+ FCMUtil.generateCollaborationUse(fcmConn);
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenConnectionPatternHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenConnectionPatternHandler.java
new file mode 100644
index 00000000000..14804f05ef1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/GenConnectionPatternHandler.java
@@ -0,0 +1,35 @@
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.uml2.uml.Class;
+
+import FCM.InteractionComponent;
+import FCM.util.FCMUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+public class GenConnectionPatternHandler extends CmdHandler {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
+ */
+ public void init(IViewPart view) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public void run(IAction action) {
+ //only one model is selected
+ Class selectedClass = (Class)getSelectedEObject();
+ Log.log(Log.INFO_MSG, Log.DIALOGS, "GenConnectionPattern.run: " + selectedClass.getName());
+ InteractionComponent connType = StUtils.getApplication(selectedClass, InteractionComponent.class);
+ FCMUtil.generateDefaultConnectionPattern(connType);
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/InstantiateDepPlanHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/InstantiateDepPlanHandler.java
new file mode 100644
index 00000000000..d9fdd8f8fff
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/InstantiateDepPlanHandler.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.Configuration;
+import FCM.DeploymentPlan;
+
+import org.eclipse.papyrus.qompass.designer.core.ProjectManagement;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.dialogs.GenerationOptionsDialog;
+import org.eclipse.papyrus.qompass.designer.core.transformations.InstantiateDepPlan;
+
+/**
+ * Implementation class for ClassAction action
+ */
+public class InstantiateDepPlanHandler extends CmdHandler {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if(selectedObj instanceof Element) {
+ if(StUtils.isApplied((Element)selectedObj, DeploymentPlan.class) ||
+ StUtils.isApplied((Element)selectedObj, Configuration.class)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ // only one model is selected
+ EObject selectedObj = getSelectedEObject();
+ selectedCDP = null;
+ if((selectedObj instanceof Package) || (selectedObj instanceof Class)) {
+ selectedCDP = (Element)getSelectedEObject();
+ } else {
+ return null;
+ }
+ project = ProjectManagement.getCurrentProject();
+
+ GenerationOptionsDialog optionsDialog = new GenerationOptionsDialog(new Shell());
+ optionsDialog.open();
+ if(optionsDialog.getReturnCode() == IDialogConstants.OK_ID) {
+
+ final int genOptions = (Integer)optionsDialog.getResult()[0];
+ Job job = new Job("Create deployment model (OO)") {
+
+ @Override
+ protected IStatus run(IProgressMonitor monitor) {
+ // execute the task ...
+ InstantiateDepPlan.instantiate(selectedCDP, monitor, project, genOptions);
+ monitor.done();
+ return Status.OK_STATUS;
+ }
+ };
+ job.setUser(true);
+ job.schedule();
+ }
+
+ return null;
+ }
+
+ private Element selectedCDP;
+
+ private IProject project;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectConnectorHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectConnectorHandler.java
new file mode 100644
index 00000000000..631a9edbd5f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectConnectorHandler.java
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Property;
+
+import FCM.InteractionComponent;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.dialogs.ConnectorSelectionDialog;
+
+/**
+ * Implementation class for ClassAction action
+ */
+public class SelectConnectorHandler extends CmdHandler {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if((selectedObj instanceof Connector) || (selectedObj instanceof Property)) {
+ return true;
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ // feature is a common superclass of Connector and Property
+ if(!(getSelectedEObject() instanceof Feature)) {
+ return null;
+ }
+ // get selected connector
+ final Feature selectedConnector = (Feature)getSelectedEObject();
+ Shell shell = new Shell();
+
+ // 1. select possible connectors according to port types
+ // (only show compatible connectors check-box?)
+ // 2. select implementation group according to connector type
+
+ Model model = selectedConnector.getModel();
+
+ ConnectorSelectionDialog elementSelector =
+ new ConnectorSelectionDialog(shell, model, selectedConnector);
+ elementSelector.setTitle("Select connector");
+ elementSelector.setMessage("Select an implementation for connector " + selectedConnector.getName());
+ elementSelector.open();
+ if(elementSelector.getReturnCode() == IDialogConstants.OK_ID) {
+ final Object[] result = elementSelector.getResult();
+ if((result.length == 1) && (result[0] instanceof Class)) {
+ CommandSupport.exec("Select connector", new Runnable() {
+
+ public void run() {
+ FCM.Connector fcmSelectedConnector = StUtils.applyApp(selectedConnector, FCM.Connector.class);
+ InteractionComponent newConnType = StUtils.getApplication((Class)result[0], InteractionComponent.class);
+ fcmSelectedConnector.setIc(newConnType);
+ }
+ });
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectContainerHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectContainerHandler.java
new file mode 100644
index 00000000000..c1cb468636b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SelectContainerHandler.java
@@ -0,0 +1,119 @@
+/*******************************************************************************
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.RunnableWithResult;
+import org.eclipse.papyrus.qompass.designer.core.dialogs.ContainerDialog;
+
+/**
+ * Implementation class for ClassAction action
+ */
+public class SelectContainerHandler extends CmdHandler {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if((selectedObj instanceof Class) ||
+ (selectedObj instanceof InstanceSpecification)) {
+ return true;
+ }
+ if(selectedObj instanceof Property) {
+ Type type = ((Property)selectedObj).getType();
+ if(type instanceof Class) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ if(!(getSelectedEObject() instanceof NamedElement)) {
+ return null;
+ }
+
+ NamedElement ne = (NamedElement)getSelectedEObject();
+ final Shell shell = new Shell();
+
+ if(ne instanceof Property) {
+ // treat property as the associated type
+ Type type = ((Property)ne).getType();
+ if(type instanceof Class) {
+ ne = (Class)type;
+ }
+ }
+ final NamedElement element = ne;
+
+ // 1. select possible connectors according to port types
+ // (only show compatible connectors check-box?)
+ // 2. select implementation group according to connector type
+
+ if(element instanceof Class) {
+ // container dialog: either extension, rule or interceptor
+ // howto select? which? (and howto add/remove?) - Std - dialog is good?
+ CommandSupport.exec("Select container", new RunnableWithResult() {
+
+ public CommandResult run() {
+ ContainerDialog elementSelector =
+ new ContainerDialog(shell, (Class)element);
+ elementSelector.setTitle("Select container rules for component " + element.getName());
+ elementSelector.open();
+ if(elementSelector.getReturnCode() == IDialogConstants.OK_ID) {
+ return CommandResult.newOKCommandResult();
+ }
+ else {
+ return CommandResult.newCancelledCommandResult();
+ }
+ }
+ });
+ } else if(element instanceof InstanceSpecification) {
+ /*
+ * ConnectorSelectionDialog elementSelector =
+ * new ConnectorSelectionDialog (shell, model, (InstanceSpecification) element);
+ * elementSelector.setTitle("Select connector");
+ * elementSelector.setMessage("Select an implementation for connector " + selectedConnector.getName ());
+ * elementSelector.open();
+ * if (elementSelector.getReturnCode () == IDialogConstants.OK_ID) {
+ * final Object[] result = elementSelector.getResult ();
+ * if ((result.length == 2) && (result[0] instanceof Class) && (result[1] instanceof Class)) {
+ * CommandSupport.exec ("Select connector", new Runnable () {
+ * public void run () {
+ * Object newConnType = StUtils.getApplication ((Class) result[0], ConnectorType.class);
+ * Object newConnImpl = StUtils.getApplication ((Class) result[1], ConnectorImpl.class);
+ * }
+ * });
+ * }
+ * }
+ */
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SyncHandler.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SyncHandler.java
new file mode 100644
index 00000000000..16c41e0ef2f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/handlers/SyncHandler.java
@@ -0,0 +1,95 @@
+package org.eclipse.papyrus.qompass.designer.core.handlers;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+
+import FCM.DeploymentPlan;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.sync.CompImplSync;
+import org.eclipse.papyrus.qompass.designer.core.sync.DepPlanSync;
+
+public class SyncHandler extends CmdHandler {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ updateSelectedEObject();
+ EObject selectedObj = getSelectedEObject();
+ if(selectedObj instanceof Property) {
+ selectedObj = ((Property)selectedObj).getType();
+ }
+ if(selectedObj instanceof Class) {
+ if(Utils.isComponent((Class)selectedObj)) {
+ return true;
+ }
+ }
+ if(selectedObj instanceof Package) {
+ if(StUtils.isApplied((Package)selectedObj, DeploymentPlan.class)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ //only one model is selected
+ EObject selectedObj = getSelectedEObject();
+ if(selectedObj instanceof Property) {
+ selectedObj = ((Property)selectedObj).getType();
+ }
+ if(selectedObj instanceof Class) {
+ final Class selectedClass = (Class)selectedObj;
+ if(Utils.isCompImpl(selectedClass)) {
+ CommandSupport.exec("Synchronize component via implementation", new Runnable() {
+
+ public void run() {
+ try {
+ CompImplSync.syncRealizations(selectedClass);
+ }
+ catch (RuntimeException e) {
+ MessageDialog.openWarning(new Shell(), "Problems during synchronization", e.getMessage());
+ }
+
+ // CompImplSync.syncContextOps (selectedClass, true);
+ CompImplSync.interfaceModifications(selectedClass, null);
+ }
+ });
+ } else if(Utils.isCompType(selectedClass)) {
+ CommandSupport.exec("Synchronize component via type", new Runnable() {
+
+ public void run() {
+ if(!CompImplSync.syncViaType(selectedClass, false)) {
+ MessageDialog.openWarning(new Shell(), "Warning: ineffective command", "Synchronization applied on a component type (abstract class) will synchronize all implementations, i.e. non-abstract classes inheriting from it. However, the selected type has no implementations");
+ }
+ // CompImplSync.syncContextOps (selectedClass, true);
+ }
+ });
+ }
+ }
+ else if(selectedObj instanceof Package) {
+ final Package selectedPkg = (Package)selectedObj;
+ CommandSupport.exec("Synchronize deployment plan", new Runnable() {
+
+ public void run() {
+ DepPlanSync.syncDepPlan(selectedPkg);
+ }
+ });
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/CopyListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/CopyListener.java
new file mode 100644
index 00000000000..d904d2f0583
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/CopyListener.java
@@ -0,0 +1,26 @@
+package org.eclipse.papyrus.qompass.designer.core.listeners;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Interface for listeners that are notified for the addition of a classifier
+ * via copy
+ *
+ * @see org.eclipse.papyrus.qompass.designer.core.transformations.Copy
+ */
+public interface CopyListener {
+
+ /**
+ * Is called for each EObject that is copied. If it returns null, the
+ * indicated object should not be copied. If it returns a different object
+ * than the passed EObject, this object is used (the returned object of the
+ * first listener is used).
+ *
+ * @param sourceEObj
+ * the added classifier
+ */
+ public EObject copyEObject(Copy copy, EObject sourceEObj);
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/DepPlanListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/DepPlanListener.java
new file mode 100644
index 00000000000..f8ba61dcfd4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/DepPlanListener.java
@@ -0,0 +1,46 @@
+package org.eclipse.papyrus.qompass.designer.core.listeners;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.DeploymentPlan;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+/**
+ * A model listener that updates a deployment plan, e.g. add, remove or
+ * rename instance specifications , if the composites referenced
+ * by a deployment plan change. Since the code is very incomplete, it is
+ * currently not used. It needs to be clarified what changes are useful,
+ * in particular whether delete operations in a composite should immediately
+ * remove the associate slot in instance specifications of the composite and the
+ * referenced instance specifications.
+ *
+ * @author ansgar
+ *
+ */
+public class DepPlanListener implements IPapyrusListener {
+
+ public void notifyChanged(Notification notification) {
+ // TODO Auto-generated method stub
+ int evtType = notification.getEventType();
+ Object notifier = notification.getNotifier();
+ // String name = "";
+
+ if(evtType == Notification.SET) {
+ // Object oldValue = notification.getOldValue ();
+ if(notifier instanceof Package) {
+ DeploymentPlan de = StUtils.getApplication((Package) notifier, DeploymentPlan.class);
+ Object mainInstance = (de != null) ? de.getMainInstance() : null;
+ if(mainInstance instanceof InstanceSpecification) {
+ // TODO user wants to declare the system component, the instance specification should be created
+ // automatically
+
+ }
+ // if ((oldValue instanceof ) && (notifier instanceof Class)) {
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/InterfaceListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/InterfaceListener.java
new file mode 100644
index 00000000000..535b49a19ba
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/InterfaceListener.java
@@ -0,0 +1,75 @@
+package org.eclipse.papyrus.qompass.designer.core.listeners;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener;
+import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.sync.CompImplSync;
+
+public class InterfaceListener implements IPapyrusListener {
+
+ public static InterfaceListener getInstance() {
+ if(instance == null) {
+ instance = new InterfaceListener();
+ }
+ return instance;
+ }
+
+ private static InterfaceListener instance = null;
+
+ public void notifyChanged(Notification notification) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Interface adapter");
+ int evtType = notification.getEventType();
+ Object notifier = notification.getNotifier();
+ String name = "";
+ if(notifier instanceof NamedElement) {
+ name = ((NamedElement)notifier).getName();
+ }
+ if(evtType == Notification.SET) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Interface.adapter, set " + name);
+ if(notifier instanceof Class) {
+ // UMLExecutor.addCCM_intf ((Class) notifier);
+ }
+ } else if(evtType == Notification.ADD) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Interface.adapter, add " + name);
+
+ if(notifier instanceof Interface) {
+ // Interface intf = (Interface) notifier;
+
+ // never executed? (since name is always unset when
+ // an operation is newly added)
+ /*
+ * Object obj = notification.getNewValue ();
+ * if (obj instanceof Operation) {
+ * Operation operation = (Operation) obj;
+ *
+ * if (operation.getName () == null) {
+ * // no name yet, don't try to create behavior for it.
+ * }
+ * else {
+ * CompTypeSync.delegateImplSync (intf, null);
+ * }
+ * }
+ */
+ // registerOperations (intf);
+ }
+ } else if(evtType == Notification.REMOVE) {
+ Object oldValue = notification.getOldValue();
+ if(oldValue instanceof BehavioralFeature) {
+ BehavioralFeature toBeRemoved = (BehavioralFeature)oldValue;
+
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Interface.adapter, remove " + toBeRemoved.getName() + " from " + name);
+
+ Interface intf = (Interface)notifier;
+ // TODO: share code? with UMLExecutor
+ CompImplSync.syncViaInterface(intf, toBeRemoved);
+ }
+ } else {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Interface.adapter, code: " + notification.getEventType() + ", name: " + name);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/ModelListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/ModelListener.java
new file mode 100644
index 00000000000..88c8defb20a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/ModelListener.java
@@ -0,0 +1,41 @@
+package org.eclipse.papyrus.qompass.designer.core.listeners;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Port;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+
+/**
+ * Main listener for model changes (registered via plugin.xml). It will delegate
+ * to the sub-listeners for specific sub-elements (type, operation, port, ...) that
+ * can be found in this package
+ *
+ * @author ansgar
+ *
+ */
+public class ModelListener implements IPapyrusListener {
+
+ public void notifyChanged(Notification notification) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "ModelListener.notifyChanged: " + notification.getFeature());
+ Object notifier = notification.getNotifier();
+ if(notifier instanceof NamedElement) {
+ String name = ((NamedElement)notifier).getName();
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Change notification for element: " + name);
+ }
+
+ if(notifier instanceof Operation) {
+ OperationListener.getInstance().notifyChanged(notification);
+ } else if(notifier instanceof Parameter) {
+ ParameterListener.getInstance().notifyChanged(notification);
+ } else if(notifier instanceof Interface) {
+ InterfaceListener.getInstance().notifyChanged(notification);
+ } else if(notifier instanceof Port) {
+ PortListener.getInstance().notifyChanged(notification);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/OperationListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/OperationListener.java
new file mode 100644
index 00000000000..2479b1640cf
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/OperationListener.java
@@ -0,0 +1,56 @@
+package org.eclipse.papyrus.qompass.designer.core.listeners;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.sync.CompImplSync;
+
+/**
+ * Track changes of an operation, typically within an interface provided
+ * by a port. This is used to update derived oeprations, e.g. when parameters
+ * are added or removed.
+ *
+ * @author ansgar
+ *
+ */
+public class OperationListener implements IPapyrusListener {
+
+ // TODO: used by TypeAdapter (useful??)
+ public static OperationListener getInstance() {
+ if(instance == null) {
+ instance = new OperationListener();
+ }
+ return instance;
+ }
+
+ private static OperationListener instance = null;
+
+ public void notifyChanged(Notification notification) {
+ int evtType = notification.getEventType();
+ Object notifier = notification.getNotifier();
+ String name = "";
+ if(notifier instanceof NamedElement) {
+ name = ((NamedElement)notifier).getName();
+ }
+ if((evtType == Notification.SET) || (evtType == Notification.ADD)) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Operation.adapter, set " + name);
+
+ if(notifier instanceof Operation) {
+ Operation operation = (Operation)notifier;
+
+ Element owner = operation.getOwner();
+ if(owner instanceof Interface) {
+ Interface intf = (Interface)owner;
+ CompImplSync.syncViaInterface(intf);
+ }
+ }
+ } else {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Operation.adapter, code: " + notification.getEventType() + ", name: " + name);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/ParameterListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/ParameterListener.java
new file mode 100644
index 00000000000..71435d1d77b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/ParameterListener.java
@@ -0,0 +1,48 @@
+package org.eclipse.papyrus.qompass.designer.core.listeners;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.sync.CompImplSync;
+
+public class ParameterListener implements IPapyrusListener {
+
+ public static ParameterListener getInstance() {
+ if(instance == null) {
+ instance = new ParameterListener();
+ }
+ return instance;
+ }
+
+ private static ParameterListener instance = null;
+
+ public void notifyChanged(Notification notification) {
+ int evtType = notification.getEventType();
+ Object notifier = notification.getNotifier();
+ String name = "";
+ if(notifier instanceof NamedElement) {
+ name = ((NamedElement)notifier).getName();
+ }
+ if((evtType == Notification.SET) || (evtType == Notification.ADD)) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Parameter.adapter, set " + name);
+
+ if(notifier instanceof Parameter) {
+ Element owner = ((Parameter)notifier).getOwner();
+ if(owner instanceof Operation) {
+ owner = owner.getOwner();
+ if(owner instanceof Interface) {
+ CompImplSync.syncViaInterface((Interface)owner);
+ }
+ }
+ }
+ } else {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Parameter.adapter, code: " + notification.getEventType() + ", name: " + name);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/PortListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/PortListener.java
new file mode 100644
index 00000000000..fcc8b52ee79
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/listeners/PortListener.java
@@ -0,0 +1,62 @@
+package org.eclipse.papyrus.qompass.designer.core.listeners;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.ENamedElement;
+import org.eclipse.papyrus.infra.core.listenerservice.IPapyrusListener;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Port;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.sync.CompTypeSync;
+
+public class PortListener implements IPapyrusListener {
+
+ public Notifier getTarget() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public static PortListener getInstance() {
+ if(instance == null) {
+ instance = new PortListener();
+ }
+ return instance;
+ }
+
+ private static PortListener instance;
+
+
+ public boolean isAdapterForType(Object type) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void notifyChanged(Notification notification) {
+ int evtType = notification.getEventType();
+ Object notifier = notification.getNotifier();
+
+ if(evtType == Notification.SET) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Port adapter, set: " + ((NamedElement)notifier).getName());
+ Object obj = notification.getFeature();
+ if(notifier instanceof Port) {
+ Port port = (Port)notifier;
+ if(obj instanceof ENamedElement) {
+ ENamedElement ne = (ENamedElement)obj;
+ if(ne.getName().equals("name")) {
+ String oldName = notification.getOldStringValue();
+ CompTypeSync.renamePort((Class)port.getOwner(), port, oldName);
+ // profile modifications are also be indicated as name changes, but might imply a change
+ // of provided and required interfaces.
+ CompTypeSync.syncPort((Class)port.getOwner(), port);
+ } else if(ne.getName().equals("type")) {
+ CompTypeSync.syncPort((Class)port.getOwner(), port);
+ }
+ }
+ }
+ } else {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "Port adapter, code: " + notification.getEventType() + ", " + notifier);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/make/GenerateMakefile.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/make/GenerateMakefile.java
new file mode 100644
index 00000000000..b061e60e2f9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/make/GenerateMakefile.java
@@ -0,0 +1,103 @@
+package org.eclipse.papyrus.qompass.designer.core.make;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+
+/*
+ * TODO:
+ * - Currently not used (and unclear, if useful)
+ *
+ * - Determination of root folder
+ * - files within fileList have relative folder names? (if not assure)
+ * - supporting def file (not only for Accord)
+ * - integration with execution
+ */
+
+/**
+ * Generate a makefile based on found source files, i.e. .cpp files
+ *
+ * @author manel
+ *
+ */
+@Deprecated
+public class GenerateMakefile {
+
+ /**
+ * Makefile Generation Algorithm:
+ * For each Node
+ * include $(ROOT_PATH)/Makefile.defs
+ * NAME = Util
+ * SRCS =\
+ * File1.cpp\
+ * File2.cpp\
+ * ...
+ * FileN.cpp
+ * include $(ROOT_PATH)/Makefile.rules
+ */
+ public static void generate() {
+ ArrayList<String> fileList = new ArrayList<String>();
+ ArrayList<String> folderList = new ArrayList<String>();
+ ArrayList<String> nodeList = new ArrayList<String>();
+ ArrayList<String> nodeSources = new ArrayList<String>();
+
+ ShowFiles showFiles = new ShowFiles("/local/home/ansgar/workspace-v3.3/TestCppProject/AluSocketGen");
+
+ showFiles.getFilesRec(fileList, folderList);
+ nodeList = showFiles.findNodesDir(folderList);
+ for(String node : nodeList) {
+ nodeSources = showFiles.getNodeSources(fileList, node);
+ String nodePath = showFiles.getRootPath() + "/" + node + "/Makefile";
+ createFileList(nodePath, nodeSources, node);
+ }
+ }
+
+ /**
+ * Create a list of .cpp files
+ *
+ * @param fileName
+ * @param cppFileList
+ * @param NodeName
+ */
+ public static void createFileList(String fileName, ArrayList<String> cppFileList, String NodeName) {
+ // create the makefile
+ try {
+ java.io.File makefile = new java.io.File(fileName);
+
+ makefile.createNewFile();
+ // not avail in Java 1.5?
+ // makefile.setWritable(true);
+
+ FileOutputStream writer = new java.io.FileOutputStream(makefile);
+
+ writer.write("include $(ACCORD_ROOT)/Makefile.defs\n\n".getBytes());
+ writer.write(("NAME=" + NodeName + "\n\n").getBytes());
+
+ // Calculate list of sources
+ writer.write("SRCS=\\\n".getBytes());
+
+ if(cppFileList != null && cppFileList.size() != 0) {
+
+ // Calculate list of .cpp files
+ for(int i = 0; i < cppFileList.size(); i++) {
+ writer.write(("\t" + cppFileList.get(i)).getBytes());
+ if(i < cppFileList.size() - 1) {
+ // add \ to all but last item
+ writer.write("\\".getBytes());
+ }
+ writer.write("\n".getBytes());
+ }
+ }
+ writer.write("\n".getBytes());
+
+ writer.write("include $(ACCORD_ROOT)/Makefile.rules".getBytes());
+
+ writer.flush();
+ writer.close();
+ } catch (IOException e) {
+ Log.log(Log.ERROR_MSG, Log.UTILS, "error during writing of makefile: " + e.getMessage());
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/make/ShowFiles.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/make/ShowFiles.java
new file mode 100644
index 00000000000..007b8e7b0fc
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/make/ShowFiles.java
@@ -0,0 +1,90 @@
+package org.eclipse.papyrus.qompass.designer.core.make;
+
+import java.io.File;
+import java.util.ArrayList;
+
+@Deprecated
+public class ShowFiles {
+
+ /**
+ * Initialize the ShowFiles class
+ *
+ * @param rootPath
+ * the path of a folder, that in turn contains a set of folders. It is assume that the
+ * latter contain code related to a specific node
+ */
+ public ShowFiles(String rootPath) {
+ m_rootPath = rootPath;
+ }
+
+ private String m_rootPath;
+
+ public String getRootPath() {
+ return m_rootPath;
+ }
+
+ /**
+ * takes as input the list of all directories that are included under a root path (allDir), and
+ * the root path (in case different from ACCORD_ROOT), and potentially, a list of (non empty) files,
+ * which will be enriched with the set of source files (.cpp) under all directories under the root path
+ */
+ public void getFilesRec(ArrayList<String> allFiles, ArrayList<String> allDir) {
+ getFilesRec(allFiles, allDir, m_rootPath);
+ }
+
+
+ public void getFilesRec(ArrayList<String> fileList, ArrayList<String> folderList, String root) {
+ File f = new File(root);
+ File[] listFiles = f.listFiles();
+ for(File file : listFiles) {
+ if(file.isDirectory()) {
+ // call recursively with
+ getFilesRec(fileList, folderList, file.toString());
+ folderList.add(file.toString());
+ } else {
+ if(file.toString().endsWith(".cpp")) {
+ // found a C++ file
+ fileList.add(file.toString());
+ }
+ }
+ }
+ }
+
+ /**
+ * takes as input the list of all directories that are included under a root path (folderList),
+ * in order to provide as a result the subset of directories, corresponding to the nodes
+ */
+ public ArrayList<String> findNodesDir(ArrayList<String> folderList) {
+ ArrayList<String> allNodes = new ArrayList<String>();
+ for(String dir : folderList) {
+ String tmp = dir.replaceFirst(m_rootPath, "");
+ // all the nodes are at the level (ACCORD_ROOT + 1)
+ tmp = tmp.trim().replaceFirst("/", "");
+ if(!tmp.contains("/")) {
+ allNodes.add(tmp.trim());
+ }
+ }
+ return allNodes;
+ }
+
+ /**
+ * takes as input the list of all files that are included under ACCORD_ROOT path (allFiles), and
+ * the node name (nodeName) in order to provide as a result the subset of files, corresponding to the
+ * sources of the node (NodeName)
+ */
+ public ArrayList<String> getNodeSources(ArrayList<String> allFiles, String nodeName) {
+ ArrayList<String> sourceFilesPath = new ArrayList<String>();
+
+ for(String filePath : allFiles) {
+ if(filePath.contains(nodeName)) {
+ // path is related to given node
+ int index = filePath.indexOf(nodeName);
+ String tmp = filePath.substring(index);
+ index = tmp.indexOf("/");
+ tmp = tmp.substring(index + 1);
+ sourceFilesPath.add(tmp.trim());
+ }
+ }
+ return sourceFilesPath;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferenceConstants.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferenceConstants.java
new file mode 100644
index 00000000000..1bb7805538e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferenceConstants.java
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.qompass.designer.core.preferences;
+
+/**
+ * Constant definitions for plug-in preferences
+ */
+public class QompassPreferenceConstants {
+
+ /**
+ * For attributes, the default "aggregation kind" value is "none". When this option is set
+ * it will be treated as composite
+ */
+ public static final String P_TREAT_NONE_AS_COMPOSITE = "treatNoneAsComposite";
+
+ public static final String P_ALL_ATTRIBUTES_ARE_CONFIG_ATTRIBUTES = "allAttributesAreConfigAttributes";
+
+ public static final String P_SHOW_PROV_REQ_AS_PORT_ICONS = "showProvReqAsPortIcons";
+
+ public static final String P_CODE_GEN_PREFIX = "codeGenPrefix";
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferenceInitializer.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferenceInitializer.java
new file mode 100644
index 00000000000..572749c050a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferenceInitializer.java
@@ -0,0 +1,37 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.qompass.designer.core.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+/**
+ * Class used to initialize default preference values.
+ */
+public class QompassPreferenceInitializer extends AbstractPreferenceInitializer {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+ */
+ public void initializeDefaultPreferences() {
+ IPreferenceStore store = org.eclipse.papyrus.qompass.designer.core.Activator.getDefault().getPreferenceStore();
+ store.setDefault(QompassPreferenceConstants.P_SHOW_PROV_REQ_AS_PORT_ICONS, false);
+ store.setDefault(QompassPreferenceConstants.P_ALL_ATTRIBUTES_ARE_CONFIG_ATTRIBUTES, false);
+ store.setDefault(QompassPreferenceConstants.P_TREAT_NONE_AS_COMPOSITE, false);
+ store.setDefault(QompassPreferenceConstants.P_CODE_GEN_PREFIX, "// generated with Qompass toolchain");
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferencePage.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferencePage.java
new file mode 100644
index 00000000000..6fe09481cf3
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/preferences/QompassPreferencePage.java
@@ -0,0 +1,75 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA LIST - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.qompass.designer.core.preferences;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import org.eclipse.papyrus.qompass.designer.core.Activator;
+
+/**
+ * This class represents the EC3M preference page
+ * <p>
+ * This page is used to modify preferences only. They are stored in the preference store that belongs to the main plug-in class. That way, preferences
+ * can be accessed directly via the preference store.
+ */
+
+public class QompassPreferencePage
+ extends FieldEditorPreferencePage
+ implements IWorkbenchPreferencePage {
+
+ public QompassPreferencePage() {
+ super(GRID);
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription("Qompass options");
+ }
+
+ /**
+ * Creates the field editors. Field editors are abstractions of
+ * the common GUI blocks needed to manipulate various types
+ * of preferences. Each field editor knows how to save and
+ * restore itself.
+ */
+ public void createFieldEditors() {
+ addField(new BooleanFieldEditor(
+ QompassPreferenceConstants.P_SHOW_PROV_REQ_AS_PORT_ICONS,
+ "&Show icons associated with derived provided/required interfaces instead of kind",
+ getFieldEditorParent()));
+
+ addField(new BooleanFieldEditor(
+ QompassPreferenceConstants.P_TREAT_NONE_AS_COMPOSITE,
+ "Treat aggregation kind \"&None\" as \"Composite\"",
+ getFieldEditorParent()));
+
+ addField(new BooleanFieldEditor(
+ QompassPreferenceConstants.P_ALL_ATTRIBUTES_ARE_CONFIG_ATTRIBUTES,
+ "Treat all attributes as configuration attributes (if false, only attributes of abstract classes and attributes explicitly tagged as FCM::ConfigurationProperty will be considered as configuration attribute",
+ getFieldEditorParent()));
+
+ addField(new StringFieldEditor(
+ QompassPreferenceConstants.P_CODE_GEN_PREFIX,
+ "Code generation prefix: ", getFieldEditorParent()));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ */
+ public void init(IWorkbench workbench) {
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java
new file mode 100644
index 00000000000..b929aa42d5b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java
@@ -0,0 +1,428 @@
+package org.eclipse.papyrus.qompass.designer.core.sync;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.InterfaceRealization;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import FCM.DerivedElement;
+
+import org.eclipse.papyrus.qompass.designer.core.CommandSupport;
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.OperationUtils;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.UpdateUtils;
+
+/**
+ * Synchronize component implementation classes.
+ * An implementation depends on the component type in the following way:
+ * (1) It has to realize the interfaces that are provided by the components ports, unless
+ * the port is delegated
+ * (1b) For each realized interface, its operations need to be implemented (the tool should detect and report
+ * double entries which can be resolved via delegation)
+ * (2) It can use interface that are required by the component ports. These changes are reflected in the
+ * context object, but are currently not propagated on an implementation level.
+ *
+ * The first aspect may be triggered by
+ * (a) modification of the port (name, kind or type)
+ * (b) modification due to changes of the interface: rename the interface itself or add, remove or rename operations
+ * and add, remove or rename parameters.
+ *
+ * InterfaceRealizations are implemented by means of stereotyped generalizations. This has the advantage
+ * that the operation itself is inherited and does not have to be synchronized.
+ *
+ * @author ansgar
+ *
+ */
+public class CompImplSync {
+
+ public static void syncViaInterface(Interface intf) {
+ syncViaInterface(intf, null);
+ }
+
+ /**
+ * Delegate a synchronization operation to one or more implementations when an interface
+ * (which may have changed) is given. I.e. this operation is called when an operation
+ * of an implemented interface is added, removed or modified.
+ *
+ * @param an
+ * interface which may be implemented by a set of component implementations.
+ * @param port
+ */
+ public static void syncViaInterface(Interface intf, BehavioralFeature toBeRemoved) {
+ // find all implementations of this interface
+ for(DirectedRelationship relationship : intf.getTargetDirectedRelationships(UMLPackage.eINSTANCE.getInterfaceRealization())) {
+ InterfaceRealization ir = (InterfaceRealization)relationship;
+ Classifier cl = ir.getImplementingClassifier();
+ if(cl instanceof Class) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "interface rel-ship:" + cl.getName());
+ Class implementation = (Class)cl;
+ // syncRealizations (implementation);
+ CompImplSync.interfaceModifications(implementation, toBeRemoved);
+ }
+ }
+ }
+
+ /**
+ * Delegate a synchronization operation to one or more implementations when a component
+ * type is given.
+ * The function will in particular handle realization operations due to provided
+ * ports and the behaviors associated with it (e.g. opaque-behaviors implementing the provided
+ * operations of a component)
+ *
+ * @param a
+ * component type or a realized interface
+ * @param port
+ */
+ public static boolean syncViaType(Class compType, boolean addOnly) {
+ // find all implementations ...
+ boolean foundGeneralization = false;
+ for(DirectedRelationship relationship : compType.getTargetDirectedRelationships(UMLPackage.eINSTANCE.getGeneralization())) {
+ if(relationship instanceof Generalization) {
+ foundGeneralization = true;
+ Classifier cl = ((Generalization)relationship).getSpecific();
+ if(cl instanceof Class) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "syncViaType => implementation: " + cl.getName());
+ Class implementation = (Class)cl;
+ if(Utils.isCompImpl(cl)) {
+ // add realization relationship only for implementations
+ if(addOnly) {
+ addRealizations(implementation);
+ // syncContextOps (implementation, false);
+ } else {
+ syncRealizations(implementation);
+ // syncContextOps (implementation, true);
+ }
+ }
+ }
+ }
+ }
+ return foundGeneralization;
+ }
+
+ /*
+ * public static void renamePortViaType (Class compType, Port port, String oldName)
+ * {
+ * // find all implementations ...
+ * for (DirectedRelationship relationship :
+ * compType.getTargetDirectedRelationships (UMLPackage.eINSTANCE.getGeneralization ()))
+ * {
+ * if (relationship instanceof Generalization) {
+ * Classifier cl = ((Generalization) relationship).getSpecific ();
+ * if (cl instanceof Class) {
+ * renamePort ((Class) cl, port, oldName);
+ * }
+ * }
+ * }
+ * }
+ */
+
+ /**
+ * Rename the operations/attributes associated with a port, if the ports
+ * name or type has changed.
+ *
+ * @param component
+ * @param port
+ */
+ public static void renamePort(Class implementation, Port port, String oldName) {
+ Interface requiredIntf = PortUtils.getRequired(port);
+
+ if(requiredIntf != null) {
+ String oldOpName = PrefixConstants.getConnQ_Prefix + oldName;
+ NamedElement ne = implementation.getMember(oldOpName, false, UMLPackage.eINSTANCE.getOperation());
+ if(ne instanceof Operation) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_SYNC, "rename " + oldOpName);
+ ne.setName(PrefixConstants.getConnQ_Prefix + port.getName());
+ }
+ }
+ }
+
+ /**
+ * Add an interface realization relationship from an implementation (Class) towards an interface
+ *
+ * @param implementation
+ * A component implementation
+ * @param providedIntf
+ * The interface that is provided at one of its port
+ */
+ protected static void addRealization(final Class implementation, final Interface providedIntf) {
+ if(!hasRealization(implementation, providedIntf)) {
+ InterfaceRealization ir =
+ implementation.createInterfaceRealization(calcRealizationName(providedIntf), providedIntf);
+ ir.getClients().add(implementation);
+ ir.getSuppliers().add(providedIntf);
+ }
+ }
+
+ /**
+ * Calculate the name of an interface realization towards an interface that is
+ * provided at one of its ports
+ *
+ * @param providedIntf
+ * an interface provided by a component
+ * @return the calculated name
+ */
+ protected static String calcRealizationName(Interface providedIntf) {
+ String name = providedIntf.getName();
+ if(name == null) {
+ name = "undefined";
+ }
+ return "derived realization of " + name;
+ }
+
+ /**
+ * return existing interface-realization relationship
+ *
+ * @param implementation
+ * @param intf
+ * @return
+ */
+ protected static InterfaceRealization getRealization(Class implementation, Interface intf) {
+ return implementation.getInterfaceRealization(null, intf);
+ }
+
+ /**
+ * check, whether an interface-realization relationship already exists
+ *
+ * @param implementation
+ * @param intf
+ * @return
+ */
+ protected static boolean hasRealization(Class implementation, Interface intf) {
+ return getRealization(implementation, intf) != null;
+ }
+
+ /**
+ * Synchronize realization (generalization) relationship.
+ *
+ * @param implementation
+ * @param port
+ */
+ public static void syncRealizations(Class implementation) {
+ EList<Interface> providedIntfs = addRealizations(implementation);
+ removeRealizations(providedIntfs, implementation);
+ }
+
+ /**
+ * add derived realization relationships of a component implementation
+ * due to provided interfaces of its ports
+ *
+ * @param implementation
+ */
+ public static EList<Interface> addRealizations(Class implementation) {
+ // create a list of all provided interfaces and check whether realization relationship
+ // exists. If not, create
+ EList<Interface> providedIntfs = new BasicEList<Interface>();
+ for(Port port : PortUtils.getAllPorts2(implementation)) {
+ Interface providedIntf = PortUtils.getProvided(port);
+ ConnectorEnd connEnd = ConnectorUtils.getDelegation(implementation, port);
+ // check that there is no delegation to a part which in turn has to implement the operations.
+ if((providedIntf != null) && (connEnd == null)) {
+ if(false && providedIntfs.contains(providedIntf)) {
+ // Turn that into a warning?
+ throw new RuntimeException("The interface " + providedIntf.getName() +
+ " is provided by more than one port of class <" + implementation.getQualifiedName() +
+ ">, inputs would therefore be undistinguishable");
+ }
+ providedIntfs.add(providedIntf);
+ InterfaceRealization ir = getRealization(implementation, providedIntf);
+ if(ir == null) {
+ addRealization(implementation, providedIntf);
+ } else {
+ String name = calcRealizationName(providedIntf);
+ if(!name.equals(ir.getName())) {
+ ir.setName(name);
+ }
+ }
+ }
+ }
+ return providedIntfs;
+ }
+
+ /**
+ * remove derived realization relationships of a component implementation
+ * due to provided interfaces of its ports, i.e. remove those for which the
+ * port no longer provides the interface.
+ *
+ * @param implementation
+ */
+ private static void removeRealizations(EList<Interface> providedIntfs, final Class implementation) {
+ // now loop through all interface realization relations and remove those that are not
+ // related to a provided port.
+ final EList<InterfaceRealization> toBeRemoved = new BasicEList<InterfaceRealization>();
+ for(InterfaceRealization ir : implementation.getInterfaceRealizations()) {
+ String name = ir.getName();
+ // automatically added interface realization is identified via its name (simpler
+ // compared to use of stereotype)
+ if((name != null) && name.startsWith("derived")) {
+ Interface inheritedIntf = ir.getContract();
+ if(!providedIntfs.contains(inheritedIntf)) {
+ toBeRemoved.add(ir);
+ }
+ }
+ }
+ if(toBeRemoved.size() > 0) {
+ // remove InterfaceRealization, since not part of provided interfaces
+ CommandSupport.exec(TransactionUtil.getEditingDomain(implementation), "Sync. type and implementation", new Runnable() {
+
+ public void run() {
+ // implCopy = implementation;
+ for(InterfaceRealization ir : toBeRemoved) {
+ ir.destroy();
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * The interface that types a port has been modified. Subsequently, the names of
+ * methods have to be adapted accordingly, methods have to be removed or added
+ *
+ * @param implementation
+ * @param port
+ * @param newName
+ */
+ public static void interfaceModifications(Class implementation, BehavioralFeature toBeRemoved) {
+ syncDerivedOperations(implementation);
+
+ EList<Operation> ownedOperations = implementation.getOwnedOperations();
+ // loop through all methods, adapt name according to specification name.
+ Iterator<Behavior> behaviors = implementation.getOwnedBehaviors().iterator();
+ while(behaviors.hasNext()) {
+ Behavior behavior = behaviors.next();
+ BehavioralFeature bf = behavior.getSpecification();
+ if((bf != null) && ownedOperations.contains(bf)) {
+ BehavioralFeature sourceBf = (BehavioralFeature)
+ UpdateUtils.getSource(bf);
+
+ // if an operation is scheduled for deletion, it still exists at this
+ // point (This operation is called by an InterfaceListener which gets called
+ // before the deletion takes place) and the specification of associated behaviors
+ // still point to it. Therefore the check toBeRemoved is added.
+ if(sourceBf != toBeRemoved) {
+ String name = calcBehaviorName(sourceBf, implementation);
+ if(!name.equals(behavior.getName())) {
+ behavior.setName(name);
+ }
+ }
+ }
+ }
+ }
+
+ public static void syncDerivedOperations(Class implementation) {
+ // check for unimplemented operations
+ // EList<DirectedRelationship> relShips = implementation.getSourceDirectedRelationships (UMLPackage.eINSTANCE.getInterfaceRealization ());
+ EList<Interface> realizedInterfaces = new BasicEList<Interface>();
+ // implementation.getInterfaceRealizations returns wrong value??
+
+ EList<Operation> ownedOperations = implementation.getOwnedOperations();
+ for(InterfaceRealization ir : implementation.getInterfaceRealizations()) {
+ /*
+ * for (DirectedRelationship relShip : relShips)
+ * if (relShip instanceof InterfaceRealization) {
+ * InterfaceRealization ir = (InterfaceRealization) relShip;
+ */
+ Interface intf = ir.getContract();
+ if(intf == null) {
+ // should not happen?
+ continue;
+ }
+ realizedInterfaces.add(intf);
+
+ for(Operation operation : intf.getAllOperations()) {
+ Operation copiedOperation = (Operation)
+ UpdateUtils.getDerivedElement(ownedOperations, operation);
+ if(copiedOperation == null) {
+ // no owned operation derived from the interface operation found.
+ // Would indicate normally that there is no suitable owned operation.
+ // However: stereotype values may not be available during model load, check
+ // whether there is an identical operation, before copying one.
+ copiedOperation = OperationUtils.getSameOperation(operation, implementation);
+ if(copiedOperation == null) {
+ copiedOperation = implementation.createOwnedOperation(operation.getName(), null, null);
+ OperationUtils.syncOperation(operation, copiedOperation);
+ copiedOperation.setIsAbstract(false);
+ }
+ UpdateUtils.setSource(copiedOperation, operation);
+ } else if(!OperationUtils.isSameOperation(operation, copiedOperation)) {
+ OperationUtils.syncOperation(operation, copiedOperation);
+ copiedOperation.setIsAbstract(false);
+ }
+ }
+ }
+
+ // remove operations that are no longer provided via an interface of a port (and
+ // that are derived elements, i.e. have a source attribute)
+ Iterator<Operation> ownedOpsIter = ownedOperations.iterator();
+ while(ownedOpsIter.hasNext()) {
+ Operation ownedOp = ownedOpsIter.next();
+
+ DerivedElement de = StUtils.getApplication(ownedOp, DerivedElement.class);
+ if(de != null) {
+ if(de.getSource() instanceof Operation) {
+
+ Operation sourceOp = (Operation)de.getSource();
+ // check, whether sourceOp is offered by one of the realized interfaces
+ boolean contains = false;
+ for(Interface realizedIntf : realizedInterfaces) {
+ if(realizedIntf.getAllOperations().contains(sourceOp)) {
+ contains = true;
+ }
+ }
+ if(!contains) {
+ // operation belongs to an interface which is not implemented => remove
+ ownedOpsIter.remove();
+ ownedOp.destroy();
+ }
+ }
+ else if(de.getSource() == null) {
+ // source element does not exist => remove
+ ownedOpsIter.remove();
+ ownedOp.destroy();
+ }
+ }
+ }
+ }
+
+
+
+ /**
+ * Calculate the name of a behavior for a given operation
+ * TODO better handling of overloading (better representation of signature)
+ *
+ * @param operation
+ * @return
+ */
+ private static String calcBehaviorName(BehavioralFeature bf, Classifier cl) {
+ /*
+ * Iterator<Operation> operations = cl.getOperations ().iterator ();
+ * while (operations.hasNext ()) {
+ * Operation op = operations.next ();
+ * if ((op.getName () == bf.getName ()) && (op != bf)) {
+ * // at least one other operation with same name, return long name
+ * return bf.getName () + bf.getOwnedParameters ().toString ();
+ * }
+ * }
+ */
+ return bf.getName();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompTypeSync.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompTypeSync.java
new file mode 100644
index 00000000000..7e4c4410491
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompTypeSync.java
@@ -0,0 +1,40 @@
+package org.eclipse.papyrus.qompass.designer.core.sync;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Port;
+
+/**
+ * Create a UML like executor, i.e.
+ * for each port p with a provided interface I, add a get_p to the executor
+ * for each port q with a required interface I, add an attribute q to the executor. This
+ * attribute is manipulated by the container.
+ *
+ * @author ansgar
+ *
+ */
+public class CompTypeSync {
+
+ /**
+ * Rename the operations/attributes associated with a port, if the ports
+ * name or type has changed.
+ *
+ * @param component
+ * @param port
+ */
+ public static void renamePort(Class component, Port port, String oldName) {
+ // CompImplSync.renamePortViaType (component, port, oldName);
+ CompImplSync.renamePort(component, port, oldName);
+ }
+
+
+ /**
+ * Synchronizes the operations/attributes associated with a port
+ *
+ * @param component
+ * @param port
+ */
+ public static void syncPort(Class component, Port port) {
+ CompImplSync.syncViaType(component, false);
+ // CompImplSync.syncContextOps (component, true);
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/DepPlanSync.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/DepPlanSync.java
new file mode 100644
index 00000000000..efec0f4e91e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/DepPlanSync.java
@@ -0,0 +1,132 @@
+package org.eclipse.papyrus.qompass.designer.core.sync;
+
+import java.util.Iterator;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.InstanceValue;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import FCM.DeploymentPlan;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Currently unused synchronization for deployment plans.
+ *
+ * @see comp.cea.ec3m.gentools.core.listeners.DepPlanListener
+ *
+ * @author ansgar
+ */
+public class DepPlanSync {
+
+ /**
+ * Synchronize a deployment plan: remove slots that refer to properties that exist no longer
+ * and add those that do not exist yet
+ *
+ * @param element
+ * an arbitrary element of the source model (i.e. the model that will
+ * store the deployment plan
+ * @throws TransformationException
+ */
+ public static void syncAllDepPlans(Element element) {
+ for(Package depPlan : DepPlanUtils.getAllDepPlans(element)) {
+ syncDepPlan(depPlan);
+ }
+ }
+
+ /**
+ * Synchronize a deployment plan: remove slots that refer to properties that exist no longer
+ * and add those that do not exist yet
+ *
+ * @param depPlan
+ * @throws TransformationException
+ */
+ public static void syncDepPlan(Package depPlan) {
+ removeUnusedSlots(depPlan);
+ // EList<InstanceSpecification> list = new BasicEList<InstanceSpecification>();
+ DeploymentPlan cdp = StUtils.getApplication(depPlan, DeploymentPlan.class);
+ if(cdp == null) {
+ return;
+ }
+ InstanceSpecification mainInstance = cdp.getMainInstance();
+ addCDP(depPlan, mainInstance, mainInstance.getName());
+ // now add elements that are not in the plan - although they should
+ // avoid to replicate code already in dep-creation. => createDepPlan(top)
+ // strategy: create new dep-plan and compare?
+ }
+
+ private static void addCDP(Package depPlan, InstanceSpecification instance, String canonicalName)
+ {
+ Class implementation = DepUtils.getImplementation(instance);
+ if(!instance.getName().equals(canonicalName)) {
+ instance.setName(canonicalName);
+ }
+ // check sub-instances
+ for(Slot slot : instance.getSlots()) {
+ InstanceSpecification subInstance = DepUtils.getInstance(slot);
+ if(subInstance != null) {
+ addCDP(depPlan, subInstance, canonicalName + "." + slot.getDefiningFeature().getName());
+ }
+ }
+ for(Property attribute : Utils.getParts(implementation)) {
+ Type type = attribute.getType();
+ if(type instanceof Class) {
+ if(!hasSlot(instance, attribute)) {
+ try {
+ InstanceSpecification partIS =
+ DepCreation.createDepPlan(depPlan, (Class)type, instance.getName() + "." + attribute.getName(), true);
+ DepPlanUtils.createSlot(depPlan, instance, partIS, attribute);
+ } catch (TransformationException e) {
+ Log.log(Log.ERROR_MSG, Log.DEPLOYMENT, e.getMessage());
+ }
+ }
+ }
+ }
+ }
+
+ private static boolean hasSlot(InstanceSpecification instance, Property attribute) {
+ for(Slot slot : instance.getSlots()) {
+ if(slot.getDefiningFeature() == attribute) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static void removeUnusedSlots(Package depPlan) {
+ // remove elements that are no longer in the plan
+ for(NamedElement member : depPlan.getMembers()) {
+ if(member instanceof InstanceSpecification) {
+ InstanceSpecification instance = (InstanceSpecification)member;
+ Iterator<Slot> slotIt = instance.getSlots().iterator();
+ while(slotIt.hasNext()) {
+ Slot slot = slotIt.next();
+ if(slot.getDefiningFeature() == null) {
+ // property has been removed => remove associated slot
+ for(ValueSpecification value : slot.getValues()) {
+ if(value instanceof InstanceValue) {
+ InstanceSpecification is = ((InstanceValue)value).getInstance();
+ DepPlanUtils.delDepPlan(is);
+ }
+ }
+ slot.destroy();
+ slotIt.remove();
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/ConnectorBinding.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/ConnectorBinding.java
new file mode 100644
index 00000000000..b9d498ae853
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/ConnectorBinding.java
@@ -0,0 +1,420 @@
+package org.eclipse.papyrus.qompass.designer.core.templates;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.ParameterableElement;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateParameter;
+import org.eclipse.uml2.uml.TemplateParameterSubstitution;
+import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Type;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.CreationUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+public class ConnectorBinding {
+
+ /**
+ * Helper function for getActual
+ *
+ * @param port
+ * a port of the the connector template (not evaluated except for debugging output)
+ * @param connector
+ * the connector that is checked for reification
+ * @param composite
+ * a composite class
+ * @param actual
+ * the current candidate for an actual, i.e. result of previous attempts to bind (at different connector ends)
+ * @param isProvided
+ * is an interface provided or required.
+ * @return the type at the "other" (makes sense for property connector only) end of a connector
+ * @throws TransformationException
+ */
+ private static Type matchOtherEnd(Port port, Feature connector, Type actual, boolean isProvided)
+ throws TransformationException {
+ if(connector instanceof Connector) {
+ return matchOtherEnd(port, (Connector)connector, actual, isProvided);
+ }
+ else if(connector instanceof Property) {
+ return matchOtherEnd(port, (Property)connector, actual, isProvided);
+ }
+ return null;
+ }
+
+ private static Type matchOtherEnd(Port port, Connector connector, Type actual, boolean isProvided)
+ throws TransformationException {
+ // the template provides the formal parameter at one of its ports. Now examine
+ // with whom this port is connected, i.e. examine all connectorEnds
+ // The type of the connected port determines the binding.
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, " getActual: " + (isProvided ? "provided" : "required") +
+ " port type matches, port = " + port.getName());
+
+ for(ConnectorEnd connEnd : connector.getEnds()) {
+ // the connector end targets a port of a part or the composite (in case of delegation)
+ ConnectableElement connElem = connEnd.getRole();
+ if(connElem instanceof Port) {
+ Port otherPort = (Port)connElem;
+ Interface otherInterface;
+
+ // distinction between assembly or delegation (other end is null) connectors
+ boolean isAssembly = (connEnd.getPartWithPort() != null);
+
+ if(isProvided == isAssembly) {
+ // need required for other, if first port isProvided and assembly, or if first port isRequired and delegation
+ otherInterface = PortUtils.getRequired(otherPort);
+ } else {
+ otherInterface = PortUtils.getProvided(otherPort);
+ }
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "connects port, otherInterface = " + otherInterface);
+ if(otherInterface != null) {
+ if(actual == null) {
+ actual = otherInterface;
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "actual return interface: " + actual.getQualifiedName());
+ } else if(actual != otherInterface) {
+ throw new TransformationException("cannot find a consistent binding for port " + port.getName() +
+ " of connector " + connector.getName() + ". Formal already bound to type \"" + actual.getName() + "\"");
+ }
+ }
+ }
+ }
+ return actual;
+ }
+
+ private static Type matchOtherEnd(Port port, Property partConnector, Type actual, boolean isProvided)
+ throws TransformationException {
+ // the template provides the formal parameter at one of its ports. Now examine
+ // with whom this port is connected, i.e. examine all connectors of the
+ // composite. The type of the connected port determines the binding.
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, " getActual: " + (isProvided ? "provided" : "required") +
+ " port type matches, port = " + port.getName());
+
+ for(Connector connector : partConnector.getClass_().getOwnedConnectors()) {
+ if(ConnectorUtils.connectsPart(connector, partConnector)) {
+ // the connector end targets a port of a part or the composite (in case of delegation)
+ ConnectorEnd connEnd = ConnectorUtils.connEndNotPart(connector, partConnector);
+ ConnectableElement connElem = connEnd.getRole();
+ if(connElem instanceof Port) {
+ Port otherPort = (Port)connElem;
+ Interface otherInterface;
+
+ // distinction between assembly or delegation (other end is null) connectors
+ boolean isAssembly = (connEnd.getPartWithPort() != null);
+
+ if(isProvided == isAssembly) {
+ // need required for other, if first port isProvided and assembly, or if first port isRequired and delegation
+ otherInterface = PortUtils.getRequired(otherPort);
+ } else {
+ otherInterface = PortUtils.getProvided(otherPort);
+ }
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "connects port, otherInterface = " + otherInterface);
+ if(otherInterface != null) {
+ if(actual == null) {
+ actual = otherInterface;
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "actual return interface: " + actual.getQualifiedName());
+ } else if(actual != otherInterface) {
+ throw new TransformationException("cannot find a consistent binding for port " + port.getName() +
+ " of connector " + connector.getName() + ". Formal already bound to type \"" + actual.getName() + "\"");
+ }
+ }
+ }
+ }
+ }
+ return actual;
+ }
+
+
+ /**
+ * This function tries to bind a formal template parameter to an "actual". The criterion
+ * for a successful binding is that the (primitive) connections of the reified connector
+ * part have a matching port kind.
+ * The function makes a matching based on (1) either provided and required interfaces (2)
+ * or identical portKinds and different conjugations
+ *
+ * @param composite
+ * The composite in which a binding should be determined.
+ * @param part
+ * the part within the composite for which we try to find a binding,
+ * The information about the part is used to determine which connection
+ * end belongs to the template part and which to another part/port (which
+ * determines the binding).
+ * @param template
+ * A template class
+ * @param formal
+ * the formal template parameter
+ * @throws TransformationException
+ * if no consistent binding can be found
+ * @return the actual
+ */
+ public static Type getActual(Feature partOrConnector, Class template, ParameterableElement formal)
+ throws TransformationException {
+ Type actual = null;
+
+ // loop through all ports of the template, use getAllPorts to include inherited ports as well.
+ for(Port port : PortUtils.getAllPorts(template)) {
+ Interface providedIntf = PortUtils.getProvided(port);
+
+ // need to check, if the port at the opposite connector is matching, provided that we use a specific
+ // value for the the formal. Typically, ports of the template are typed with the formal parameter. Thus,
+ // we would have to infer the formal from a given provided or required interface. This is not possible
+ // in general (no inverse mapping operation), but the simple case that either the provided or required
+ // interface is identical to the formal parameter are checked.
+ //
+ // 1. provided interface is formal
+ if(providedIntf == formal) {
+ actual = matchOtherEnd(port, partOrConnector, actual, true);
+ }
+
+ // 2. required interface is formal
+ Interface requiredIntf = PortUtils.getRequired(port);
+ if(requiredIntf == formal) {
+ actual = matchOtherEnd(port, partOrConnector, actual, false);
+ }
+
+ // 3. port type is formal (but none of the two cases above)
+ // this check is stronger than the first two, since it requires port kind identity.
+ // If none of the first two variants holds, the port is translating interfaces
+ // for which this stronger condition holds.
+ Type type = port.getType();
+ if((providedIntf != formal) && (requiredIntf != formal) && (type == formal)) {
+ // the template provides the formal parameter at one of its ports. Now examine
+ // with whom this port is connected, i.e. examine all ends of the
+ // connector. The type of the connected port determines the binding.
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, " getActual: provided port type matches, port = " + port.getName());
+ boolean found = false;
+
+ if(partOrConnector instanceof Property) {
+ Property partConnector = (Property)partOrConnector;
+ // iterate over the connectors of the composite containing the part
+ for(Connector connector : partConnector.getClass_().getOwnedConnectors()) {
+ if(ConnectorUtils.connectsPart(connector, partConnector)) {
+ // the connector end targets a port of a part or the composite (in case of delegation)
+ ConnectorEnd connEnd = ConnectorUtils.connEndNotPart(connector, partConnector);
+ actual = matchViaEnd(connEnd, port, partOrConnector, actual);
+ if(actual != null) {
+ found = true;
+ break;
+ }
+ }
+ }
+ }
+ else {
+ for(ConnectorEnd connEnd : ((Connector)partOrConnector).getEnds()) {
+ actual = matchViaEnd(connEnd, port, partOrConnector, actual);
+ if(actual != null) {
+ found = true;
+ break;
+ }
+ }
+ }
+ if(!found) {
+ String errorMsg = createErrorMsg(port, partOrConnector);
+ throw new TransformationException(errorMsg);
+ }
+ }
+ }
+ return actual;
+ }
+
+ protected static String createErrorMsg(Port port, Feature partOrConnector) {
+ String errorMsg = "Cannot find a binding for port " + port.getName() + " of connector '" + partOrConnector.getName() + "'";
+ for(Classifier cl : partOrConnector.getFeaturingClassifiers()) {
+ errorMsg += " of class '" + cl.getName() + "'";
+ }
+ errorMsg += ". ";
+ return errorMsg;
+ }
+
+ private static Type matchViaEnd(ConnectorEnd connEnd, Port port, Feature partOrConnector, Type actual) throws
+ TransformationException {
+ String errorMsg = createErrorMsg(port, partOrConnector);
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "port: " + port);
+ // Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "role1: " + connector.getEnds().get(0).getRole());
+ // Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "role2: " + connector.getEnds().get(1).getRole());
+
+ ConnectableElement connElem = connEnd.getRole();
+ if(connElem instanceof Port) {
+ Port otherPort = (Port)connElem;
+
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, " getActual, connector port <" + port.getName() + "> is connected via <" +
+ partOrConnector.getName() + ">");
+ Type otherType = otherPort.getType();
+
+
+ // type must be the same, kind as well. But depending on delegation or not, one of the ports
+ // must be conjugated
+ // TODO: isAssembly check will wrongly return false, if no port is connected [well, in this case, the role is not a port but a part]
+ boolean isAssembly = (connEnd.getPartWithPort() != null);
+ boolean sameConjugation = (PortUtils.isConjugated(otherPort) == PortUtils.isConjugated(port));
+ // if assembly connection, conjugations must be different.
+ if(isAssembly == sameConjugation) {
+ return actual; // was: continue
+ }
+
+ // now compare kinds
+ if(!PortUtils.sameKinds(port, otherPort)) {
+ // no match, try next end
+ return actual; // was: continue
+ }
+
+ if(otherType != null) {
+ if(actual == null) {
+ actual = otherType;
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "actual return interface: " + actual.getQualifiedName());
+ } else if(actual != otherType) {
+ throw new TransformationException(errorMsg + ". Formal already bound to type " + actual.getName() + ".");
+ }
+ }
+ }
+ return actual;
+ }
+
+ /**
+ * The objective of this function is to find a suitable binding for a part
+ * typed with a template class (connector) based compatible port types. The binding
+ * is obtained by examining the connections between the composite and the contained
+ * part.
+ *
+ * @param composite
+ * the composite which owns the part
+ * @param containedPart
+ * the part which represents the connector
+ * @param template
+ * an element within a package template (might be deeply nested) which
+ * has ports that depend on a template parameter. This method tries to find a binding
+ * for the template parameters that renders the ports of this element compatible with
+ * the ports of the composition context.
+ * @return the bound package
+ * ? binding information, i.e. information about the bound package, whether already bound and the binding.
+ */
+ public static TemplateBinding obtainBinding(Class composite,
+ Feature connector, Class template, boolean createBinding) throws TransformationException {
+ // obtain the signature of an element within a package template.
+
+ TemplateSignature signature = TemplateUtils.getSignature(template);
+ if(signature == null) {
+ // not a template, retain original name
+ System.err.println("no template signature found for " + template.getName());
+ return null;
+ }
+
+ // list of actuals (must be ParameterableElements, in our case always a named element as well.
+ EList<ParameterableElement> actuals = new BasicEList<ParameterableElement>();
+
+ Package pkgTemplate = (Package)signature.getOwner();
+ String name = pkgTemplate.getName();
+
+ /*
+ * Signature extension - useful?? (since binding has to be made as well)
+ * Stereotype sigExtSt = signature.getAppliedStereotype ("FCM::SignatureExt");
+ * SignatureExt sigExt = null;
+ * if (sigExtSt != null) {
+ * sigExt = (SignatureExt) signature.getStereotypeApplication (sigExtSt);
+ * }
+ *
+ * for (TemplateSignature sig : sigExt.getExtension ()) {
+ * bindFormal ();
+ * }
+ */
+
+ // loop on template parameters
+ boolean firstTP = true;
+ for(TemplateParameter parameter : signature.getParameters()) {
+ ParameterableElement formal = parameter.getParameteredElement();
+
+ // now obtain suitable binding for this parameter - look for ports that are typed with
+ // the formal template parameter
+ ParameterableElement actual = null;
+ if(firstTP) {
+ // only try to match the first template parameter based on ports.
+ actual = getActual(connector, template, formal);
+ firstTP = false;
+ } else {
+ // additional template parameters that are bound automatically based on their name
+ // (this might be considered as a hack, it is merely a convention for automatic template
+ // binding within the Qompass context.
+ if(formal instanceof NamedElement) {
+ NamedElement formalNE = (NamedElement)formal;
+ if((formal instanceof Class) && (formalNE.getName().equals("T"))) {
+ actual = composite;
+ }
+ if((formal instanceof Port) && (formalNE.getName().equals("P"))) {
+ // port (but not available?)
+ actual = TransformationContext.port;
+ }
+ }
+ }
+ if(actual instanceof NamedElement) {
+ actuals.add(actual);
+ name = name + "_" + ((NamedElement)actual).getName();
+ } else {
+ String reason = "error: can not find a binding for formal parameter " +
+ ((NamedElement)formal).getName() + " in the context of ";
+ reason += "composite " + composite.getName() +
+ ", connector " + connector.getName() +
+ " and (connector) template " + template.getName();
+ throw new TransformationException(reason);
+ }
+ }
+
+ // the bound package is instantiated in the same model, in which the
+ // composite can be found (avoid modifying an imported model).
+
+ if(!createBinding)
+ return null;
+
+ Namespace owner = (Namespace)pkgTemplate.getOwner();
+ owner = CreationUtils.getAndCreate(composite.getModel(), owner.allNamespaces());
+
+ Package boundPackage = (Package)owner.getMember(name);
+ if(boundPackage == null) {
+ // class does not exist yet, needs to be created.
+ boundPackage = ((Package)owner).createNestedPackage(name);
+
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING, "create bound package: " + name +
+ " within " + owner.getName());
+ }
+
+ TemplateBinding binding = boundPackage.getTemplateBinding(signature);
+ if(binding == null) {
+ // binding is not existing yet (should normally only happen, if the class has
+ // just been created - but it's better to re-check, even if the bound package
+ // was already there)
+ binding = boundPackage.createTemplateBinding(signature);
+
+ Iterator<ParameterableElement> actualsIter = actuals.iterator();
+
+ // loop on template parameters;
+ for(TemplateParameter parameter : signature.getParameters()) {
+ TemplateParameterSubstitution substitution = binding.createParameterSubstitution();
+ substitution.setFormal(parameter);
+
+ // now obtain suitable binding for this parameter - look for ports that are typed with
+ // the formal template parameter
+ ParameterableElement actual = actualsIter.next();
+ // for UML <= 2.1
+ // substitution.getActuals ().add ((ParameterableElement) actual);
+ // for UML > 2.2
+ substitution.setActual(actual);
+ }
+ }
+ return binding;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppInclude.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppInclude.java
new file mode 100644
index 00000000000..bdb180a2791
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppInclude.java
@@ -0,0 +1,71 @@
+package org.eclipse.papyrus.qompass.designer.core.templates;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.TemplateBinding;
+
+import Cpp.CppInclude;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.AcceleoDriver;
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Synchronize derived realizations (after copying). If re-synchronization is not done, the
+ * relationship would point to wrong interface, if it is derived and depending on a formal parameter
+ * (e.g. derived push interface with formal parameter T would be at wrong location).
+ * => TODO: incomplete explication, re-think about location of derived interface
+ *
+ * @author ansgar
+ *
+ */
+public class InstantiateCppInclude implements CopyListener {
+
+ public static InstantiateCppInclude getInstance() {
+ if(instance == null) {
+ instance = new InstantiateCppInclude();
+ }
+ return instance;
+ }
+
+ public void init(TemplateBinding binding, Object[] args) {
+ this.binding = binding;
+ this.args = args;
+ }
+
+ public EObject copyEObject(Copy copy, EObject targetEObj) {
+ // if (copy.get(sourceEObj) isWithinTemplate)
+ if(targetEObj instanceof Classifier) {
+ // TODO: C++ specific code!
+ Classifier targetCl = (Classifier)targetEObj;
+ try {
+ Classifier actual = TemplateInstantiationListener.getFirstActualFromBinding(binding, targetCl);
+ if(actual != null) {
+ CppInclude cppInclude = StUtils.getApplication(targetCl, CppInclude.class);
+ TransformationContext.classifier = targetCl;
+ String newBody = AcceleoDriver.evaluate(cppInclude.getBody(), actual, null);
+ String newPreBody = AcceleoDriver.evaluate(cppInclude.getPreBody(), actual, null);
+ String newHeader = AcceleoDriver.evaluate(cppInclude.getHeader(), actual, null);
+ cppInclude.setBody(newBody);
+ cppInclude.setPreBody(newPreBody);
+ cppInclude.setHeader(newHeader);
+ }
+ } catch (TransformationException e) {
+ // create nested exception
+ throw new RuntimeException(e);
+ }
+ }
+ return targetEObj;
+ }
+
+ private static InstantiateCppInclude instance = null;
+
+ private TemplateBinding binding;
+
+ // private Copy copy;
+
+ private Object[] args;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppIncludeWOB.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppIncludeWOB.java
new file mode 100644
index 00000000000..8567383151c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/InstantiateCppIncludeWOB.java
@@ -0,0 +1,62 @@
+package org.eclipse.papyrus.qompass.designer.core.templates;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Classifier;
+
+import Cpp.CppInclude;
+import FCM.Template;
+import FCM.TemplateKind;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.AcceleoDriver;
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Synchronize derived realizations (after copying). If re-synchronization is not done, the
+ * relationship would point to wrong interface, if it is derived and depending on a formal parameter
+ * (e.g. derived push interface with formal parameter T would be at wrong location).
+ * => TODO: incomplete explication, re-think about location of derived interface
+ *
+ * @author ansgar
+ *
+ */
+public class InstantiateCppIncludeWOB implements CopyListener {
+
+ public static InstantiateCppIncludeWOB getInstance() {
+ if(instance == null) {
+ instance = new InstantiateCppIncludeWOB();
+ }
+ return instance;
+ }
+
+ public EObject copyEObject(Copy copy, EObject targetEObj) {
+ // if (copy.get(sourceEObj) isWithinTemplate)
+ if(targetEObj instanceof Classifier) {
+ // TODO: C++ specific code!
+ Classifier targetCl = (Classifier)targetEObj;
+ Template template = StUtils.getApplication(targetCl, Template.class);
+ // apply, in case of pass-classifier
+ if((template != null) && (template.getKind() == TemplateKind.PASS_CLASSIFIER)) {
+ try {
+ CppInclude cppInclude = StUtils.getApplication(targetCl, CppInclude.class);
+ TransformationContext.classifier = targetCl;
+ String newBody = AcceleoDriver.evaluate(cppInclude.getBody(), targetCl, null);
+ String newPreBody = AcceleoDriver.evaluate(cppInclude.getPreBody(), targetCl, null);
+ String newHeader = AcceleoDriver.evaluate(cppInclude.getHeader(), targetCl, null);
+ cppInclude.setBody(newBody);
+ cppInclude.setPreBody(newPreBody);
+ cppInclude.setHeader(newHeader);
+ } catch (TransformationException e) {
+ // create nested exception
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ return targetEObj;
+ }
+
+ private static InstantiateCppIncludeWOB instance = null;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiation.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiation.java
new file mode 100644
index 00000000000..cd46a668da4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiation.java
@@ -0,0 +1,224 @@
+package org.eclipse.papyrus.qompass.designer.core.templates;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FilterSignatures;
+import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FilterTemplate;
+import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FixTemplateSync;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.ParameterableElement;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateParameter;
+import org.eclipse.uml2.uml.TemplateParameterSubstitution;
+import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.TemplateableElement;
+
+import FCM.Template;
+import FCM.TemplateKind;
+
+/**
+ * This class encapsulated functions around template instantiation.
+ *
+ * With respect to composite structures, we need to consider two different
+ * cases: (1) the type of a property is a template class itself (2) the type of
+ * a property is a sub-class (nesting) of the template class. We consider that
+ * such a class inherits the template signature of its owner, i.e. it can access
+ * formal parameters of the owning template class. (3) the type of a property is
+ * a normal class
+ */
+
+public class TemplateInstantiation {
+
+ public TemplateInstantiation(Copy copy, TemplateBinding binding) throws TransformationException {
+ this(copy, binding, null);
+ }
+
+ public TemplateInstantiation(final Copy copy_, final TemplateBinding binding, Object args[]) throws TransformationException {
+ if(binding == null) {
+ // user should never see this exception
+ throw new TransformationException("Passed binding is null");
+ }
+ signature = binding.getSignature();
+ if(signature == null) {
+ throw new TransformationException("Passed template binding does not have a signature");
+ }
+ packageTemplate = (Package)signature.getOwner();
+ /*
+ * copy = (Copy)copy_.clone();
+ * // make copy of copy listeners (clone alone does not duplicate contained lists)
+ * copy.preCopyListeners = new BasicEList<CopyListener>();
+ * copy.preCopyListeners.addAll(copy_.preCopyListeners);
+ * copy.postCopyListeners = new BasicEList<CopyListener>();
+ * copy.postCopyListeners.addAll(copy_.postCopyListeners);
+ */
+ copy = copy_;
+
+ Package boundPackage = (Package)binding.getBoundElement();
+ // set template instantiation parameter. Used by acceleo templates to get relation between
+ // formal and actual parameters
+ TransformationContext.setTemplateInstantiation(this);
+
+ copy.setPackageTemplate(packageTemplate, boundPackage);
+ // some parameters of the package template may not be owned. Thus, an additional package
+ // template is involved in the instantiation
+ for(TemplateParameter parameter : signature.getParameters()) {
+ //
+ if(parameter.getSignature() != signature) {
+ Package addedPkgTemplate = parameter.getSignature().getNearestPackage();
+ copy.setPackageTemplate(addedPkgTemplate, boundPackage);
+ }
+ }
+ this.binding = binding;
+ this.args = args;
+
+ // register a combination of formal/actual in the hashmap
+ // => copy will replace actual with formal
+ for(TemplateParameterSubstitution substitution : binding.getParameterSubstitutions()) {
+ ParameterableElement formal = substitution.getFormal().getParameteredElement();
+ ParameterableElement actual = substitution.getActual();
+ copy.put(formal, actual);
+ }
+
+ // add copy listeners ---
+ // remove template signature
+ if(!copy.preCopyListeners.contains(FilterSignatures.getInstance())) {
+ copy.preCopyListeners.add(FilterSignatures.getInstance());
+ }
+
+ // 2. special treatment for elements stereotyped with template parameter
+ if(!copy.preCopyListeners.contains(TemplateInstantiationListener.getInstance())) {
+ copy.preCopyListeners.add(TemplateInstantiationListener.getInstance());
+ }
+ TemplateInstantiationListener.getInstance().init(copy, binding, args);
+ InstantiateCppInclude.getInstance().init(binding, args);
+
+ if(!copy.postCopyListeners.contains(FixTemplateSync.getInstance())) {
+ copy.postCopyListeners.add(FixTemplateSync.getInstance());
+ }
+ if(!copy.postCopyListeners.contains(InstantiateCppInclude.getInstance())) {
+ copy.postCopyListeners.add(InstantiateCppInclude.getInstance());
+ }
+ }
+
+
+ Package packageTemplate;
+
+ public TemplateBinding binding;
+
+ public Copy copy;
+
+ TemplateSignature signature;
+
+ Object[] args;
+
+ /**
+ * Bind a named element. Besides of binding the passed element, this
+ * operation will bind all elements that are referenced (required) by the
+ * passed element.
+ *
+ * In consequence, typically only a small part of a package template is
+ * actually created within the bound package. We call this mechanism lazy
+ * instantiation/binding
+ *
+ * @param copy
+ * Source and target model
+ * @param namedElement
+ * A member within the package template which should be bound,
+ * i.e. for which template instantiation should be performed.
+ * @param binding
+ * The binding between the bound package and the package template
+ * @param args
+ * Acceleo arguments
+ */
+ @SuppressWarnings("unchecked")
+ public <T extends NamedElement> T bindNamedElement(T namedElement) throws TransformationException {
+ if(namedElement == null) {
+ // user should never see this exception
+ throw new TransformationException("Passed template element is null");
+ }
+
+ Package boundPackage = (Package)binding.getBoundElement();
+ EList<Namespace> path = TemplateUtils.relativePathWithMerge(namedElement, packageTemplate);
+ Template template = StUtils.getApplication(namedElement, Template.class);
+ TemplateKind templateKind = (template != null) ?
+ templateKind = template.getKind() :
+ TemplateKind.PASS_FORMAL;
+
+ if((templateKind == TemplateKind.ACCUMULATE) || (templateKind == TemplateKind.LATE_EVALUATION)) {
+ // TODO: not very clean yet
+ path = TemplateUtils.relativePathWithMerge(namedElement, copy.source);
+ if(path == null) {
+ // element is imported
+ path = namedElement.allNamespaces();
+ }
+ boundPackage = copy.target; // CreationUtils.getAndCreate
+ // (sat.target, "accumulate");
+ }
+
+ if(path != null) {
+ // register owning package template (template can be defined in
+ // multiple packages)
+ Element owner = TemplateUtils.getTemplateOwner(namedElement, signature);
+ if(owner != null) {
+ // note that we might overwrite an existing value
+ copy.put(owner, boundPackage);
+ }
+ }
+ else {
+ // element is not part of the package template referenced by the
+ // binding
+ if(namedElement instanceof TemplateableElement) {
+ // check whether the referenced element is part of another
+ // package template,
+ // (for which we allow for implicit binding with the first
+ // template parameter)
+ TemplateSignature signatureOfNE = TemplateUtils.getSignature((TemplateableElement)namedElement);
+ if((signatureOfNE != null) && (signature != signatureOfNE)) {
+ TemplateBinding subBinding = TemplateUtils.getSubBinding(copy.target, (TemplateableElement)namedElement, binding);
+ TemplateInstantiation ti = new TemplateInstantiation(copy, subBinding, args);
+ NamedElement ret = ti.bindNamedElement(namedElement);
+ return (T)ret;
+ }
+ }
+
+ // => nothing to do with respect to template instantiation, but
+ // since the template is potentially instantiated in another model,
+ // the referenced element might need to be copied.
+
+ return copy.getCopy(namedElement);
+ }
+ // element is contained in the template package, examine whether it
+ // already exists in the
+ // bound package.
+
+ NamedElement existingMember = (NamedElement)copy.get(namedElement);
+ if((existingMember != null) && (templateKind != TemplateKind.ACCUMULATE)) {
+ // element is already existing (and thus bound), nothing to do
+ // additional check, whether the ACCUMULATE information is unset)
+ // however: if the element is a package, existence is not sufficient
+ // since it might have been created via getAndCreate above
+ /*
+ * if(namedElement instanceof Package) {
+ * bindPackage((Package)namedElement);
+ * }
+ */
+ return (T)existingMember;
+ }
+
+ if(existingMember == null) {
+ FilterTemplate.getInstance().setActive(false);
+ T copiedElement = copy.getCopy(namedElement);
+ FilterTemplate.getInstance().setActive(true);
+ copy.setPackageTemplate(null, null);
+ return copiedElement;
+ }
+ return (T)existingMember;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiationListener.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiationListener.java
new file mode 100644
index 00000000000..a8b9d55285a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateInstantiationListener.java
@@ -0,0 +1,339 @@
+package org.eclipse.papyrus.qompass.designer.core.templates;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.BehavioralFeature;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateParameterSubstitution;
+import org.eclipse.uml2.uml.Type;
+
+import Cpp.CppConstInit;
+import FCM.ActualChoice;
+import FCM.Template;
+import FCM.TemplateKind;
+
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.AcceleoDriver;
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Template instantiation is implemented by means of an CopyListener that
+ * evaluates the template stereotype.
+ */
+
+public class TemplateInstantiationListener implements CopyListener {
+
+ public static TemplateInstantiationListener getInstance() {
+ if(templateInstantiationListener == null) {
+ templateInstantiationListener = new TemplateInstantiationListener();
+ templateInstantiationListener.treatTemplate = false;
+ }
+ return templateInstantiationListener;
+ }
+
+ public void init(Copy copy, TemplateBinding binding, Object[] args) {
+ treatTemplate = false;
+ this.copy = copy;
+ this.binding = binding;
+ this.args = args;
+ }
+
+ private TemplateBinding binding;
+
+ private Copy copy;
+
+ private Object[] args;
+
+ private boolean treatTemplate;
+
+ private static TemplateInstantiationListener templateInstantiationListener;
+
+ public EObject copyEObject(Copy copy, EObject sourceEObj) {
+ if(treatTemplate) {
+ return sourceEObj;
+ }
+ treatTemplate = true;
+ EObject targetEObj = checkEObject(copy, sourceEObj);
+ treatTemplate = false;
+ return targetEObj;
+ }
+
+ protected EObject checkEObject(Copy copy, EObject sourceEObj) {
+ try {
+ if(sourceEObj instanceof Element) {
+ if(sourceEObj instanceof OpaqueBehavior) {
+ OpaqueBehavior behavior = (OpaqueBehavior)sourceEObj;
+ // in case of a behavior, examine stereotype on associated operation
+ BehavioralFeature bf = behavior.getSpecification();
+ if(bf != null) {
+ Template template = StUtils.getApplication(bf, Template.class);
+ if(template != null) {
+ return null;
+ }
+ }
+ }
+ else {
+ Template template = StUtils.getApplication((Element)sourceEObj, Template.class);
+ if((template != null)) { // && (!treatTemplateElement.containsKey(sourceEObj))) {
+ // treatTemplateElement.put(sourceEObj, true);
+ if(sourceEObj instanceof Operation) {
+ Operation operation = (Operation)sourceEObj;
+
+ Classifier actual = getFirstActualFromBinding(binding, operation);
+ Class boundClass = copy.getCopy(operation.getClass_());
+ if(template.getKind() == TemplateKind.LOOP_OPERATIONS) {
+ // in case of loop operations, the template parameter is iteratively an
+ // operation of the actual (which should be an interface) in this case.
+ //
+ // The template operation typically inherits all parameters. This is expressed by
+ // a single parameter with the LOOP_PARAMETERS options (<%name%> as name, what as type?)
+ // cleaner (more general: if user writes loop with Acceleo as well?]
+ // // owns template operation parameter??
+ Type passedActual = getPassedActual(template, actual, boundClass);
+ if(!(passedActual instanceof Interface)) {
+ return sourceEObj;
+ }
+ Interface passedActualIntf = (Interface)passedActual;
+ Operation last = null;
+ EList<Element> removalList = new BasicEList<Element>();
+ for(Operation intfOperation : passedActualIntf.getAllOperations()) {
+ for(Element removalElement : removalList) {
+ copy.removeForCopy(removalElement); // enable subsequent instantiations
+ }
+ removalList.clear();
+ last = instantiateOperation(intfOperation, template, operation, boundClass);
+ removalList.add(operation);
+ for(Behavior method : operation.getMethods()) {
+ if(method instanceof OpaqueBehavior) {
+ Behavior newBehavior =
+ instantiateBehavior(intfOperation, template, (OpaqueBehavior)method);
+ newBehavior.setSpecification(last);
+ removalList.add(method);
+ }
+ }
+ }
+ // from a logical viewpoint, we need to copy parameters & name, but not the
+ // operation identity.
+ copy.put(operation, last);
+ return last;
+ }
+ else {
+ Operation newOperation = instantiateOperation(actual, template, operation, boundClass);
+ for(Behavior method : operation.getMethods()) {
+ if(method instanceof OpaqueBehavior) {
+ Behavior newBehavior =
+ instantiateBehavior(actual, template, (OpaqueBehavior)method);
+ newBehavior.setSpecification(newOperation);
+ }
+ }
+ return newOperation;
+ }
+ }
+ else if(sourceEObj instanceof EnumerationLiteral) {
+ if(template.getKind() == TemplateKind.LOOP_OPERATIONS) {
+ EnumerationLiteral literal = (EnumerationLiteral)sourceEObj;
+ Classifier actual = getFirstActualFromBinding(binding, literal);
+ // Type passedActual = getPassedActual(template, actual, boundClass);
+ Type passedActual = actual;
+ if(!(passedActual instanceof Interface)) {
+ return sourceEObj;
+ }
+ Interface passedActualIntf = (Interface)passedActual;
+ EnumerationLiteral newLiteral = null;
+ for(Operation intfOperation : passedActualIntf.getAllOperations()) {
+ copy.removeForCopy(literal);
+ newLiteral = copy.getCopy(literal);
+ String newName = AcceleoDriver.evaluate(literal.getName(), intfOperation, args);
+ newLiteral.setName(newName);
+ }
+ return newLiteral;
+ }
+ }
+ }
+ }
+ }
+ return sourceEObj;
+
+ } catch (TransformationException e) {
+ // throw runtime exception
+ throw new RuntimeException("TransformationException: " + e.getMessage());
+ }
+ }
+
+ public Operation instantiateOperation(Element actual, Template template, Operation operation, Class boundClass) {
+ try {
+ Operation newOperation = copy.getCopy(operation);
+ if(actual instanceof Operation) {
+ for(Parameter parameter : ((Operation)actual).getOwnedParameters()) {
+ Parameter newParam = EcoreUtil.copy(parameter); // copy parameter via EcoreUtil
+ newParam.setType(copy.getCopy(parameter.getType()));
+ newOperation.getOwnedParameters().add(newParam);
+ }
+ }
+ TransformationContext.classifier = newOperation.getClass_();
+ if(actual instanceof Classifier) {
+ bindOperation(newOperation, (Classifier)actual);
+ }
+ String newName = AcceleoDriver.evaluate(operation.getName(), actual, args);
+ newOperation.setName(newName);
+
+ return newOperation;
+ } catch (TransformationException e) {
+ // throw runtime exception
+ throw new RuntimeException("TransformationException: " + e.getMessage());
+ }
+ }
+
+ public OpaqueBehavior instantiateBehavior(Element actual, Template template, OpaqueBehavior opaqueBehavior) throws TransformationException {
+ OpaqueBehavior newBehavior = copy.getCopy(opaqueBehavior);
+ if(actual instanceof NamedElement) {
+ String newName = AcceleoDriver.evaluate(opaqueBehavior.getName(), actual, args);
+ newBehavior.setName(newName);
+ }
+ EList<String> bodyList = newBehavior.getBodies();
+ for(int i = 0; i < bodyList.size(); i++) {
+ String body = bodyList.get(i);
+ TransformationContext.classifier = (Classifier)newBehavior.getOwner();
+ String newBody = AcceleoDriver.evaluate(body, newBehavior.getQualifiedName(), actual, args);
+ bodyList.set(i, newBody);
+ }
+ return newBehavior;
+ }
+
+
+ /**
+ * TODO: move into separate class
+ *
+ * @param element
+ * an element that is stereotyped with FCM::Template. The
+ * template parameter identified there is taken into account. If
+ * set to null, all actuals from the binding are returned. This
+ * is practical, since it implies that it is not necessary to
+ * specify the template parameter for the common case of a
+ * signature containing a single parameter.
+ * @return a list of actuals which, either for all parameters or the binding
+ * or a selection specified by the stereotype attribute
+ * templateParams (on element).
+ * @throws TransformationException
+ */
+ public static EList<Classifier> getActuals(TemplateBinding binding, Element element) throws TransformationException {
+ Template template = StUtils.getApplication(element, Template.class);
+ if(template != null) {
+ EList<Classifier> templateParams = template.getTemplateParams();
+ EList<Classifier> actuals = new BasicEList<Classifier>();
+ if(templateParams.size() == 0) {
+ for(TemplateParameterSubstitution substitution : binding.getParameterSubstitutions()) {
+ if(substitution.getActual() instanceof Classifier) {
+ actuals.add((Classifier)substitution.getActual());
+ }
+ }
+ } else {
+ for(Classifier cl : templateParams) {
+ // actuals.add((Classifier)bindNamedElement(cl));
+ System.err.println(cl);
+ }
+ }
+ return actuals;
+ }
+ return null;
+ }
+
+ /**
+ * Useful (instead of first matching a certain type??)
+ * TODO: move into separate class
+ *
+ * @param element
+ * @param binding
+ * @return
+ * @throws TransformationException
+ */
+ public static Classifier getFirstActualFromBinding(TemplateBinding binding, Element element) throws TransformationException {
+ EList<Classifier> actuals = getActuals(binding, element);
+ if((actuals != null) && (actuals.size() > 0) && (actuals.get(0) instanceof Classifier)) {
+ return (Classifier)actuals.get(0);
+ }
+ return null;
+ }
+
+
+ /**
+ * Bind C++ const initializer
+ *
+ * @param operation
+ * @param actual
+ * @throws TransformationException
+ */
+ public void bindOperation(Operation operation, Classifier actual) throws TransformationException {
+ // perform binding in case of C++ initializer
+ CppConstInit cppConstInit = StUtils.getApplication(operation, CppConstInit.class);
+ if(cppConstInit != null) {
+ // TODO: specific to C++
+ String init = cppConstInit.getInitialisation();
+ String newInit = AcceleoDriver.bind(init, actual);
+ cppConstInit.setInitialisation(newInit);
+ }
+ }
+
+ /**
+ * @param actual
+ * the actual template parameter
+ * @param boundClass
+ * the bound class
+ * @param provides
+ * true, if the provided interface should be returned
+ * @return the provided or required interface of a port (of the passed
+ * boundClass) that is typed with the the actual.
+ */
+ private static Interface getInterfaceFromPortTypedWithActual(Type actual, Class boundClass, boolean provided) {
+ for(Port port : PortUtils.getAllPorts(boundClass)) {
+ Interface provOrReqIntf;
+ if(provided) {
+ provOrReqIntf = PortUtils.getProvided(port);
+ } else {
+ provOrReqIntf = PortUtils.getRequired(port);
+ }
+
+ if((port.getType() == actual) && (provOrReqIntf != null)) {
+ return provOrReqIntf;
+ }
+ }
+ return null;
+ }
+
+ private Type getPassedActual(Template template, Type actual, Class boundClass) {
+ if(template.getActualChoice() == ActualChoice.INTERFACE_OF_PPORT) {
+ return getInterfaceFromPortTypedWithActual(actual, boundClass, true);
+ } else if(template.getActualChoice() == ActualChoice.INTERFACE_OF_RPORT) {
+ // TODO: typically does not make sense to loop over it.
+ return getInterfaceFromPortTypedWithActual(actual, boundClass, false);
+ } else if(template.getActualChoice() == ActualChoice.PASS_ACTUAL) {
+ return actual;
+ } else {
+ // default behavior (common use in connectors): in case of a loop over operations, return actual
+ // from provided port
+ // TODO: Again, this is a hack!
+ if(template.getKind() == TemplateKind.LOOP_OPERATIONS) {
+ return getInterfaceFromPortTypedWithActual(actual, boundClass, true);
+ } else {
+ return actual;
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateUtils.java
new file mode 100644
index 00000000000..e0c131bfcd6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/templates/TemplateUtils.java
@@ -0,0 +1,295 @@
+package org.eclipse.papyrus.qompass.designer.core.templates;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.qompass.designer.core.CreationUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageMerge;
+import org.eclipse.uml2.uml.ParameterableElement;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateParameter;
+import org.eclipse.uml2.uml.TemplateParameterSubstitution;
+import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.TemplateableElement;
+import org.eclipse.uml2.uml.Type;
+
+public class TemplateUtils {
+
+ /**
+ * Get the template signature of a classifier. If the classifier does not
+ * have a signature, examine if the owning class provides one
+ *
+ * @param template
+ * The potential template
+ * @return the signature or null, if none can be found.
+ */
+ public static TemplateSignature getSignature(TemplateableElement template) {
+ TemplateSignature signature = getSignatureDirect(template);
+ if(signature != null) {
+ return signature;
+ }
+
+ // no signature found, try signature of owning classifier (nested class)
+ // or package
+ Element owner = template.getOwner();
+ if(owner instanceof TemplateableElement) {
+ // owned by a classifier, not a package
+ return getSignature((TemplateableElement)owner);
+ } else {
+ return null;
+ }
+ }
+
+ public static Element getTemplateOwner(Element ne, TemplateSignature signature) {
+ if((ne instanceof TemplateableElement) && getSignatureDirect((TemplateableElement)ne) == signature) {
+ return ne;
+ }
+ Element owner = ne.getOwner();
+ if(owner != null) {
+ return getTemplateOwner(owner, signature);
+ }
+ return null;
+ }
+
+ /**
+ * Get the template signature of a templateable element (typically a package). The class must
+ * (1) either own the signature
+ * (2) or merge with a package which owns the signature.
+ * Qompass enables the "extension" of existing packages via the package merge mechanism
+ *
+ * @param template
+ * The potential template
+ * @return the signature or null, if none can be found.
+ */
+
+ public static TemplateSignature getSignatureDirect(TemplateableElement template) {
+ for(Element element : template.getOwnedElements()) {
+ if(element instanceof TemplateSignature) {
+ return (TemplateSignature)element;
+ }
+ }
+
+ // enable multiple package templates sharing the same signature.
+ if(template instanceof Package) {
+ Package pkg = (Package)template;
+ for(PackageMerge pkgImport : pkg.getPackageMerges()) {
+ Package importedPkg = pkgImport.getMergedPackage();
+ return getSignature(importedPkg);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Create a template binding by using a single, fixed actual (used within
+ * Qompass for the binding of container extensions depending on the component
+ * executor)
+ *
+ * @param model
+ * : target model in which to create the bound package
+ * @param template
+ * @param fixedActual
+ * @return
+ * @throws TransformationException
+ */
+ public static TemplateBinding fixedBinding(Package model, TemplateableElement template, Classifier fixedActual)
+ throws TransformationException {
+ // obtain the signature of an element within a package template.
+
+ TemplateSignature signature = getSignature(template);
+ if(signature == null) {
+ // not a template, retain original name
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING,
+ "no template signature found" + (template instanceof NamedElement ?
+ " for " + ((NamedElement)template).getName() :
+ ""));
+ return null;
+ }
+
+ EList<Type> actuals = new BasicEList<Type>();
+
+ Package pkgTemplate = (Package)signature.getOwner();
+ String name = pkgTemplate.getName();
+
+ // loop on template parameters;
+ // for (TemplateParameter parameter : signature.getOwnedParameters ()) {
+ // ParameterableElement formal = parameter.getParameteredElement();
+
+ // now obtain suitable binding for this parameter - look for ports that
+ // are typed with the formal template parameter
+
+ actuals.add(fixedActual);
+ name = name + "_" + fixedActual.getName();
+ // }
+
+ // the bound package is instantiated in the same model, in which the
+ // composite can be found (avoid modifying an imported model).
+ // todo: root model as an additional parameter?
+ Namespace owner = (Namespace)pkgTemplate.getOwner();
+ owner = CreationUtils.getAndCreate(model, owner.allNamespaces());
+
+ Package boundPackage = (Package)owner.getMember(name);
+ if(boundPackage == null) {
+ // class does not exist yet, needs to be created.
+ boundPackage = ((Package)owner).createNestedPackage(name);
+
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_BINDING,
+ "create bound package (fixed binding): " + name
+ + " within " + owner.getName());
+ }
+
+ TemplateBinding binding = boundPackage.getTemplateBinding(signature);
+ if(binding == null) {
+ // binding is not existing yet (should normally only happen, if the class has
+ // just been created - but it's better to re-check, even if the bound package
+ // was already there)
+ binding = boundPackage.createTemplateBinding(signature);
+
+ Iterator<Type> actualsIter = actuals.iterator();
+
+ // loop on template parameters;
+ for(TemplateParameter parameter : signature.getOwnedParameters()) {
+
+ TemplateParameterSubstitution substitution =
+ binding.createParameterSubstitution();
+ substitution.setFormal(parameter);
+
+ // now obtain suitable binding for this parameter - look for
+ // ports that are typed with
+ // the formal template parameter
+ Type actual = actualsIter.next();
+ substitution.setActual((ParameterableElement)actual);
+ }
+ }
+ return binding;
+ }
+
+ /**
+ * create a "sub" binding in which the first parameter of type Cl is assumed
+ * to bind the sub-signature TODO: compared type and name of parameters in
+ * two signatures TODO: support more than one template parameter
+ *
+ * @param model
+ * @param te
+ * @param existingBinding
+ * @return
+ * @throws TransformationException
+ */
+ public static TemplateBinding getSubBinding(Package model,
+ TemplateableElement te, TemplateBinding existingBinding)
+ throws TransformationException {
+
+ for(TemplateParameterSubstitution tps : existingBinding.getParameterSubstitutions()) {
+ ParameterableElement pe = tps.getActual();
+ if(pe instanceof Classifier) {
+ return fixedBinding(model, te, (Classifier)pe);
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Adapt the actuals within the binding (which correspond either to an
+ * element of the source model or an imported element) to the target model.
+ *
+ * @param sat
+ * @param binding
+ */
+ public static void adaptActualsToTargetModel(Copy copy, TemplateBinding binding) {
+ for(TemplateParameterSubstitution substitution : binding.getParameterSubstitutions()) {
+ substitution.setActual(copy.getCopy(substitution.getActual()));
+ }
+ }
+
+ /**
+ * Return the actual for a potential formal parameter within a
+ * templateBinding (move to TemplateUtils?)
+ *
+ * @param binding
+ * a template binding
+ * @param formal
+ * a potential formal parameter, i.e. a parameter for which we
+ * check, if it really corresponds to a formal parameter within
+ * the template binding.
+ * @return the actual parameter that is associated with the potential formal
+ * parameter, or null if the 2nd parameter does not correspond to a
+ * formal parameter of the binding.
+ */
+ public static Classifier getActualFromBinding(
+ TemplateBinding binding, Type formal) {
+ for(TemplateParameterSubstitution substitution : binding.getParameterSubstitutions()) {
+ ParameterableElement pe = substitution.getFormal().getParameteredElement();
+ if(pe == formal) {
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_INSTANTIATION,
+ "TemplateInstantiation.getActualFromBinding: substitution formal = " + pe);
+ return (Classifier)substitution.getActual();
+ }
+ }
+ return null;
+ }
+
+ public static Classifier getActualFromBinding(
+ TemplateBinding binding, String formalName) {
+ for(TemplateParameterSubstitution substitution : binding.getParameterSubstitutions()) {
+ ParameterableElement pe = substitution.getFormal().getParameteredElement();
+ Log.log(Log.INFO_MSG, Log.TEMPLATE_INSTANTIATION,
+ "TemplateInstantiation.getActualFromBinding: substitution formal = " + pe);
+ if((pe instanceof NamedElement)
+ && ((NamedElement)pe).getName().equals(formalName)) {
+ return (Classifier)substitution.getActual();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Return a sequence of namespaces for a given element, starting from the "bottom"
+ * one, i.e. the one in which the element is contained. It will end before the
+ * searchNS namespace is reached. Returns null, if the element is not contained
+ * within the search namespace.
+ * This function will put a merged package into the path (instead of the owner), enabling
+ * the extension of existing packages.
+ *
+ * @param element
+ * @param searchNS
+ * @return
+ */
+ public static EList<Namespace> relativePathWithMerge(Element element, Namespace searchNS) {
+ EList<Namespace> pathList = new BasicEList<Namespace>();
+ Element owner = element.getOwner();
+ if(!(owner instanceof Namespace)) {
+ // happens, if element is contained in a template signature
+ return null;
+ }
+ Namespace ns = (Namespace)owner;
+ while(ns != null) {
+ if(ns == searchNS) {
+ return pathList;
+ }
+ pathList.add(ns);
+
+ if(ns instanceof Package) {
+ Package pkg = (Package)ns;
+ Iterator<PackageMerge> pkgMerges = pkg.getPackageMerges().iterator();
+ // if package merge exists, get first merged package and add it to path
+ if(pkgMerges.hasNext()) {
+ PackageMerge pkgImport = pkgMerges.next();
+ ns = pkgImport.getMergedPackage();
+ continue;
+ }
+ }
+
+ ns = (Namespace)ns.getOwner();
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/AbstractContainerTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/AbstractContainerTrafo.java
new file mode 100644
index 00000000000..71055f8dd86
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/AbstractContainerTrafo.java
@@ -0,0 +1,116 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.ContainerRule;
+
+
+public abstract class AbstractContainerTrafo {
+
+ public static void init() {
+ containers = new HashMap<Class, AbstractContainerTrafo>();
+ }
+
+ /**
+ * return the container trafo associated with the tmComponent
+ *
+ * @param tmComponent
+ * @return Container-trafo instance of null
+ */
+ public static AbstractContainerTrafo get(Class tmComponent) {
+ return containers.get(tmComponent);
+ }
+
+ /**
+ * Hash map used to identify for which components we already created a container.
+ * Indexed with components in target model (but before container expansion)
+ */
+ protected static Map<Class, AbstractContainerTrafo> containers;
+
+ /**
+ * Only configure the instances, i.e. avoid re-creating elements of the container, but create
+ * the UML instance specifications
+ */
+ public void configureOnly() {
+ configureOnly = true;
+ }
+
+ protected boolean configureOnly;
+
+ public abstract void createContainer(Class smComponent, Class tmComponent) throws TransformationException;
+
+ public abstract void createContainerInstance(Class tmComponent, InstanceSpecification tmIS, ContainerContext context);
+
+ /**
+ * apply a container rule, i.e. add either a container extension or an
+ * interceptor to the container
+ *
+ * @param smContainerRule
+ * An container rule
+ * @param smComponent
+ * the application component in the source model
+ * @param tmComponent
+ * the application component in the target model
+ * @param tmIS
+ * the instance specification for the application component in the target model
+ * @throws TransformationException
+ */
+ public abstract void applyRule(ContainerRule smContainerRule, Class smComponent, Class tmComponent, InstanceSpecification tmIS)
+ throws TransformationException;
+
+ /**
+ * Move a slot from the executor instance specification to an instance
+ * specification of an extension/interceptor This is required, since the
+ * users cannot configure containers directly. The modification is done in
+ * the target model, i.e. the user model is not affected.
+ *
+ * Default implementation is empty
+ */
+ public void moveSlots() {
+ }
+
+ /**
+ * The instance specification of the created container
+ */
+ protected InstanceSpecification containerIS;
+
+ /**
+ * Store source and target model
+ */
+ protected Copy copy;
+
+
+ /**
+ * @return the instance specification of the created container
+ */
+ public InstanceSpecification getContainerIS() {
+ return containerIS;
+ }
+
+ /**
+ * The created container implementation (prefixed with sm, since part of
+ * source model)
+ */
+ protected Class smClass;
+
+ /**
+ * The created container implementation (prefixed with tm, since part of
+ * target model)
+ */
+ protected Class tmClass;
+
+ /**
+ * deployment plan within target model
+ */
+ protected Package tmCDP;
+
+ /**
+ * Additional information about the container that is used by instance configurators
+ */
+ protected ContainerContext context;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java
new file mode 100644
index 00000000000..b533e70af59
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java
@@ -0,0 +1,484 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import Cpp.CppPtr;
+import FCM.InteractionComponent;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+/**
+ * This class realizes the transformations for a component implementation (the executor)
+ * It includes:
+ * 1. add the get_p operation for a port with a provided interface.
+ * 2. add the connect_q operation and realization (*including a storage attribute*) for
+ * a port with a required interface
+ * 3. add an implementation for the getcnx_q operation for a port with a required interface
+ * (the operation itself has been added before)
+ *
+ * TODO: C++ specific, support different "component to OO" mappings
+ *
+ * Caveat: Assure that the folder derivedInterfaces already exists in a model. Otherwise
+ * the call to getProvided/getRequired interface might trigger its creation resulting in
+ * the corruption of list iterators (ConcurrentAccess exception)
+ *
+ * @author ansgar
+ *
+ */
+public class CompImplTrafos {
+
+ public static Class bootloader;
+
+ public static void addPortOperations(Copy copy, Package pkg) throws TransformationException {
+ EList<PackageableElement> peList = new BasicEList<PackageableElement>();
+ peList.addAll(pkg.getPackagedElements());
+ for(PackageableElement element : peList) {
+ if(element instanceof Package) {
+ addPortOperations(copy, (Package)element);
+ } else if(element instanceof Class) {
+ Class implementation = (Class)element;
+ // we may not apply the transformation to the boot-loader itself, in particular it would transform
+ // singletons into pointers.
+ if(Utils.isCompImpl(implementation) && (implementation != bootloader)) {
+ addGetPortOperation(implementation);
+ addConnectPortOperation(copy, implementation);
+ markPartsPointer(implementation);
+ }
+ addCreateConnections(implementation);
+ }
+ }
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also adds a suitable
+ * implementation that evaluates delegation connectors from the port to a property within
+ * the composite. The delegation target could either be a normal class (no port) or an
+ * inner component.
+ *
+ * @param implementation
+ */
+ private static void addGetPortOperation(Class implementation) {
+ for(Port port : PortUtils.getAllPorts2(implementation)) {
+ Interface providedIntf = PortUtils.getProvided(port);
+ if(providedIntf != null) {
+ // port provides an interface, add "get_p" operation & implementation
+
+ String opName = PrefixConstants.getP_Prefix + port.getName();
+ Operation op = implementation.createOwnedOperation(opName, null, null, providedIntf);
+ Parameter retParam = op.getOwnedParameters().get(0);
+ retParam.setName("ret");
+ StUtils.apply(retParam, CppPtr.class);
+
+ OpaqueBehavior behavior = (OpaqueBehavior)
+ implementation.createOwnedBehavior(opName,
+ UMLPackage.eINSTANCE.getOpaqueBehavior());
+ op.getMethods().add(behavior);
+
+ ConnectorEnd ce = ConnectorUtils.getDelegation(implementation, port);
+ // if there is an delegation to an inner property, delegate to it
+ // Make distinction between delegation to component (with a port) or
+ // "normal" class (without).
+ String body;
+ if(ce != null) {
+ Property part = ce.getPartWithPort();
+ ConnectableElement role = ce.getRole();
+
+ body = "return ";
+ if(role instanceof Port) {
+ // check whether the part exists within the implementation (might not be the case
+ // due to partially copied composites).
+ // Check is based on names, since the connector points to elements within another
+ // model (copyClassifier does not make a proper connector copy)
+ body += part.getName() + refOp(part) + PrefixConstants.getP_Prefix + role.getName() + " ();";
+ } else {
+ // role is not a port: connector connects directly to a structural feature
+ // without passing via a port
+ // TODO: check whether structural feature exists
+ body += role.getName();
+ }
+ } else {
+ // no delegation, check whether port implements provided interface
+ if(implementation.getInterfaceRealization(null, providedIntf) != null) {
+ body = "return this;";
+ } else {
+ // does not implement provided interface (may happen in case of composite distribution)
+ // TODO: check whether assembly. Emit at least warning if not.
+ // [cannot happen unless distributed? (or bug in transformation?)]
+ if(StUtils.isApplied(implementation, InteractionComponent.class)) {
+ // || StUtils.isAd(implementation, Assembly.class)) {
+ body = "return 0;";
+ }
+ else {
+ throw new RuntimeException("Interface <" + providedIntf.getName() + "> provided by port <" +
+ port.getQualifiedName() + "> is not implemented by the component itself nor does the port delegate to a part");
+ }
+ }
+ }
+ // todo: defined by template
+ behavior.getLanguages().add("C/C++");
+ behavior.getBodies().add(body);
+ }
+ }
+ }
+
+ /**
+ * if the bootloader is responsible for creating an instance (if it is a abstract type), mark
+ * the associated part as a C++ pointer.
+ * We do not want to change the aggregation kind, since it remains logically a composition, it
+ * is merely an implementation issue that it must be a pointer for C++ if the concrete type is
+ * not yet known.
+ *
+ *
+ * @param implementation
+ */
+ private static void markPartsPointer(Class implementation) {
+ for(Property attribute : Utils.getParts(implementation)) {
+ Type type = attribute.getType();
+ if(type instanceof Class) {
+ Class cl = (Class)type;
+ // => requires adaptations of boot-loader which is then only responsible for creating instances
+ // corresponding to types
+ if(instantiateViaBootloader(cl)) {
+ StUtils.apply(attribute, CppPtr.class);
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior (method) is
+ * needed for ports inherited from a component type (the behavior is implementation specific,
+ * as it needs to take delegation to parts into account)
+ *
+ * @param implementation
+ */
+ private static void addConnectPortOperation(Copy sat, Class implementation) {
+ for(Port port : PortUtils.getAllPorts2(implementation)) {
+ Interface requiredIntf = PortUtils.getRequired(port);
+ if(requiredIntf != null) {
+ // port requires an interface, add "connect_p" operation & implementation
+
+ String opName = PrefixConstants.connectQ_Prefix + port.getName();
+
+ // create operation (even if already inherited, the operation must be owned by
+ // a class that add behavior - TODO: bug in C++ code generator?)
+ Operation op = implementation.createOwnedOperation(opName, null, null);
+ boolean multiPort = (port.getUpper() > 1) || (port.getUpper() == -1); // -1 indicates "*"
+ if(multiPort) {
+ // add index parameter
+ Element eLong = Utils.getQualifiedElement(Utils.getTop(implementation), "CORBA::Long");
+ if(eLong instanceof Type) {
+ op.createOwnedParameter("index", (Type)eLong);
+ }
+ }
+ Parameter refParam = op.createOwnedParameter("ref", requiredIntf);
+ StUtils.apply(refParam, CppPtr.class);
+
+ OpaqueBehavior behavior = (OpaqueBehavior)
+ implementation.createOwnedBehavior(opName,
+ UMLPackage.eINSTANCE.getOpaqueBehavior());
+ op.getMethods().add(behavior);
+
+ ConnectorEnd ce = ConnectorUtils.getDelegation(implementation, port);
+ // if there is an delegation to an inner property, delegate to it
+ // Make distinction between delegation to component (with a port) or
+ // "normal" class (without).
+ String body;
+ if(ce != null) {
+ Property part = ce.getPartWithPort();
+ body = part.getName();
+ ConnectableElement role = ce.getRole();
+ if(role instanceof Port) {
+ body += refOp(part) + PrefixConstants.connectQ_Prefix + role.getName() + " ";
+ if((port.getUpper() > 1) || (port.getUpper() == -1)) {
+ body += "(index, ref);";
+ } else {
+ body += "(ref);";
+ }
+
+ } else {
+ body += ";";
+ }
+ } else {
+ // no delegation - create attribute for port
+ String attributeName = PrefixConstants.attributePrefix + port.getName();
+ if(!Utils.hasNonPortOwnedAttribute(implementation, attributeName)) {
+ Property attr = implementation.createOwnedAttribute(attributeName, requiredIntf);
+ Copy.copyMultElemModifiers(port, attr);
+ // is shared (should store a reference)
+ attr.setAggregation(AggregationKind.SHARED_LITERAL);
+ }
+ body = attributeName + (multiPort ? "[index]" : "") + " = ref;";
+ }
+ // TODO: defined by template
+ behavior.getLanguages().add("C/C++");
+ behavior.getBodies().add(body);
+
+ // -------------------------
+ // add body to get-connection operation (which exists already if the port is also
+ // owned, since it is synchronized automatically during model edit)
+ // getConnQ prefix may be empty to indicate that the port is accessed directly
+ // TODO: reconsider optimization that delegated required ports do not have a
+ // local attribute & associated operation (an inner class may delegate, but the
+ // composite may be using it as well).
+ if((PrefixConstants.getConnQ_Prefix.length() > 0) && (ce != null)) {
+ opName = PrefixConstants.getConnQ_Prefix + port.getName();
+ op = implementation.getOwnedOperation(opName, null, null);
+ if(op == null) {
+ op = implementation.createOwnedOperation(opName, null, null, requiredIntf);
+ Parameter retParam = op.getOwnedParameters().get(0);
+ retParam.setName("ret");
+ StUtils.apply(retParam, CppPtr.class);
+ }
+ behavior = (OpaqueBehavior)
+ implementation.createOwnedBehavior(opName,
+ UMLPackage.eINSTANCE.getOpaqueBehavior());
+ op.getMethods().add(behavior);
+
+ // no delegation
+ String name = PrefixConstants.attributePrefix + port.getName();
+ body = "return " + name + ";";
+ behavior.getLanguages().add("C/C++");
+ behavior.getBodies().add(body);
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections between composite
+ * parts. It only takes the assembly connections into account, since delegation connectors
+ * are handled by the get_ and connect_ port operations above.
+ *
+ * @param implementation
+ */
+ private static void addCreateConnections(Class implementation)
+ throws TransformationException {
+ String createConnBody = "";
+ Map<String, Integer> indexMap = new HashMap<String, Integer>();
+
+ for(Connector connector : implementation.getOwnedConnectors()) {
+ if(ConnectorUtils.isAssembly(connector)) {
+ // TODO: quite ugly (setter1/setter)
+ String getter1 = "";
+ String setter1 = "";
+ String getter = "";
+ String setter = "";
+ String index = "";
+ String index1 = "";
+ Boolean associationBased = false;
+ Property getPart = null;
+ Property setPart = null;
+ for(ConnectorEnd end : connector.getEnds()) {
+ if(end.getRole() instanceof Port) {
+ Port port = (Port)end.getRole();
+ if(PortUtils.getProvided(port) != null) {
+ if(getter.length() > 0) {
+ getter1 = getter;
+ // System.err.println("getter already assigned for connection " + connector.getName());
+ // throw new TransformationException("assembly connector \"" + connector.getName() + "\" connects two provided ports");
+ }
+ getPart = end.getPartWithPort();
+ getter = getPart.getName() + refOp(getPart) + "get_" + port.getName() + " ()";
+ }
+ if(PortUtils.getRequired(port) != null) {
+ if(setter.length() > 0) {
+ setter1 = setter;
+ // System.err.println("setter already assigned for connection " + connector.getName());
+ // throw new TransformationException("assembly connector \"" + connector.getName() + "\" connects two required ports");
+ }
+ setPart = end.getPartWithPort();
+ setter = setPart.getName() + refOp(setPart) + "connect_" + port.getName();
+ if((port.getUpper() > 1) || (port.getUpper() == -1)) {
+ // index depends of combination of property and port, use setter as String
+ Integer indexValue = indexMap.get(setter);
+ if(indexValue == null) {
+ indexValue = 0;
+ indexMap.put(setter, indexValue);
+ }
+ if(index.length() > 0) {
+ index1 = index;
+ }
+ index = indexValue + ", ";
+ indexValue++;
+ indexMap.put(setter, indexValue);
+ }
+ }
+ }
+ else if(end.getRole() instanceof Property) {
+ Property part = (Property)end.getRole();
+ Association association = connector.getType();
+ if(association != null) {
+ associationBased = true;
+ Property assocProp1 = association.getMemberEnd(null, part.getType());
+ Property assocProp2 = assocProp1.getOtherEnd();
+ if(assocProp1 != null) {
+ if(assocProp1.isNavigable()) { // if true, assume that "provided" is true
+ if(getter.length() > 0) {
+ getter1 = getter;
+ // System.err.println("getter already assigned for connection " + connector.getName());
+ // throw new TransformationException("assembly connector \"" + connector.getName() + "\" connects bidirectional association");
+ }
+ getPart = part;
+ getter = "&" + getPart.getName();
+ }
+ else {
+ // TODO: currently, exactly one association end must be navigable
+ if(setter.length() > 0) {
+ setter1 = setter;
+ // System.err.println("setter already assigned for connection " + connector.getName());
+ // throw new TransformationException("assembly connector \"" + connector.getName() + "\" connects bidirectional association");
+ }
+ setPart = part;
+ setter = setPart.getName() + refOp(setPart) + assocProp2.getName();
+ }
+ }
+ }
+ else {
+ // not handled (a connector not targeting a port must be typed)
+ throw new TransformationException("Connector <" + connector.getName() + "> does not use ports, but it is not typed (only connectors between ports should not be typed)");
+ }
+ }
+ }
+ String cmd;
+ cmd = "// realization of connector <" + connector.getName() + ">\n";
+ if(instantiateViaBootloader(getPart) && instantiateViaBootloader(setPart)) {
+ cmd += "if ((" + getPart.getName() + " != 0) && (" + setPart.getName() + " != 0)) {\n\t";
+ }
+ else if(instantiateViaBootloader(getPart)) {
+ cmd += "if (" + getPart.getName() + " != 0) {\n\t";
+ }
+ else if(instantiateViaBootloader(setPart)) {
+ cmd += "if (" + setPart.getName() + " != 0) {\n\t";
+ }
+ if(associationBased) {
+ // TODO: make that a lot more clean
+ if((getter1.length() > 0) && (setter1.length() > 0)) {
+ cmd += setter1 + " = " + getter + ";\n";
+ cmd += setter + " = " + getter1 + ";\n";
+ }
+ else {
+ cmd += setter + " = " + getter + ";\n";
+ }
+ }
+ else {
+ if((getter1.length() > 0) && (setter1.length() > 0)) {
+ cmd += setter1 + " (" + index1 + getter + ");\n";
+ cmd += setter + " (" + index + getter1 + ");\n";
+ }
+ else {
+ cmd += setter + " (" + index + getter + ");\n";
+ }
+ }
+
+ if(instantiateViaBootloader(getPart) || instantiateViaBootloader(setPart)) {
+ cmd += "}\n";
+ }
+ createConnBody += cmd + "\n";
+ }
+ }
+ // TODO: use template, as in bootloader
+ if(createConnBody.length() > 0) {
+ Operation operation = implementation.createOwnedOperation("createConnections", null, null);
+
+ OpaqueBehavior behavior = (OpaqueBehavior)
+ implementation.createOwnedBehavior("b:" + operation.getName(),
+ UMLPackage.eINSTANCE.getOpaqueBehavior());
+ behavior.getLanguages().add("C/C++");
+ behavior.getBodies().add(createConnBody);
+ behavior.setSpecification(operation);
+ }
+ }
+
+ public static void deleteConnectors(Package pkg) {
+ Iterator<PackageableElement> elements = pkg.getPackagedElements().iterator();
+ while(elements.hasNext()) {
+ PackageableElement element = elements.next();
+ if(element instanceof Package) {
+ deleteConnectors((Package)element);
+ } else if(element instanceof Class) {
+ Class implementation = (Class)element;
+ implementation.getOwnedConnectors().clear();
+ }
+ }
+ }
+
+ /**
+ * Return true, if the bootloader is responsible for the instantiation of a part.
+ * [Structual difference: bootloader can decide instance based - and instances are deployed]
+ * [Use aggregation kind "none"? Support only system fragments? suppress assemblies?
+ * If a part is a component type or an abstract implementation, it cannot be instantiated. Thus, a heir
+ * has to be selected in the deployment plan. Since the selection might be different for different instances
+ * of the composite, the instantiation is not done by the component itself, but by the bootloader.
+ * The bootloader also has to instantiate, if different allocation variants are required.
+ * (this is for instance the case for distribution connectors and for the system itself)
+ *
+ * If possible, we want to let composites instantiate sub-components, since this eases
+ * the transition to systems which support reconfiguration.
+ *
+ * [TODO: optimization: analyze whether the deployment plan selects a single implementation. If yes, let the
+ * composite instantiate]
+ *
+ * @param implementation
+ * @return
+ */
+ public static boolean instantiateViaBootloader(Class implementation) {
+ return Utils.isCompType(implementation) ||
+ implementation.isAbstract() || Utils.isSingleton(implementation);
+ }
+
+ public static boolean instantiateViaBootloader(StructuralFeature part) {
+ if(part != null) {
+ if(part.getType() instanceof Class) {
+ Class implementation = (Class)part.getType();
+ // TODO: wrong criteria? (must be shared or not?)
+ return instantiateViaBootloader(implementation);
+ }
+ else {
+ // not a class, assume primitive type instantiated by composite
+ return false;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * return the operator for (de-) referencing a part. If the part is instantiate via the
+ * bootloader, it becomes a pointer. If it is instantiated by the composite itself,
+ * it is not a pointer, it will be instantiated along with the composite
+ *
+ * @param part
+ * @return
+ */
+ protected static String refOp(Property part) {
+ return instantiateViaBootloader(part) ?
+ "->" : ".";
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java
new file mode 100644
index 00000000000..5da1de05c21
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java
@@ -0,0 +1,131 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Type;
+
+import Cpp.CppPtr;
+
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+/**
+ * A collection of transformations related to component-types (or abstract implementations)
+ *
+ * 1. Add access operations for ports, i.e. operations that return a reference of a port
+ * (if port provides interface) and/or allow to connect a port with a given reference
+ * (if port requires an interface)
+ * 2. Remove ports (after ports have been replaced with standard properties)
+ *
+ * TODO: transformation is specific to C++
+ *
+ * @author ansgar
+ *
+ */
+public class CompTypeTrafos {
+
+ /**
+ * Complete access operations recursively, i.e. traverse all packageable
+ * elements and apply the completeAccessOps operation on classes
+ *
+ * @param pkg
+ * the package for which the completion should start
+ * @see completeAccessOps(Class)
+ */
+ public static void completeAccessOps(Package pkg) {
+ for(PackageableElement element : new BasicEList<PackageableElement>(pkg.getPackagedElements())) {
+ if(element instanceof Package) {
+ completeAccessOps((Package)element);
+ } else if(element instanceof Class) {
+ completeAccessOps((Class)element);
+ }
+ }
+ }
+
+ /**
+ * Complete access operations that return the reference. This function is a completion,
+ * since the access operations have already been added for component implementations
+ * (partly, if implementation was abstract).
+ *
+ * @param component
+ * the component for which access operation should be completed.
+ * @return
+ */
+ private static void completeAccessOps(Class component) {
+ // only owned ports => since the operation is also applied on inherited types.
+ for(Port port : component.getOwnedPorts()) {
+ Interface providedIntf = PortUtils.getProvided(port);
+ if(providedIntf != null) {
+ // add operation CCM_<%type%> get_<portname>
+ String getName = PrefixConstants.getP_Prefix + port.getName();
+
+ // create unless already existing
+ if(component.getOwnedOperation(getName, null, null) == null) {
+ Operation op = component.createOwnedOperation(getName, null, null);
+ op.setIsAbstract(true);
+ Parameter retParam = op.createOwnedParameter("ret", providedIntf);
+ retParam.setDirection(ParameterDirectionKind.RETURN_LITERAL);
+ StUtils.apply(retParam, CppPtr.class);
+ // StUtils.apply(op, CppVirtual.class);
+ }
+ }
+ Interface requiredIntf = PortUtils.getRequired(port);
+ if(requiredIntf != null) {
+ // add operation CCM_<%type%> connect_q <portname>
+ String connName = PrefixConstants.connectQ_Prefix + port.getName();
+
+ // create unless already existing
+ if(component.getOwnedOperation(connName, null, null) == null) {
+ Operation op = component.createOwnedOperation(connName, null, null);
+ op.setIsAbstract(true);
+ boolean multiPort = (port.getUpper() > 1) || (port.getUpper() == -1); // -1 indicates "*"
+ if(multiPort) {
+ // add index parameter
+ Element eLong = Utils.getQualifiedElement(Utils.getTop(component), "CORBA::Long");
+ if(eLong instanceof Type) {
+ op.createOwnedParameter("index", (Type)eLong);
+ }
+ }
+ Parameter refParam = op.createOwnedParameter("ref", requiredIntf);
+ refParam.setDirection(ParameterDirectionKind.IN_LITERAL);
+ StUtils.apply(refParam, CppPtr.class);
+ // StUtils.apply(op, CppVirtual.class);
+ }
+ }
+ }
+ }
+
+ /**
+ * Remove ports recursively from all classes within a package and its
+ * sub-packages
+ *
+ * @param pkg
+ * the package (root) from which the port deletion starts.
+ */
+ public static void removePorts(Package pkg) {
+ for(PackageableElement element : pkg.getPackagedElements()) {
+ if(element instanceof Package) {
+ removePorts((Package)element);
+ } else if(element instanceof Class) {
+ EList<Port> portListCopy = new BasicEList<Port>();
+ portListCopy.addAll(((Class)element).getOwnedPorts());
+ // avoid dangling references by calling destroy on the port list
+ // TODO: who still has a reference to these ports? (connectors? - indication of other errors?)
+ // maybe from port-list within ContainerRule stereotype?
+ for(Port port : portListCopy) {
+ port.destroy();
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Composite.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Composite.java
new file mode 100644
index 00000000000..442472f17c6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Composite.java
@@ -0,0 +1,235 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.StructuredClassifier;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+
+public class Composite {
+
+ /**
+ * TODO: OBSOLETE - NOT USED
+ * (HOWEVER, MIGHT BE USED FOR PURE ASSEMBLYS)
+ *
+ * shortcut delegation connectors in composites, i.e. try to extend assembly
+ * connections towards a port with a composite.
+ * The transformation starts with a compositeInstance (usually the
+ * system instance) and finds all contained connections. It removes delegations
+ * connections.
+ *
+ * @param compositeInstance
+ */
+ /*
+ * public void shortcutDelegations (InstanceSpecification compositeInstance)
+ * {
+ * Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "shortcut delegations is called for instance: " + compositeInstance.getName ());
+ * StructuredClassifier composite = (StructuredClassifier) getClassifier (compositeInstance);
+ * Iterator<Connector> connectors = composite.getOwnedConnectors ().iterator ();
+ *
+ * while (connectors.hasNext ())
+ * {
+ * Connector connector = connectors.next ();
+ * // only look at "simple" connectors
+ * if (isStereotypeApplied (connector, "FCMConnector")) {
+ * continue;
+ * }
+ * // only evaluate simple connection with two ends.
+ * if (connector.getEnds ().size () != 2) {
+ * continue;
+ * }
+ * // Property part = (Property) slot.getDefiningFeature ();
+ * ConnectorEnd myEnd = uc.getMyConnEnd (connector, null);
+ * if (myEnd != null) {
+ * // one of the connector ends has no part, i.e. this is a delegation
+ * // connector => delete the connector.
+ * // note that this is hierarchically after the connection has been
+ * // analyzed by lengtenConnection.
+ * // TODO: comment might be false, maybe removed early quickly (=> split loops?)
+ * Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "removing delegation connector: " + connector.getName ());
+ * composite.getOwnedConnectors().remove(connector);
+ * connectors = composite.getOwnedConnectors ().iterator ();
+ * continue;
+ * }
+ *
+ * Iterator<ConnectorEnd> ends = connector.getEnds ().iterator ();
+ * while (ends.hasNext ())
+ * {
+ * ConnectorEnd end = ends.next ();
+ * ConnectorEnd newEnd = lengthenConnection (end);
+ * if (end != newEnd) {
+ * // set new end point
+ * Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "set new end point for connection: " + connector.getName ());
+ * end.setPartWithPort (newEnd.getPartWithPort ());
+ * end.setRole (newEnd.getRole ());
+ * }
+ * else {
+ * Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "leave end point unchanged: " + connector.getName ());
+ * }
+ * }
+ * }
+ *
+ * // loop on slots (need part information)
+ * Iterator<InstanceSpecification> instances = getContainedInstances (compositeInstance).iterator();
+ * while (instances.hasNext ())
+ * {
+ * InstanceSpecification instance = instances.next ();
+ * shortcutDelegations (instance);
+ * }
+ * }
+ */
+
+ /**
+ * This function is used in the context of pure assembly components, i.e. components that do
+ * not have any behavior of their own and delegate to their inner structure
+ *
+ * @param A
+ * connector end which points to a part typed by an assembly implementation.
+ * @return A path of connector ends. This parts includes "prolongations" of the path towards
+ * an inner port. The full list (and not only the last element) is needed, since the part
+ * information of an end-point would be ambiguous (consider two parts of a common type and
+ * a connector end-point targeted at a sub-part within these parts)
+ *
+ * TODO: minor efficiency aspect: avoid creation of a new list in each recursion step
+ * (split into two functions).
+ */
+ public static EList<ConnectorEnd> lengthenConnectorEnd(ConnectorEnd end) {
+ EList<ConnectorEnd> connEndPath = new BasicEList<ConnectorEnd>();
+ Property part = end.getPartWithPort();
+ connEndPath.add(end);
+
+ if((part != null) && (part.getType() instanceof StructuredClassifier)) {
+ StructuredClassifier composite = (StructuredClassifier)part.getType();
+ Port port = (Port)end.getRole();
+
+ Iterator<Connector> connectors = composite.getOwnedConnectors().iterator();
+ if(port == null) {
+ Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "is struct classifier: " + composite.getName() + " port: null!");
+ return connEndPath;
+ }
+ Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "is struct classifier: " + composite.getName() + " port:" + port.getName());
+ while(connectors.hasNext()) {
+ Connector connector = connectors.next();
+ // find connections which originate from/target this port
+ if(!ConnectorUtils.connectsPort(connector, port)) {
+ continue;
+ }
+ Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "found possibility to lengthen connector");
+ ConnectorEnd otherEnd = ConnectorUtils.connEndNotPart(connector, null);
+ // found delegation end, which can be a port of another composite
+ // => recursiveCall
+ EList<ConnectorEnd> subConnEndPath = lengthenConnectorEnd(otherEnd);
+ connEndPath.addAll(subConnEndPath);
+ }
+ }
+ return connEndPath;
+ }
+
+ public static Port lengthenedPort(ConnectorEnd end) {
+ EList<ConnectorEnd> connEndPath = lengthenConnectorEnd(end);
+ int size = connEndPath.size();
+ if(size == 0) {
+ return null;
+ }
+ return (Port)connEndPath.get(size - 1).getRole();
+ }
+
+ /**
+ * This function copies an Qompass component and instantiates the container, i.e.
+ * - it replaces a reference to a CCM_ interface with a reference to the container.
+ * (don't do it for composites ? Since these disappear currently)
+ * - if parts are typed by a component type, if replaces the reference with the
+ * CCM_ interface. (can we make a reference to the container directly?).
+ */
+ /*
+ * public static Class copyComponent (Package root, Class cl)
+ * {
+ * Package newOwner = ut.getAndCreate (root, cl.allNamespaces ());
+ * String name = cl.getName ();
+ * Classifier newCl = null;
+ * NamedElement ne = newOwner.getMember (name);
+ * if (ne instanceof Class) {
+ * // exists already within root, nothing to do
+ * return (Class) ne;
+ * }
+ * else if (ne != null) {
+ * // exists, but is not a classifier
+ * // don't know how to handle
+ * Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "error: element already exists in target package, but is not a class");
+ * return null;
+ * }
+ * Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "copyComponent " + cl.getQualifiedName ());
+ * if (cl instanceof Class) {
+ * newCl = newOwner.createOwnedClass (name, false);
+ * }
+ * else {
+ * System.err.println ("copyClassifier: unsupported classifier <" + cl + ">");
+ * }
+ *
+ * // copy relationships (and target classes, if not yet part of copied model)
+ * // Log.log(Log.INFO_MSG, Log.DEPLOYMENT, "relationships of " + cl.getName ());
+ * Iterator<DirectedRelationship> relationships = cl.getSourceDirectedRelationships ().iterator ();
+ * while (relationships.hasNext ())
+ * {
+ * DirectedRelationship relationship = relationships.next ();
+ * Element target = relationship.getTargets ().get(0);
+ * if (target instanceof Class) {
+ * Log.log(Log.INFO_MSG, Log.DEPLOYMENT, " rel. target " + ((Classifier) target).getName ());
+ * Classifier newTarget = copyComponent (root, (Class) target);
+ * if ((relationship instanceof InterfaceRealization) &&
+ * (newCl instanceof Class) && (newTarget instanceof Interface)) {
+ * String realizationName = ((InterfaceRealization) relationship).getName ();
+ * ((Class) newCl).createInterfaceRealization (realizationName, (Interface) newTarget);
+ * }
+ * else if (relationship instanceof Generalization) {
+ * newCl.createGeneralization (newTarget);
+ * }
+ * else if (relationship instanceof Dependency) {
+ * newCl.createDependency (newTarget);
+ * }
+ * }
+ * }
+ *
+ * Copy.copyOperations (cl, newCl, root);
+ * Copy.copyAttributes (cl, newCl, root);
+ *
+ * UMLTool.ut.copyStereotypes (cl, newCl);
+ *
+ * return newCl;
+ * }
+ *
+ * public static Property copyAttribute (Property attribute, Class target, Package newRoot)
+ * {
+ * Property newAttrib = null;
+ * Type type = attribute.getType ();
+ * if (newRoot != null) {
+ * // check whether parts are typed with a component type. Reference need to be
+ * // replaced by reference to CCM_ type.
+ * if ( (type instanceof Class) && (ut.isComponent ((Class) type)) ) {
+ * type = copyComponent (newRoot, (Class) type);
+ * }
+ * else if (type instanceof Classifier) {
+ * type = Copy.copyClassifier (newRoot, (Classifier) type);
+ * }
+ * }
+ * if (attribute instanceof Port) {
+ * newAttrib = target.createOwnedPort (attribute.getName (), type);
+ * }
+ * else {
+ * newAttrib = target.createOwnedAttribute (attribute.getName (), type);
+ * }
+ * if (newAttrib != null) {
+ * newAttrib.setIsComposite (attribute.isComposite ());
+ * }
+ * UMLTool.ut.copyStereotypes (attribute, newAttrib);
+ * return newAttrib;
+ * }
+ */
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java
new file mode 100644
index 00000000000..5671ca6552d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java
@@ -0,0 +1,470 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+/**
+ * This file is part of Qompass GenTools
+ * Copyright (C) 2008 CEA LIST (http://www-list.cea.fr/)
+
+ * initial developer : Christophe JOUVRAY from CEA LIST
+ * Major contributions: Ansgar Radermacher from CEA LIST
+ */
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.templates.ConnectorBinding;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateUtils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.EncapsulatedClassifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.TemplateBinding;
+
+import FCM.InteractionComponent;
+
+/**
+ * This class provides model information around connectors ... Many classes are
+ * currently commented, since it is not clear if we really need these
+ */
+public class ConnectorReification {
+
+ /**
+ * Return an instance specification that corresponds to a part. This
+ * function is useful in the connector context, since it allows to retrieve
+ * the instance specification that is reference by a connection end-point
+ * (which points to the part).
+ *
+ * @param system
+ * the instance specification for the assembly
+ * @param part
+ * the part within a class
+ * @return The instance specification for the passed part
+ */
+ /*
+ * public static InstanceSpecification getInstanceForPart(
+ * InstanceSpecification system, Property part) {
+ * for (Slot slot : system.getSlots()) {
+ * if (slot.getDefiningFeature() == part) {
+ * for (ValueSpecification value : slot.getValues()) {
+ * // instances are accessible via ValueSpecification subclass
+ * // InstanceValue
+ * if (value instanceof InstanceValue) {
+ * return (((InstanceValue) value).getInstance());
+ * }
+ * }
+ * }
+ * }
+ * return null;
+ * }
+ */
+
+ /**
+ * Find a port that would match a connection
+ *
+ * @param connectorType
+ * a connector type, i.e. a component with ports
+ * @param the
+ * port on the other side of the connection
+ * @return the first port (of all ports owned or inherited by the type) that
+ * is compatible with the passed otherPort.
+ */
+ public static Port getConnectorPort(EncapsulatedClassifier connectorType,
+ Port otherPort, boolean isAssembly) {
+ EList<Port> ports = PortUtils.getAllPorts(connectorType);
+ // try to find matching port
+ for(Port port : ports) {
+ if(PortUtils.isCompatible(port, otherPort, isAssembly)) {
+ return port;
+ }
+ }
+ throw new RuntimeException("Connector reification: cannot find a matching port on reified connector " + connectorType.getName() +
+ " for port " + otherPort.getQualifiedName() + ". This should not happen and indicates an internal tool chain error.");
+ }
+
+ /**
+ *
+ * @param copy
+ * @param tmComponent
+ * @param smConnectorPart
+ * Part representing the connector
+ * @param tmIS
+ * target instance specification (required for choosing the right implementatioN)
+ * @param args
+ * Acceleo arguments passed during instantiation
+ * @return The created part within tmComponent that represents the reified
+ * connector
+ * @throws TransformationException
+ */
+ public static Property reifyConnector(Copy copy, Class tmComponent,
+ Property smConnectorPart, InstanceSpecification tmIS, Object[] args)
+ throws TransformationException {
+ // 1st step: create part for the connector without actually changing the type.
+ // the objective is to enable the user to perform this step optionally, if the
+ // connector needs n-ary connections.
+ if(!(smConnectorPart.getType() instanceof Class)) {
+ // can not happen since caller checks whether type is stereotyped as ConnectorComp
+ // which extends class
+ Log.log(Log.ERROR_MSG, Log.TRAFO_CONNECTOR, "template type is not a class");
+ return null;
+ }
+ // choose an implementation
+ Class connectorImplemTemplate = DepUtils.chooseImplementation(
+ (Class)smConnectorPart.getType(), AllocUtils.getAllNodes(tmIS), false);
+
+ TemplateBinding binding = ConnectorBinding.obtainBinding(tmComponent,
+ smConnectorPart, connectorImplemTemplate, true);
+ Class connectorImplem;
+
+ if(binding != null) {
+ TemplateUtils.adaptActualsToTargetModel(copy, binding);
+ TemplateInstantiation ti = new TemplateInstantiation(copy, binding, args);
+ connectorImplem = (Class)ti.bindNamedElement(connectorImplemTemplate);
+ } else {
+ // no binding, class is not a template => copy as it is
+ connectorImplem = copy.getCopy(connectorImplemTemplate);
+ }
+ Property tmConnectorPart = copy.getCopy(smConnectorPart);
+ tmConnectorPart.setType(connectorImplem);
+ // now retarget connectors towards this part
+
+ for(Connector connector : tmComponent.getOwnedConnectors()) {
+ if(ConnectorUtils.connectsPart(connector, tmConnectorPart)) {
+ // the connector end targets a port of a part or the composite (in case of delegation)
+ ConnectorEnd connEnd = ConnectorUtils.connEndForPart(connector, tmConnectorPart);
+ // redirect role, if pointing to port
+ if(connEnd.getRole() instanceof Port) {
+ Port connectedTemplatePort = (Port)connEnd.getRole();
+ Port connectedBoundPort = (Port)Utils.getNamedElementFromList(
+ PortUtils.getAllPorts(connectorImplem), connectedTemplatePort.getName());
+ connEnd.setRole(connectedBoundPort);
+ }
+ }
+ }
+ return tmConnectorPart;
+ }
+
+ /**
+ * Reify a connector
+ *
+ * @param copy
+ * The copy obect (from source to target mode)
+ * @param tmComponent
+ * containing composite in target target
+ * @param name
+ * name of the connector
+ * @param smConnector
+ * connector element within the source model
+ * @param tmIS
+ * target model instance specification of the composite in which the reified connector
+ * (the part typed with the instantiated interaction component) should be created
+ * @param args
+ * addtion args for the Acceleo transformation
+ * @return the created part within tmComponent
+ * @throws TransformationException
+ */
+ public static Property reifyConnector(Copy copy, Class tmComponent,
+ String name, Connector smConnector, InstanceSpecification tmIS, Object[] args)
+ throws TransformationException {
+
+ FCM.Connector fcmConn = StUtils.getApplication(smConnector, FCM.Connector.class);
+
+ InteractionComponent connType = fcmConn.getIc();
+ if(connType == null) {
+ return null;
+ }
+
+ // choose an implementation
+ Class connectorImplemTemplate = DepUtils.chooseImplementation(connType.getBase_Class(), AllocUtils.getAllNodes(tmIS), false);
+
+ // ---- obtain binding & instantiate template type ...
+ TemplateBinding binding = ConnectorBinding.obtainBinding(tmComponent,
+ smConnector, connectorImplemTemplate, true);
+ Class connectorImplem;
+
+ if(binding != null) {
+ TemplateUtils.adaptActualsToTargetModel(copy, binding);
+ // make copy of bound package and restore it later. Required for nested template instantiations, in particular
+ // the bound package is set within container transformations and is (by default) restored to "null" afterwards.
+ // TODO: TemplateInstantiation should do this automatically
+ copy.pushPackageTemplate();
+ TemplateInstantiation ti = new TemplateInstantiation(copy, binding, args);
+ connectorImplem = (Class)ti.bindNamedElement(connectorImplemTemplate);
+ copy.popPackageTemplate();
+ } else {
+ // no binding, class is not a template => copy as it is
+ connectorImplem = copy.getCopy(connectorImplemTemplate);
+ }
+
+ if(connectorImplem == null) {
+ throw new TransformationException(
+ "could not bind the connector implementation template \""
+ + connectorImplemTemplate.getName() + "\"");
+ }
+
+ Property tmConnectorPart = tmComponent.createOwnedAttribute(name,
+ connectorImplemTemplate);
+ // copy id, but prefix it with "p" (for part)
+ Copy.copyID(smConnector, tmConnectorPart, "p");
+ tmConnectorPart.setIsComposite(true);
+
+ Log.log(Log.INFO_MSG, Log.TRAFO_CONNECTOR, "ConnectorReification," +
+ "add part with connector implementation template <"
+ + connectorImplemTemplate.getName() + "> and implementation <"
+ + connectorImplem.getName() + ">");
+
+ // now create (simple) connections towards the new part
+ int i = 0;
+ for(ConnectorEnd smEnd : smConnector.getEnds()) {
+ Connector tmConnector = tmComponent.createOwnedConnector("c "
+ + name + " " + String.valueOf(i));
+ Copy.copyID(smConnector, tmConnector);
+ i++;
+ // the new connector connects the existing end with an end of the
+ // reified connector (the newly created property.)
+
+ // --- first end, connected with the existing end (of another
+ // non-connector part)
+ ConnectorEnd tmEnd1 = tmConnector.createEnd();
+ Property smPartWithPort = smEnd.getPartWithPort();
+ Property tmPartWithPort = copy.getCopy(smPartWithPort);
+ ConnectableElement smRole = smEnd.getRole();
+ ConnectableElement tmRole = copy.getCopy(smRole);
+ tmEnd1.setPartWithPort(tmPartWithPort);
+ tmEnd1.setRole(tmRole);
+
+ // --- 2nd end, connected with the reified connector (new part)
+ ConnectorEnd tmEnd2 = tmConnector.createEnd();
+ tmEnd2.setPartWithPort(tmConnectorPart);
+ // inheritance between connector type and implementation (ports should be identical)
+ // TODO: check whether filter condition is unique? (first returned by getConnectorPort is "good" one)
+ if(tmRole instanceof Port) {
+ tmEnd2.setRole(getConnectorPort(connectorImplem, (Port)tmRole, (tmPartWithPort != null)));
+ }
+ else {
+ throw new TransformationException(
+ "Connector reification requires the use of ports (otherwise, the ports of the reified connector can not be assigned unambiguously");
+ }
+ }
+
+ tmConnectorPart.setType(connectorImplem);
+ // updatePorts(tmComponent, connectorPart, connectorImplem);
+ // connectContainerPorts(tmComponent, connectorPart);
+
+ return tmConnectorPart;
+ }
+
+ /**
+ * Simple helper function
+ *
+ * @param part
+ * @param connection
+ * @return the connector end that is associated with the "other" end of a
+ * connection, i.e. the end that is not connected with the part
+ * passed as parameter.
+ */
+ public static ConnectorEnd oppositeConnEnd(Connector connection,
+ ConnectorEnd myEnd) {
+ // look for the other end (connectedEnd != myEnd)
+ for(ConnectorEnd end : connection.getEnds()) {
+ if(end != myEnd) {
+ return end;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Check, if a delegation connection targets a part that is deployed on a
+ * certain node.
+ *
+ * @param connection
+ * a delegation connection
+ * @param owner
+ * the owning instance specification (instance specification for
+ * composite containing the part that is targeted by the
+ * connection)
+ * @param node
+ * @return
+ */
+ /*
+ * public static boolean delegationForNode(Connector connection,
+ * InstanceSpecification owner, Node node) {
+ * InstanceSpecification instanceOfPart = getInstanceForPart(owner,
+ * ConnectorUtils.connEndNotPart(connection, null)
+ * .getPartWithPort());
+ *
+ * if (instanceOfPart != null) {
+ * return (!ConnectorUtils.isAssembly(connection) && (AllocUtils
+ * .getNode(instanceOfPart) == node));
+ * } else {
+ * return false;
+ * }
+ * }
+ */
+
+ /**
+ * Components can contain additional ports that are inherited via the
+ * container extension. These ports should typically be connected with
+ * additional ports of the (reified) connector. This connection is based on
+ * equal port types and is done automatically by this function, i.e. it
+ * cannot be done by the developer.
+ *
+ * @param composite
+ * the composite in which a connector has been reified.
+ * @param reifiedConnector
+ * the part associated with the reifiedConnector
+ */
+ static void connectContainerPorts(Class composite, Property reifiedConnector) {
+ // This function is based on the assumption that the additional ports of
+ // the reified
+ // connector need to be connected with a port of a component that is
+ // already
+ // connected via the "normal" connectors (explicitly modeled by the
+ // user).
+ // For instance, in case of ACCORD-calls, the server component provides
+ // the additional
+ // RTU port via its container.
+
+ // Create a subset of connectors that are connected with the
+ // reified connector
+ EList<Connector> connSubset = new BasicEList<Connector>();
+ for(Connector connector : composite.getOwnedConnectors()) {
+ if(ConnectorUtils.connectsPart(connector, reifiedConnector)) {
+ connSubset.add(connector);
+ }
+ }
+
+ for(Port port : PortUtils.getAllPorts((Class)reifiedConnector
+ .getType())) {
+ // check, if port is unconnected.
+ boolean connected = false;
+ // check whether a port of the reified connector is not yet
+ // connected.
+ for(Connector connector : connSubset) {
+ if(ConnectorUtils.connectsPort(connector, port)) {
+ connected = true;
+ }
+ }
+ if(!connected) {
+ // port is not connected yet. Check to find a connectable port
+ // among all ports of connected parts.
+ // In the moment, we assume the processes is stopped, as soon as
+ // the port is connected, i.e. we do not want to connect the port to
+ // potentially set of ports (todo: restriction always useful?)
+ for(Connector connector : connSubset) {
+ ConnectorEnd connEnd = ConnectorUtils.connEndNotPart(
+ connector, reifiedConnector);
+ Property otherPart = connEnd.getPartWithPort();
+ // this is a part which is connected with the reified
+ // connector check whether one of its ports is compatible with the
+ // non-connected port.
+ if(!(otherPart.getType() instanceof EncapsulatedClassifier))
+ continue;
+
+ for(Port otherPort : PortUtils
+ .getAllPorts((EncapsulatedClassifier)otherPart
+ .getType())) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_CONNECTOR, "ConnectorReification: otherPort type: " +
+ otherPort.getType().getQualifiedName());
+ Log.log(Log.INFO_MSG, Log.TRAFO_CONNECTOR, "ConnectorReification: port type: " +
+ port.getType().getQualifiedName());
+ if(otherPort.getType() == port.getType()) {
+ Connector newConnector = composite.createOwnedConnector("connector - container of "
+ + otherPart.getName());
+ ConnectorEnd end1 = newConnector.createEnd();
+ ConnectorEnd end2 = newConnector.createEnd();
+ end1.setPartWithPort(reifiedConnector);
+ end1.setRole(port);
+ end2.setPartWithPort(otherPart);
+ end2.setRole(otherPort);
+ connected = true;
+ break;
+ }
+ }
+ if(connected)
+ break;
+ }
+ if(!connected) {
+ if(port.getType() == null) {
+ System.err
+ .println("Error: connector port \""
+ + port.getName()
+ + "\" does not have a type. It is (therefore) not connected");
+ } else {
+ System.err
+ .println("Error: could not connect connector port: "
+ + port.getName()
+ + " of type "
+ + port.getType().getName());
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Propagate node allocation into a reified connector (identified via its part)
+ *
+ * The allocation algorithm works as follows.
+ * - get a connector (simple) originating from the passed part
+ * - get the opposite end of this simple connector and identify the connected part
+ * (other part, e.g. a part typed with an application component)
+ * - obtain the nodes to which this other part is allocated:
+ * - in case of a composite, connections are followed up to a monolithic component
+ * - propagate the node allocation into the connector (propagation will finally
+ * allocate leafs within a (composite) connector.
+ *
+ * @param composite
+ * the composite class (e.g. system) in which a connector is reified
+ * @param compositeIS
+ * the associated instance specification
+ * @param partSlot
+ * the slot associated with the part for which nodes are
+ * allocated.
+ */
+ public static void propagateNodeAllocation(Class composite,
+ InstanceSpecification compositeIS, Slot partSlot) {
+ Property part = (Property)partSlot.getDefiningFeature();
+
+ // loop over connectors of composite that originate from passed part.
+ for(Connector connector : composite.getOwnedConnectors()) {
+ ConnectorEnd myEnd = ConnectorUtils.connEndForPart(connector, part);
+ if(myEnd == null) {
+ // the connector does not connect this part
+ continue;
+ }
+ ConnectorEnd otherEnd = ConnectorUtils.connEndNotPart(connector,
+ part);
+
+ Property otherPart = otherEnd.getPartWithPort();
+ Port otherPort = (Port)otherEnd.getRole();
+ // Property myPart = myEnd.getPartWithPort();
+ Port myPort = (Port)myEnd.getRole();
+
+ // find instance that is associated with other part.
+ for(Slot slot : compositeIS.getSlots()) {
+ if(slot.getDefiningFeature() == otherPart) {
+ InstanceSpecification containedInstance = DepUtils
+ .getInstance(slot);
+ // TODO: too complicated, if the non-connector is a composite as well, it must be clearly allocated
+ EList<InstanceSpecification> nodes = AllocUtils.getAllNodesForPort(
+ containedInstance, otherPort);
+ AllocUtils.propagateNodesViaPort(DepUtils
+ .getInstance(partSlot), myPort, nodes);
+ break;
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerContext.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerContext.java
new file mode 100644
index 00000000000..fd836310623
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerContext.java
@@ -0,0 +1,58 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.StructuralFeature;
+
+
+/**
+ * Holder for context information during the configuration of an element within a container
+ *
+ * @author ansgar
+ *
+ */
+public class ContainerContext {
+
+ /**
+ * Convenience constructor. Used to initialize elements known outside the container transformation
+ * itself
+ * Constructor.
+ *
+ * @param executorPart
+ * @param nodeExecutorPart
+ */
+ public ContainerContext(StructuralFeature executorPart, StructuralFeature nodeExecutorPart) {
+ this.smPartDF = executorPart;
+ this.smNodePartDF = nodeExecutorPart;
+ }
+
+ /**
+ * The instance specification of the executor. It is a part of container that has been created, thus
+ * an element of the target model.
+ */
+ public InstanceSpecification executorIS;
+
+ /**
+ * The part within a composite that represents a component applying a container rule. It is
+ * part of the source model. The main motivation for this information is that some instance configurators
+ * evaluate stereotype attributes that are applied to this part (we call it part, since it is typically a
+ * property with composite aggregation. It is stored as a structural feature, since the information is derived
+ * from the slot pointing to the current instance that is evaluated).
+ */
+ public StructuralFeature smPartDF;
+
+ /**
+ * The part within a composite that represents a hardware component applying a container rule. It is
+ * part of the source model. The main motivation for this information is that some instance configurators
+ * evaluate stereotype attributes that are applied to this part
+ *
+ * @see ContainerContext.smPartDF
+ */
+ public StructuralFeature smNodePartDF;
+
+ /**
+ * The port that is intercepted in case of an interceptor configuration.
+ */
+ public Port port;
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java
new file mode 100644
index 00000000000..5bfde5464be
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java
@@ -0,0 +1,555 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import FCM.ContainerRule;
+import FCM.InteractionComponent;
+import FCM.InterceptionKind;
+import FCM.InterceptionRule;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.InstanceConfigurator;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateUtils;
+
+public class ContainerTrafo extends AbstractContainerTrafo {
+
+ public static final String executorPartName = "_executor";
+
+ public static final String interceptorName = "intercept ";
+
+ /**
+ * Constructor
+ *
+ * @param sat
+ * information about source and target model
+ * @param tmCDP
+ * deployment plan within target model
+ */
+ public ContainerTrafo(Copy copy, Package tmCDP) {
+ this.copy = copy;
+ this.tmCDP = tmCDP;
+ configureOnly = false;
+ }
+
+ /**
+ * creates the executor. Needs to be called *before* the other operations of
+ * this class.
+ *
+ * @param tmComponent
+ * the implementation of a component
+ *
+ * @throws TransformationException
+ */
+ public void createContainer(Class smComponent, Class tmComponent) throws TransformationException {
+ Package tmPkgOwner = (Package)tmComponent.getOwner();
+ // create a container with the name of the original component
+ // renaming existing component (postfix "_e" for "executor")
+ if(false) {
+ tmContainerImpl = tmPkgOwner.createOwnedClass(tmComponent.getName(), false);
+ tmComponent.setName(tmComponent.getName() + "_e");
+ }
+ else {
+ tmContainerImpl = tmPkgOwner.createOwnedClass(tmComponent.getName() + "_cc", false);
+ }
+ Copy.copyID(tmComponent, tmContainerImpl, "c");
+
+ // add part and slot corresponding to component;
+ executorPart = tmContainerImpl.createOwnedAttribute(executorPartName, tmComponent);
+ Copy.copyID(tmComponent, executorPart, "e");
+
+ this.smClass = smComponent;
+
+ executorPart.setIsComposite(true);
+
+ // copy ports from the executor (tmComponent) to the container
+ // (tmContainerImpl)
+ // TODO: connectors still point to the ports of the executor, implying a non-well-formed
+ // model. Yet code generation works, as port names are identical
+ for(Port port : PortUtils.getAllPorts(tmComponent)) {
+ // copy port
+ Port newPort = EcoreUtil.copy(port); // don't use E3CM copy, since this is not a copy from source to target model
+ tmContainerImpl.getOwnedAttributes().add(newPort);
+ StUtils.copyStereotypes(port, newPort);
+
+ // create delegation for application port
+ Connector containerDelegation = tmContainerImpl.createOwnedConnector("delegation " + port.getName());
+ Copy.copyID(tmContainerImpl, containerDelegation);
+ ConnectorEnd end1 = containerDelegation.createEnd();
+ end1.setRole(newPort);
+ ConnectorEnd end2 = containerDelegation.createEnd();
+ end2.setPartWithPort(executorPart);
+ end2.setRole(port);
+ }
+
+ // Inheritance issues:
+ // currently: container never copies inheritance relationships, but copies inherited ports into container
+ // Problem: polymorphism would stop working.
+ // Objective: use inheritance, if possible, but avoid that container inherits from an original non-abstract class (avoid duplication of attributes, ...)
+ // Option: container inherits from fully abstract super-classes (might have to consider indirect super-classes).
+ // All connectors and container extension remain within container (i.e. no inheritance of connectors and container extensions)
+ // Remaining problems: Imagine that component A inherits from component B and both have state-charts.
+ // => containers of A and B would define a state-Machine and an event pool.
+ // => No shared pool (but anyway: semantics of this construct is not very clear).
+ containers.put(tmComponent, this);
+ }
+
+ /**
+ * Create a container for a HW class. This is an additional software class
+ * within the system. There is no executor part, i.e. executorPart remains
+ *
+ * @param tmComponent
+ * the implementation of a component
+ *
+ * @throws TransformationException
+ */
+ public void createHwContainer(Class tmComponent) throws TransformationException {
+ Package tmPkgOwner = (Package)tmComponent.getOwner();
+ tmContainerImpl = tmPkgOwner.createOwnedClass(tmComponent.getName() + "Hwcc", false);
+ Copy.copyID(tmComponent, tmContainerImpl, "hwcc");
+
+ // register created container
+ containers.put(tmComponent, this);
+ }
+
+ /**
+ * Create an instance of the container (UML instance specification)
+ *
+ * @param tmComponent
+ * the component within the target model for which we want to create an instance
+ *
+ * @param tmIS
+ * the existing instance specification for the component before container expansion. This
+ * instance specification becomes the new instance specification of the executor.
+ * @param context
+ * Additional information about the container that is used by instance configurators
+ */
+ public void createContainerInstance(Class tmComponent, InstanceSpecification tmIS, ContainerContext context) {
+ // create an instance specification for the container
+ containerIS = (InstanceSpecification)tmCDP.createPackagedElement(tmIS.getName(), UMLPackage.eINSTANCE.getInstanceSpecification());
+ // assign new name to original instance specification which reflects
+ // role within containment hierarchy
+ tmIS.setName(tmIS.getName() + "._executor");
+ containerIS.getClassifiers().add(tmContainerImpl);
+ // existing instance specification (tmIS) is the executor instance specification
+ DepCreation.createSlot(containerIS, tmIS, executorPart);
+ executorIS = tmIS;
+ counter = 0;
+ // containers.put(tmComponent, this);
+ this.context = context;
+ context.executorIS = executorIS;
+ /*
+ * // now create instances for the contained elements
+ * for(Property extensionPart : tmContainerImpl.getAttributes()) {
+ * Type tmContainerExtImpl = extensionPart.getType();
+ * if(tmContainerExtImpl instanceof Class) {
+ * InstanceSpecification containerExtIS = DepCreation.createDepPlan(tmCDP, (Class)tmContainerExtImpl, containerIS.getName() + "." +
+ * extensionPart.getName(), false);
+ * // configure extension
+ * InstanceConfigurator.configureInstance(executorIS, smPart, containerExtIS, null);
+ * DepCreation.createSlot(containerIS, containerExtIS, extensionPart);
+ * }
+ * }
+ */
+ }
+
+ /**
+ * Create an instance of the container (UML instance specification)
+ *
+ * @param tmComponent
+ * @param tmIS
+ */
+ public void createHwContainerInstance(Class tmComponent, InstanceSpecification tmNode, ContainerContext context) {
+ // create an instance specification for the container
+ containerIS = (InstanceSpecification)tmCDP.createPackagedElement(tmNode.getName() + "HWC", UMLPackage.eINSTANCE.getInstanceSpecification());
+ // assign new name to original instance specification which reflects
+ // role within containment hierarchy
+ containerIS.getClassifiers().add(tmContainerImpl);
+ // containers.put(tmComponent, this);
+ counter = 0;
+ executorIS = tmNode;
+ this.context = context;
+ context.executorIS = executorIS;
+ }
+
+ /**
+ * return the reference of the created container class
+ *
+ * @return
+ */
+ public Class getContainer() {
+ return tmContainerImpl;
+ }
+
+ /**
+ * apply a container rule, i.e. add either a container extension or an
+ * interceptor to the container
+ *
+ * @param smContainerRule
+ * An container rule
+ * @param smComponent
+ * the application component in the source model
+ * @param tmComponent
+ * the application component in the target model
+ * @param tmIS
+ * the instance specification for the application component in the target model
+ * @throws TransformationException
+ */
+ public void applyRule(ContainerRule smContainerRule, Class smComponent, Class tmComponent, InstanceSpecification tmIS)
+ throws TransformationException
+ {
+ Map<Property, EList<Property>> interceptorPartsMap = new HashMap<Property, EList<Property>>();
+
+ for(Property part : smContainerRule.getBase_Class().getAllAttributes()) {
+ Type type = part.getType();
+ if(type == null) {
+ String ruleName = (smContainerRule.getBase_Class() != null) ? smContainerRule.getBase_Class().getName() : "undefined";
+ throw new TransformationException("Cannot apply container rule <" + ruleName + ">, since the type of one of its parts is undefined. Check for unresolved proxies in imports");
+ }
+ if(part instanceof Port) {
+ Port newPort = tmContainerImpl.createOwnedPort(part.getName(), part.getType());
+ StUtils.copyStereotypes(part, newPort);
+ }
+ else if(type instanceof Class) {
+ Class extOrInterceptor = (Class)type;
+ // DepUtils.chooseImplementation((Class) type,
+ // new BasicEList<InstanceSpecification>(), false);
+
+ if(StUtils.isApplied(extOrInterceptor, InteractionComponent.class)) {
+
+ InterceptionRule interceptionRule = StUtils.getApplication(part, InterceptionRule.class);
+ InterceptionKind interceptionKind = InterceptionKind.INTERCEPT_ALL; // default: intercept all ports
+ EList<Feature> interceptFeatures = null;
+ if(interceptionRule != null) {
+ interceptionKind = interceptionRule.getInterceptionKind();
+ interceptFeatures = interceptionRule.getInterceptionSet();
+ }
+ EList<Property> interceptorParts =
+ expandInterceptorExtension(interceptionKind, interceptFeatures, extOrInterceptor, tmComponent);
+ interceptorPartsMap.put(part, interceptorParts);
+ }
+ else if(StUtils.isApplied(part, InterceptionRule.class)) {
+ throw new TransformationException("The part " + part.getName() + " in rule " + smContainerRule.getBase_Class().getName() + "" +
+ " has an interceptionRule, but is not typed with an interaction component");
+ }
+ else {
+ Property extensionPart =
+ expandAggregationExtension(part.getName(), extOrInterceptor, tmComponent);
+ // register relation to facilitate connector copy
+ copy.setPackageTemplate(smContainerRule.getBase_Class(), tmContainerImpl);
+ copy.put(part, extensionPart);
+ copy.setPackageTemplate(null, null);
+ }
+ }
+ }
+ createConnectorForAssociations();
+ // tell copy that tmcontainerImpl is associated with the smContainerRule
+ // register a package template (although it is not a template) to assure that the connectors
+ // get copied, although they are in a different resource (only the connectors are copied, not
+ // the types of the referenced parts).
+ // [main issue here: properties of container rule are not copies in the sense of identical
+ // copies]
+ copy.setPackageTemplate(smContainerRule.getBase_Class(), tmContainerImpl);
+
+ for(Connector connector : smContainerRule.getBase_Class().getOwnedConnectors()) {
+ Property ruleInterceptorPart = null;
+ for(Property part : interceptorPartsMap.keySet()) {
+ if(ConnectorUtils.connectsPart(connector, part)) {
+ // this connector is a connection between an interceptor (and another part which may not
+ // be an interceptor => TODO: validation rule yet to write
+ // we need to copy this connector multiple times, once for each associated interceptor part
+ ruleInterceptorPart = part;
+ break;
+ }
+ }
+ if(ruleInterceptorPart != null) {
+ for(Property interceptorPart : interceptorPartsMap.get(ruleInterceptorPart)) {
+ // map an interceptor part within rule successively to to an interceptor part
+ // within the container
+ copy.put(ruleInterceptorPart, interceptorPart);
+ copy.removeForCopy(connector);
+ copy.getCopy(connector);
+ }
+ }
+ else {
+ // check whether FCM connector
+ FCM.Connector fcmConn = StUtils.getConnector(connector);
+ if(fcmConn != null) {
+ Property connectorPart = ConnectorReification.reifyConnector(copy, tmContainerImpl,
+ UMLTool.varName(connector), connector, containerIS, null);
+ // don't create specific configuration slots (don't know how to specific in source model)
+ InstanceSpecification tmReifiedConnectorIS = DepCreation.createDepPlan(
+ tmCDP, (Class)connectorPart.getType(),
+ tmIS.getName() + "." + connector.getName(), false);
+ }
+ else {
+ copy.remove(connector);
+ copy.getCopy(connector);
+ }
+ }
+ }
+ copy.setPackageTemplate(null, null);
+ }
+
+ /**
+ * This container expansion does not create a new composite. Instead, it
+ * adds the extension as a part to the copied application component. The
+ * application component also inherits from the type of the container
+ * extension in order to avoid copying ports.
+ */
+ Property expandAggregationExtension(String name, Class smContainerExtImpl, Class tmComponent) throws TransformationException {
+ Property extensionPart;
+ Class tmContainerExtImpl = null;
+ if(configureOnly) {
+ extensionPart = tmContainerImpl.getAttribute(name, null);
+ if((extensionPart != null) && extensionPart.getType() instanceof Class) {
+ tmContainerExtImpl = (Class)extensionPart.getType();
+ }
+ }
+ else {
+ TemplateSignature signature = TemplateUtils.getSignature(smContainerExtImpl);
+ if(signature == null) {
+ // no template signature, just copy the container extension into the target model
+ tmContainerExtImpl = copy.getCopy(smContainerExtImpl);
+ } else {
+ // template signature found, instantiate container extension via the
+ // template binding mechanism
+ TemplateBinding binding = TemplateUtils.fixedBinding(copy.target, smContainerExtImpl, tmComponent);
+ Object[] args = new Object[]{};
+ TemplateInstantiation ti = new TemplateInstantiation(copy, binding, args);
+ tmContainerExtImpl = (Class)ti.bindNamedElement(smContainerExtImpl);
+ }
+
+ // add part associated with the extension to the container
+ extensionPart = tmContainerImpl.createOwnedAttribute(name, tmContainerExtImpl);
+ }
+ // problem: would not be unique in case of multiple extensions
+ // Copy.copyID(tmComponent, extensionPart, "a");
+ extensionPart.setIsComposite(true);
+ // TODO separation of container creation and instance creation
+ InstanceSpecification containerExtIS = DepCreation.createDepPlan(tmCDP, tmContainerExtImpl, containerIS.getName() + "." + extensionPart.getName(), false);
+ // configure extension
+ context.port = null;
+ InstanceConfigurator.configureInstance(containerExtIS, extensionPart, context);
+ DepCreation.createSlot(containerIS, containerExtIS, extensionPart);
+
+ return extensionPart;
+ }
+
+ /**
+ * Expand an interceptor definition between the container and the executor.
+ *
+ * @param extKind
+ * the interception kind (intercept which ports: all, some, out, ...)
+ * @param featureList
+ * The set of ports to intercept (In case of "some" above)
+ * @param smContainerConnImpl
+ * The connector (interceptor) implementation in the source model
+ * @param tmComponent
+ * the application component (executor) in the target model
+ * @return
+ * @throws TransformationException
+ */
+ EList<Property> expandInterceptorExtension(InterceptionKind extKind, EList<Feature> featureList, Class smContainerConnImpl, Class tmComponent)
+ throws TransformationException
+ {
+ EList<Property> connectorParts = new BasicEList<Property>();
+ // replace delegation connectors with extension connector
+ for(Port port : PortUtils.getAllPorts(tmComponent)) {
+ // delegate to component via connector
+ boolean match = true;
+ if(extKind == InterceptionKind.INTERCEPT_ALL_IN) {
+ // IN-PORT = provided port
+ match = (PortUtils.getProvided(port) != null);
+ } else if(extKind == InterceptionKind.INTERCEPT_ALL_OUT) {
+ // IN-PORT = provided port
+ match = (PortUtils.getRequired(port) != null);
+ } else if(extKind == InterceptionKind.INTERCEPT_SOME) {
+ // comparison based on name, since in different models
+ match = (Utils.getNamedElementFromList(featureList, port.getName()) != null);
+ }
+ // else INTERCEPT_ALL_PORT => match remains true
+ if(!match) {
+ // port does not match criterion, continue with next port
+ continue;
+ }
+
+ Property connectorPart;
+ String interceptionName = interceptorName + port.getName() + counter;
+ if(configureOnly) {
+ // counter is reset before instance configuration
+ connectorPart = tmContainerImpl.getAttribute(interceptionName, null);
+ }
+ else {
+ Connector interceptionConnector = null;
+ // get delegation connector
+ for(Connector connector : tmContainerImpl.getOwnedConnectors()) {
+ if(ConnectorUtils.connectsPort(connector, port)) {
+ interceptionConnector = connector;
+ break;
+ }
+ }
+ // interceptionConnector = tmContainerImpl.getOwnedConnector
+ // ("delegation " + port.getName ());
+ if(interceptionConnector == null) {
+ throw new TransformationException("(during interceptor transformation for container): cannot find existing delegation connector");
+ }
+
+ interceptionConnector.setName(interceptorName + port.getName() + counter);
+ FCM.Connector fcmConn = StUtils.applyApp(interceptionConnector, FCM.Connector.class);
+ InteractionComponent fcmConnType = StUtils.getApplication(smContainerConnImpl, InteractionComponent.class);
+ fcmConn.setIc(fcmConnType);
+
+ // pass target component and port to interceptor (not clean, define
+ // suitable template signature as for instance in methodCall_comp
+ Object[] args = new Object[]{ executorIS, port };
+ TransformationContext.instance = executorIS;
+ TransformationContext.port = port;
+ connectorPart = ConnectorReification.reifyConnector(copy, tmContainerImpl, UMLTool.varName(interceptionConnector), interceptionConnector, executorIS, args);
+ connectorParts.add(connectorPart);
+ TransformationContext.port = null;
+ // delete intermediate connector (has been replaced by two
+ // connections to the reified connector)
+ interceptionConnector.destroy();
+ }
+ // Now create an instance specification for the reified connector
+ InstanceSpecification reifiedConnectorIS = DepCreation.createDepPlan(tmCDP, (Class)connectorPart.getType(),
+ containerIS.getName() + "." + interceptionName, false);
+ // configure connector
+ context.port = port;
+ InstanceConfigurator.configureInstance(reifiedConnectorIS, connectorPart, context);
+
+ Slot partSlot = DepCreation.createSlot(containerIS, reifiedConnectorIS, connectorPart);
+
+
+ ConnectorReification.propagateNodeAllocation(tmComponent, executorIS, partSlot);
+ }
+ counter++;
+ return connectorParts;
+ }
+
+ /**
+ * Move a slot from the executor instance specification to an instance
+ * specification of an extension/interceptor This is required, since the
+ * users cannot configure containers directly. The modification is done in
+ * the target model, i.e. the user model is not affected.
+ */
+ public void moveSlots() {
+ Log.log(Log.INFO_MSG, Log.TRAFO_CONTAINER, "Move slots for instance: " + executorIS.getQualifiedName());
+ Classifier mainCl = DepUtils.getClassifier(executorIS);
+ Iterator<Slot> slotIt = executorIS.getSlots().iterator();
+ while(slotIt.hasNext()) {
+ Slot slot = slotIt.next();
+ String featureName = slot.getDefiningFeature().getName();
+ if(!mainCl.getAllAttributes().contains(slot.getDefiningFeature())) {
+ // defining feature does not belong to main classifier
+ // => move it to first matching instance specification
+ for(InstanceSpecification is : DepUtils.getContainedInstances(containerIS)) {
+ Classifier containedCl = DepUtils.getClassifier(is);
+ if(Utils.getNamedElementFromList(containedCl.getAllAttributes(), featureName) != null) {
+ if(executorIS != is) {
+ // remove slot first from iterator, as addition below removes it from the list (slots are owned)
+ slotIt.remove();
+ is.getSlots().add(slot);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Create an connector for parts that have an association. The rationale
+ * behind this is
+ *
+ */
+ public void createConnectorForAssociations() {
+ // TODO: keep list of added parts, only recheck those!
+
+ for(Property part : Utils.getParts(tmContainerImpl)) {
+ if(part.getType() == null) {
+ continue;
+ }
+ for(Association association : part.getType().getAssociations()) {
+ // Part has an association. Check if the other association end
+ // targets one of
+ // other parts within the container
+ for(Property end : association.getMemberEnds()) {
+ Type type = end.getType();
+ if((type != null) && (type != part.getType())) {
+ // end is not typed with the part we are currently
+ // examining
+ // thus, it might belong to another part of the
+ // composite
+ for(Property checkPart : Utils.getParts(tmContainerImpl)) {
+ if(type == checkPart.getType()) {
+ // found an association between two parts of the
+ // container => create connection,
+ // unless already existing.
+ if(!ConnectorUtils.existsConnector(tmContainerImpl, part, checkPart)) {
+ Connector conn = tmContainerImpl.createOwnedConnector(part.getName() + "_" + checkPart.getName());
+ conn.setType(association);
+ conn.createEnd().setRole(part);
+ conn.createEnd().setRole(checkPart);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * The attribute within the container that holds the executor, i.e. the
+ * original component
+ */
+ private Property executorPart;
+
+ /**
+ * An instance specification of the executor in the target model (todo: should be source model instead?), i.e.
+ * of the component before container expansion
+ */
+ private InstanceSpecification executorIS;
+
+ /**
+ * The created container implementation (prefixed with tm, since part of
+ * target model)
+ */
+ private Class tmContainerImpl;
+
+ /**
+ * A counter which is used to manage unique names for interceptors (if
+ * multiple interceptors are applied)
+ */
+ private int counter;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Copy.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Copy.java
new file mode 100644
index 00000000000..cbccdf05007
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/Copy.java
@@ -0,0 +1,855 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil.Copier;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Feature;
+import org.eclipse.uml2.uml.LiteralBoolean;
+import org.eclipse.uml2.uml.LiteralInteger;
+import org.eclipse.uml2.uml.LiteralNull;
+import org.eclipse.uml2.uml.LiteralString;
+import org.eclipse.uml2.uml.LiteralUnlimitedNatural;
+import org.eclipse.uml2.uml.MultiplicityElement;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Namespace;
+import org.eclipse.uml2.uml.OpaqueExpression;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+
+/**
+ * information about source and target packages within a model transformation
+ *
+ * @author ansgar
+ *
+ */
+public class Copy extends Copier {
+
+ public Copy(Package source_, Package target_, boolean copyExtResources_) {
+ source = source_;
+ target = target_;
+ // useOriginalReferences = false;
+ copyExtReferences = copyExtResources_;
+ preCopyListeners = new BasicEList<CopyListener>();
+ postCopyListeners = new BasicEList<CopyListener>();
+ templateMapInfo = new HashMap<EObject, Map<EObject, EObject>>();
+ standardMap = new HashMap<EObject, EObject>();
+ shallowMap = new HashMap<EObject, Boolean>();
+ boundPackages = new Stack<Namespace>();
+ if(copyExtReferences) {
+ // original source package becomes a sub-package in the target model
+ Package newSourceRoot = target.createNestedPackage(source.getName());
+ put(source, newSourceRoot);
+ }
+ else {
+ put(source, target);
+ }
+ };
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1664013545661635289L;
+
+ /**
+ * Source model within a transformation
+ */
+
+ public Package source;
+
+ /**
+ * Target model within a transformation
+ */
+ public Package target;
+
+ /**
+ * if true, copy packages or elements that are imported into the target
+ * model
+ */
+ public boolean copyExtReferences;
+
+ /**
+ * Bound package template
+ */
+ private Namespace boundPackage;
+
+ /**
+ * Map to identify target objects when given source objects
+ */
+ private Map<EObject, EObject> standardMap;
+
+ /**
+ * Map to identify target objects when given source objects
+ */
+ private Map<EObject, EObject> templateMap;
+
+ /**
+ * Set of maps for template instantiations
+ */
+ private Map<EObject, Map<EObject, EObject>> templateMapInfo;
+
+ /**
+ * Map using a target EObject as key
+ */
+ private Map<EObject, Boolean> shallowMap;
+
+ /**
+ * Elements within package templates must be treated differently, we have to ensure that:
+ * (1) several instantiations with same binding of the same package template do not lead to double copies
+ * (yet, it may be possible that a 2nd instantiation adds contents, e.g. the trace package template could be
+ * instantiated containing only OTF trace (and superclasses), a second instantiation might add a different trace
+ * implementation)
+ * (2) several instantiations with different binding do not prevent classes from being copied that have already
+ * been copied earlier.
+ * The solution is to use a different map for the elements with package template. This map is instantiated once
+ * for each binding (managed by the TemplateInstantiation class)
+ */
+ public Map<EObject, EObject> getMap(EObject sourceEObj) {
+ boolean withinTemplate = withinTemplate(sourceEObj);
+ return withinTemplate ?
+ templateMap :
+ standardMap;
+ }
+
+ @Override
+ public EObject get(Object sourceEObj) {
+ if(sourceEObj instanceof EObject) {
+ Map<EObject, EObject> map = getMap((EObject)sourceEObj);
+ return map.get(sourceEObj);
+ }
+ return null;
+ }
+
+ @Override
+ public EObject put(EObject sourceEObj, EObject targetEObj) {
+ if(sourceEObj instanceof EObject) {
+ Map<EObject, EObject> map = getMap((EObject)sourceEObj);
+ return map.put(sourceEObj, targetEObj);
+ }
+ return null;
+ }
+
+ @Override
+ public boolean containsKey(Object sourceEObj) {
+ if(sourceEObj instanceof EObject) {
+ Map<EObject, EObject> map = getMap((EObject)sourceEObj);
+ return map.containsKey(sourceEObj);
+ }
+ return false;
+ }
+
+ @Override
+ public EObject remove(Object sourceEObj) {
+ if(sourceEObj instanceof EObject) {
+ Map<EObject, EObject> map = getMap((EObject)sourceEObj);
+ return map.remove(sourceEObj);
+ }
+ return null;
+ }
+
+ public void setShallow(EObject targetEObj, boolean isShallow) {
+ shallowMap.put(targetEObj, isShallow);
+ }
+
+ /**
+ * return true, if a shallow copy of the passed EObject exists
+ *
+ * @param sourceEObj
+ * @return
+ */
+ public boolean isShallow(EObject targetEObj) {
+ Boolean shallow = shallowMap.get(targetEObj);
+ if(shallow != null) {
+ return shallow;
+ }
+ return false;
+ }
+
+ // public Namespace getPackageTemplate() {
+ // return null;
+ // }
+
+ /**
+ * Set the reference of a bound package template. It must be a member of the target model.
+ * Setting the package template is required to assure that elements that are part of a different
+ * resource get copied (if the copyExtReferences flag is set to false, copying would not be done otherwise)
+ *
+ * @param packageTemplate
+ * Reference to package (with a template signature) in source model that should be instantiated
+ * @param boundPackage
+ * Reference to (an initially empty) package in which the packate template will be instantiated
+ * during the copy process
+ */
+ public void setPackageTemplate(Namespace packageTemplate, Namespace boundPackage) {
+ this.boundPackage = boundPackage;
+ if(packageTemplate == null) {
+ return;
+ }
+ templateMap =
+ templateMapInfo.get(boundPackage);
+ if(templateMap == null) {
+ templateMap = new HashMap<EObject, EObject>();
+ templateMapInfo.put(boundPackage, templateMap);
+ }
+ // declare relation between packageTemplate and bound package
+ // but: the owner of the package template is not equal to the packageTemplate (e.g. perClass)
+ // since we can extend package templates in different models.
+ standardMap.put(packageTemplate, boundPackage);
+ }
+
+ public void pushPackageTemplate() {
+ boundPackages.push(boundPackage);
+ }
+
+ public void popPackageTemplate() {
+ boundPackage = boundPackages.pop();
+ templateMap =
+ templateMapInfo.get(boundPackage);
+ }
+
+ private Stack<Namespace> boundPackages;
+
+ public void removeForCopy(EObject element) {
+ templateMap.remove(element);
+ EClass eClass = element.eClass();
+ for(int i = 0, size = eClass.getFeatureCount(); i < size; ++i)
+ {
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i);
+ if(eStructuralFeature.isChangeable() && !eStructuralFeature.isDerived())
+ {
+ if(eStructuralFeature instanceof EAttribute) {
+ // copyAttribute((EAttribute)eStructuralFeature, sourceEObj, targetEObj);
+ }
+ else {
+ EReference eReference = (EReference)eStructuralFeature;
+ if(eReference.isContainment()) {
+ for(EObject ref : getRefs(eReference, element)) {
+ removeForCopy(ref);
+ }
+ }
+ else if(!eReference.isContainer()) {
+ // not contained, but copy reference as well
+
+ }
+ }
+ }
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public EList<EObject> getRefs(EReference eReference, EObject eObject) {
+ EList<EObject> refs = new BasicEList<EObject>();
+ if(eObject.eIsSet(eReference)) {
+ if(eReference.isMany()) {
+ // @SuppressWarnings("unchecked")
+ refs.addAll((List<EObject>)eObject.eGet(eReference));
+ } else {
+ refs.add((EObject)eObject.eGet(eReference));
+ }
+ }
+ return refs;
+ }
+
+ /**
+ * Check whether the passed element (within the source model) is within a
+ * a template, i.e. one of is owners is mapped towards the bound package in
+ * the target model. Note that multiple owners in the source model may be
+ * mapped to the same bound package.
+ *
+ * @param element
+ * @return
+ */
+ public boolean withinTemplate(EObject element) {
+ if(boundPackage != null) {
+ EObject owner = element;
+ while(owner != null) {
+ owner = owner.eContainer();
+ if(get(owner) == boundPackage) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns a copy of the given eObject.
+ *
+ * Normally, we do not want to copy elements that are from a different
+ * resource. There are two exceptions (1) if this is explicitly specified
+ * (for producing "complete" models) (2) if we want to copy elements from a
+ * template into the target model.
+ *
+ * @param sourceEObj
+ * the object to copy.
+ * @return the copy.
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public EObject copy(EObject sourceEObj) {
+ boolean withinTemplate = withinTemplate(sourceEObj);
+
+ EObject targetEObj = get(sourceEObj);
+
+ boolean shallowCopy = (targetEObj != null) && isShallow(targetEObj);
+
+ if((targetEObj != null) && !shallowCopy) {
+ // copy already exists, return
+ return targetEObj;
+ }
+ setShallow(targetEObj, false);
+
+ if(sourceEObj == null) {
+ // this case may happen, if elements were systematically copied without checking for
+ // null references in the application code (e.g. if swe copy a part-with-port which might
+ // be null in case of delegation or connectors without ports
+ return null;
+ }
+ boolean sameResource = (sourceEObj.eResource() == source.eResource());
+ if(!sameResource && !copyExtReferences && !withinTemplate) {
+ // do not copy if within different resource, unless
+ // 1. copyImports
+ // 2. within package template
+ return sourceEObj;
+ }
+
+ if(sourceEObj instanceof Stereotype) {
+ // do not copy Stereotypes, as it would imply copying meta-model elements (the base_X
+ // attribute of the stereotype is typed with a meta-model element)
+ return sourceEObj;
+ }
+
+ for(CopyListener listener : preCopyListeners) {
+ EObject result = listener.copyEObject(this, sourceEObj);
+ if(result != sourceEObj) {
+ return result;
+ }
+ }
+
+ if(sourceEObj instanceof NamedElement) {
+ String name = ((NamedElement)sourceEObj).getQualifiedName();
+ // System.err.println("Qompasscopier: " + name);
+ if((name != null) && name.startsWith("uml::")) {
+ Log.log(Log.ERROR_MSG, Log.TRAFO_COPY, "copy for meta-model element \"" + name + "\" requested. Return original element");
+ return sourceEObj;
+ }
+ // test code
+ if(false && (name != null) && name.endsWith("::I")) {
+ System.err.println(name);
+ }
+ }
+ // additional sanity check: want to avoid copying (instead of instantiating) elements
+ // of a package template
+ if((sourceEObj instanceof Package) && (!withinTemplate)) {
+ if(((Package)sourceEObj).getOwnedTemplateSignature() != null) {
+ Log.log(Log.WARNING_MSG, Log.TRAFO_COPY, "warning: copying a package template without instantiating a template");
+ }
+ }
+
+ if(shallowCopy) {
+ // shallowCopy is true: a copy exists already
+ }
+ else {
+ targetEObj = createCopy(sourceEObj);
+ put(sourceEObj, targetEObj);
+
+ createShallowContainer(sourceEObj);
+ }
+ EClass eClass = sourceEObj.eClass();
+ for(int i = 0, size = eClass.getFeatureCount(); i < size; ++i)
+ {
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i);
+ if(eStructuralFeature.isChangeable() && !eStructuralFeature.isDerived())
+ {
+ if(eStructuralFeature instanceof EAttribute) {
+ copyAttribute((EAttribute)eStructuralFeature, sourceEObj, targetEObj);
+ }
+ else {
+ EReference eReference = (EReference)eStructuralFeature;
+ if(eReference.isContainment()) {
+ copyContainment(eReference, sourceEObj, targetEObj);
+ }
+ // some containment relationships require copying the container completely
+ // e.g. if an owned template signature is referenced, we need to follow the "template"
+ // reference, which subsets the "owner" relationship.
+ // e.g. if an operation is referenced, we need to copy the whole interface
+ // Currently: only the standard owning reference is not copied recursively.
+ // else if(!eReference.isContainer()) {
+ else if(!eReference.getName().equals("owner")) {
+ // not contained, but copy reference as well
+ Object feature = sourceEObj.eGet(eStructuralFeature);
+ if(feature instanceof Element) {
+ copy((Element)feature);
+ } else if(feature instanceof EList) {
+ copyAll((EList<Object>)feature);
+ }
+ copyReference(eReference, sourceEObj, targetEObj);
+ }
+ }
+ }
+ }
+ copyProxyURI(sourceEObj, targetEObj);
+ copyID(sourceEObj, targetEObj);
+
+ if(sourceEObj instanceof Element) {
+ // TODO: handle stereotype copy in a generic way
+ StUtils.copyStereotypes(this, (Element)sourceEObj, (Element)targetEObj);
+ }
+
+ for(CopyListener listener : postCopyListeners) {
+ EObject result = listener.copyEObject(this, targetEObj);
+ if(result != targetEObj) {
+ return result;
+ }
+ }
+
+ return targetEObj;
+ }
+
+ /**
+ * Copy the containment of an element with respect to a certain reference
+ *
+ * @see org.eclipse.emf.ecore.util.EcoreUtil.Copier#copyContainment(org.eclipse.emf.ecore.EReference, org.eclipse.emf.ecore.EObject,
+ * org.eclipse.emf.ecore.EObject)
+ * Differences to referenced function in ECoreUtil
+ * - If an element in copyAll is null, it is not added
+ * - List elements are always cleared before copying, since the list elements may already have been
+ * partially filled by a previous shallow copy
+ *
+ * @param eReference
+ * a reference, such as for instance packagedElement (the
+ * caller needs to check, is this reference is a containment reference).
+ * @param eObject
+ * the source eObject
+ * @param copyEObject
+ * the copy of this eObject
+ */
+ @Override
+ protected void copyContainment(EReference eReference, EObject eObject, EObject copyEObject) {
+ if(eObject.eIsSet(eReference)) {
+ if(eReference.isMany()) {
+ @SuppressWarnings("unchecked")
+ List<EObject> source = (List<EObject>)eObject.eGet(eReference);
+ @SuppressWarnings("unchecked")
+ List<EObject> target = (List<EObject>)copyEObject.eGet(getTarget(eReference));
+ // do not clear (would remove elements that are added by copy listeners)
+ // But: better enforce exact copy? (listeners could only add in a post-copy step)
+ // target.clear();
+ if(!source.isEmpty()) {
+ for(EObject copyEObj : copyAll(source)) {
+ if(copyEObj != null) {
+ target.add(copyEObj);
+ }
+ }
+ }
+ } else {
+ EObject childEObject = (EObject)eObject.eGet(eReference);
+ copyEObject.eSet(getTarget(eReference), childEObject == null ? null : copy(childEObject));
+ }
+ }
+ }
+
+ /**
+ * Copy the containment in a "shallow" way, i.e. copy references to contained objects, if these exist already.
+ * If called for instance for a package, it will add those elements to the packagedElements list of the
+ * target package, that have already been copied.
+ *
+ * @param eReference
+ * @param eObject
+ * @param copyEObject
+ */
+ protected void shallowCopyContainment(EReference eReference, EObject eObject, EObject copyEObject) {
+ if(eObject.eIsSet(eReference)) {
+ if(eReference.isMany()) {
+ @SuppressWarnings("unchecked")
+ List<EObject> source = (List<EObject>)eObject.eGet(eReference);
+ @SuppressWarnings("unchecked")
+ List<EObject> target = (List<EObject>)copyEObject.eGet(getTarget(eReference));
+ if(source.isEmpty()) {
+ target.clear();
+ } else {
+ for(EObject sourceEObj : source) {
+ // if eObject has already been copied, add it
+ EObject copyEObj = get(sourceEObj);
+ if((copyEObj != null) && (!target.contains(copyEObj))) {
+ target.add(copyEObj);
+ }
+ }
+ }
+ } else {
+ EObject childEObject = (EObject)eObject.eGet(eReference);
+ copyEObject.eSet(getTarget(eReference), childEObject == null ? null : copy(childEObject));
+ }
+ }
+ }
+
+ /**
+ * Create a "shallow" container for an object, i.e. create (recursively) the owner without
+ * adding all other children of this owner (e.g. in case of a package, the package itself will
+ * be created, but not all elements within that package).
+ *
+ * @param sourceEObj
+ */
+ public void createShallowContainer(EObject sourceEObj) {
+ EObject owner = sourceEObj.eContainer();
+ EObject copy = null;
+ EObject lastSource = null;
+ while(owner != null) {
+ if(containsKey(owner)) {
+ // owner is in map, still need to re-copy (update) the containment
+ // references, since one of the children did not exist before
+ //
+ shallowCopy(owner);
+ return;
+ }
+ copy = shallowCopy(owner);
+ if(copy instanceof NamedElement) {
+ lastSource = owner;
+ ((NamedElement)copy).setName(((NamedElement)owner).getName());
+ }
+ owner = owner.eContainer();
+ }
+ if(copy instanceof PackageableElement) {
+ // if we copy external resources, we might reach the "top" on the source level
+ // which becomes a sub-package of the new model.
+ target.getPackagedElements().add((PackageableElement)copy);
+ // TODO: not very clean
+ if(lastSource instanceof Element) {
+ // TODO: cannot copy stereotypes only after creation, since eContainer does
+ // not exist at this moment. Need to put that intelligently into createShallowContainer
+ StUtils.copyStereotypes(this, (Element)lastSource, (Element)copy);
+ }
+ }
+ }
+
+ /**
+ * Make a shallow copy of an element, i.e. only create the element itself and not
+ * all of its contents. If a subset of the containing elements already exist in the copied
+ * model, update the containment references pointing to these. The function may be called
+ * multiple times in order to add elements to the containment references that
+ * have been copied since the previous call (i.e. it is possible to make a shallow copy
+ * of a package after a single class within it has been copied. It may be called again,
+ * once a second class within the package has been copied => the packagedElements reference
+ * of the package will be updated).
+ *
+ * @param sourceEObj
+ * @return
+ */
+ public EObject shallowCopy(EObject sourceEObj) {
+ EObject targetEObj = get(sourceEObj);
+ if(targetEObj == null) {
+ targetEObj = createCopy(sourceEObj);
+ put(sourceEObj, targetEObj);
+ setShallow(targetEObj, true);
+ }
+ else if(!isShallow(targetEObj)) {
+ // object has already been completely copied
+ // TODO: only allow shallow for packages
+ // return targetEObj;
+ }
+ if(false && sourceEObj instanceof NamedElement) {
+ String name = ((NamedElement)sourceEObj).getName();
+ if((name != null) && name.equals("BStringT")) {
+ System.err.println("testing: starting shallow copy of BStringT");
+ }
+ }
+ if((sourceEObj instanceof Element) && (targetEObj instanceof Element)) {
+ // TODO: can copy stereotypes only after creation, since eContainer does
+ // not exist at this moment. Need to put that intelligently into createShallowContainer
+ StUtils.copyStereotypes(this, (Element)sourceEObj, (Element)targetEObj);
+ }
+
+ EClass eClass = sourceEObj.eClass();
+
+ for(int i = 0, size = eClass.getFeatureCount(); i < size; ++i) {
+ EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(i);
+ if(eStructuralFeature.isChangeable() && !eStructuralFeature.isDerived()) {
+ if(eStructuralFeature instanceof EAttribute) {
+ // copyAttribute((EAttribute)eStructuralFeature, sourceEObj, targetEObj);
+ } else {
+ EReference eReference = (EReference)eStructuralFeature;
+ // avoid that during create of shallow copy, a real copy is produced
+ // (clarify why may elements are already copied)
+ if(eReference.isContainment() && (!eReference.getName().equals("ownedTemplateSignature"))) {
+
+ shallowCopyContainment(eReference, sourceEObj, targetEObj);
+ }
+ }
+ }
+ }
+
+ if(false && sourceEObj instanceof NamedElement) {
+ String name = ((NamedElement)sourceEObj).getName();
+ if((name != null) && name.equals("BStringT")) {
+ // System.err.println("testing: finished create shallow copy of BStringT");
+ }
+ }
+ return targetEObj;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends Element> T getCopy(T source) {
+ return (T)copy(source);
+ }
+
+ public EList<CopyListener> preCopyListeners;
+
+ public EList<CopyListener> postCopyListeners;
+
+ /**
+ * Called to handle the copying of a cross reference;
+ * this adds values or sets a single value as appropriate for the multiplicity
+ * while omitting any bidirectional reference that isn't in the copy map.
+ *
+ * @param eReference
+ * the reference to copy.
+ * @param eObject
+ * the object from which to copy.
+ * @param copyEObject
+ * the object to copy to.
+ */
+ @Override
+ protected void copyReference(EReference eReference, EObject eObject, EObject copyEObject)
+ {
+ if(eObject.eIsSet(eReference)) {
+ if(eReference.isMany()) {
+ @SuppressWarnings("unchecked")
+ InternalEList<EObject> source = (InternalEList<EObject>)eObject.eGet(eReference);
+ @SuppressWarnings("unchecked")
+ InternalEList<EObject> target = (InternalEList<EObject>)copyEObject.eGet(getTarget(eReference));
+ if(source.isEmpty()) {
+ target.clear();
+ }
+ else {
+ boolean isBidirectional = eReference.getEOpposite() != null;
+ int index = 0;
+ for(Iterator<EObject> k = resolveProxies ? source.iterator() : source.basicIterator(); k.hasNext();) {
+ EObject referencedEObject = k.next();
+ EObject copyReferencedEObject = get(referencedEObject);
+ if(copyReferencedEObject == null) {
+ if(useOriginalReferences && !isBidirectional) {
+ target.addUnique(index, referencedEObject);
+ ++index;
+ }
+ }
+ else {
+ if(isBidirectional) {
+ int position = target.indexOf(copyReferencedEObject);
+ if(position == -1) {
+ target.addUnique(index, copyReferencedEObject);
+ }
+ else if(index != position) {
+ target.move(index, copyReferencedEObject);
+ }
+ }
+ else if(!target.contains(copyReferencedEObject)) {
+ // TODO: does not allow multiple identical elements in the list. Problematic?
+ // Check above is necessary, since some references that are not
+ // part of the containment may have already been copied (e.g. in case of
+ // a TemplateSignature "ownedParameter" subsets "parameter", thus copying
+ // ownedParameter as part of the containment adds a template parameter)
+ target.addUnique(index, copyReferencedEObject);
+ }
+ ++index;
+ }
+ }
+ }
+ }
+ else {
+ Object referencedEObject = eObject.eGet(eReference, resolveProxies);
+ if(referencedEObject == null) {
+ copyEObject.eSet(getTarget(eReference), null);
+ }
+ else if(referencedEObject instanceof EObject) {
+ // difference to original code in EcoreUtil: we obtain a copy (which might be null or the
+ // source object) of the referenced EObject. This assures that we only set a value of a
+ // reference to something we actually want to have in the target model.
+ // Specific problematic case in original code: classifierBehavior is a reference, but assigning such
+ // a behavior will also add an owned behavior. If we assign a referencedEObject (a behavior) from the
+ // source model in the target, we will actually remove it from the source model (as it is uniquely owned).
+ EObject copyReferencedEObject = copy((EObject)referencedEObject);
+ if(copyReferencedEObject != null) {
+ copyEObject.eSet(getTarget(eReference), copyReferencedEObject);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Copy all methods from the passed source-model class.
+ * This function is useful, if the passed class only exist
+ * as a shallow copy.
+ *
+ * @param source
+ * A class within the source model
+ */
+ public void copyMethods(Class source) {
+ for(Behavior method : source.getOwnedBehaviors()) {
+ getCopy(method);
+ }
+ }
+
+ /**
+ * Copy all attributes from the source-model classifier
+ * This function is useful, if the passed class only exist
+ * as a shallow copy.
+ *
+ * @param source
+ * A classifier within the source model
+ */
+ public void copyAttributes(Classifier source) {
+ for(Property attribute : source.getAttributes()) {
+ getCopy(attribute);
+ }
+ }
+
+ /**
+ * copy all operations from the source-model classifier.
+ * This function is useful, if the passed class only exist
+ * as a shallow copy.
+ *
+ * @param source
+ * A classifier within the source model
+ */
+ public void copyOperations(Classifier source) {
+ for(Operation operation : source.getOperations()) {
+ getCopy(operation);
+ }
+ }
+
+ // TODO: the functions that follow are static and should not be part of this class
+ // as they use a different way of copying things.
+
+
+ public static void copyFeatureModifiers(Feature source, Feature target) {
+ target.setIsStatic(source.isStatic());
+ target.setIsLeaf(source.isLeaf());
+ }
+
+ public static void copyMultElemModifiers(MultiplicityElement source, MultiplicityElement target) {
+ target.setIsOrdered(source.isOrdered());
+ target.setIsUnique(source.isUnique());
+ target.setLower(source.getLower());
+ target.setUpper(source.getUpper());
+ }
+
+ /**
+ * Copy a value to a target slot
+ *
+ * @param smValue
+ * @param target
+ * @return
+ */
+ public static ValueSpecification copyValue(ValueSpecification value, Slot target) {
+ ValueSpecification newValue = target.createValue(value.getName(), value.getType(), value.eClass());
+ return copyValue(value, newValue);
+ }
+
+ public static ValueSpecification copyDefaultValue(Property source, Property target) {
+ ValueSpecification value = source.getDefaultValue();
+ if(value != null) {
+ ValueSpecification newValue = target.createDefaultValue(value.getName(), value.getType(), value.eClass());
+ return copyValue(value, newValue);
+ } else {
+ return null;
+ }
+ }
+
+ public static ValueSpecification copyValue(ValueSpecification smValue, ValueSpecification tmValue) {
+ if(smValue instanceof OpaqueExpression) {
+ OpaqueExpression oeValue = (OpaqueExpression)smValue;
+ OpaqueExpression noeValue = (OpaqueExpression)tmValue;
+ for(String language : oeValue.getLanguages()) {
+ noeValue.getLanguages().add(language);
+ }
+ for(String body : oeValue.getBodies()) {
+ noeValue.getBodies().add(body);
+ }
+ } else if(smValue instanceof LiteralString) {
+ ((LiteralString)tmValue).setValue(((LiteralString)smValue).getValue());
+ } else if(smValue instanceof LiteralInteger) {
+ ((LiteralInteger)tmValue).setValue(((LiteralInteger)smValue).getValue());
+ } else if(smValue instanceof LiteralUnlimitedNatural) {
+ ((LiteralUnlimitedNatural)tmValue).setValue(((LiteralUnlimitedNatural)smValue).getValue());
+ } else if(smValue instanceof LiteralBoolean) {
+ ((LiteralBoolean)tmValue).setValue(((LiteralBoolean)smValue).booleanValue());
+ } else if(smValue instanceof LiteralNull) {
+ }
+ return tmValue;
+ }
+
+ /**
+ * Copy the (XML) ID from the source to the destination model element. This
+ * is useful, if you want to create a diagram for (parts of) the generated
+ * target model. Otherwise, the IDs would change with each generation and
+ * references from the diagram to model elements would break (of course,
+ * they could still break, for instance if structural modifications of the
+ * source model are made).
+ *
+ * @param source
+ * source model element
+ * @param dest
+ * corresponding target model element
+ */
+ public static void copyID(EObject source, EObject target) {
+ copyID(source, target, "");
+ }
+
+ /**
+ * Copy the (XML) ID from the source to the destination model element.
+ * Prefix the ID with a string passed as parameter
+ *
+ * @param source
+ * source model element
+ * @param dest
+ * corresponding target model element
+ * @param prefix
+ * a prefix for the target model ID
+ */
+ @SuppressWarnings("deprecation")
+ public static void copyID(EObject source, EObject target, String prefix) {
+ Resource resourceSource = source.eResource();
+ Resource resourceTarget = target.eResource();
+ // TODO: use EcoreUtil getURI (InternalEObject) instead?
+
+ if((resourceSource instanceof XMLResource) && (resourceTarget instanceof XMLResource)) {
+ XMLResource xmlResSource = (XMLResource)resourceSource;
+ XMLResource xmlResTarget = (XMLResource)resourceTarget;
+ String id = prefix + xmlResSource.getID(source);
+ int counter = 0;
+ String uniqueID = id;
+ while(xmlResTarget.getIDToEObjectMap().containsKey(uniqueID)) {
+ uniqueID = id + counter;
+ counter++;
+ }
+ xmlResTarget.setID(target, uniqueID);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java
new file mode 100644
index 00000000000..fd90a1b865f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java
@@ -0,0 +1,407 @@
+/**
+ * Copyright CEA-LIST 2009
+ * available under EPL 1.0 licence
+ *
+ * This file is part of the Qompass tool chain (www.ec3m.net)
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * $Id$
+ * Initial developer - Ansgar Radermacher
+ */
+
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Profile;
+
+import FCM.Configuration;
+import FCM.DeploymentPlan;
+import FCM.util.MapUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.ModelManagement;
+import org.eclipse.papyrus.qompass.designer.core.ProjectManagement;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.EnumService;
+import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.Deploy;
+import org.eclipse.papyrus.qompass.designer.core.extensions.ILangSupport;
+import org.eclipse.papyrus.qompass.designer.core.extensions.LanguageSupport;
+import org.eclipse.papyrus.qompass.designer.core.generate.GenerateCode;
+import org.eclipse.papyrus.qompass.designer.core.generate.GenerationOptions;
+import org.eclipse.papyrus.qompass.designer.core.templates.InstantiateCppIncludeWOB;
+import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FilterComments;
+import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FilterStateMachines;
+import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FilterTemplate;
+
+/**
+ * This class contains all transformation during the instantiation of a
+ * deployment plan, i.e. 1. The reification of connectors (including the
+ * template instantiation). This transformation targets a new model 2. Adding
+ * get_p/connect_q operations to a class (transformation within same model) 3.
+ * Remove all component types 4. distribute to nodes
+ *
+ * @author ansgar
+ *
+ */
+public class InstantiateDepPlan {
+
+ /**
+ *
+ * @param cdp
+ * @param monitor
+ * a progress monitor.
+ ** @param OOmodel
+ */
+ public static void instantiate(Element cdpOrConfig, IProgressMonitor monitor, IProject project, int genOptions) {
+ boolean OOmodel = true;
+ if(project == null) {
+ String projectName = cdpOrConfig.eResource().getURI().toString();
+ project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ }
+ Model tmpModel = null;
+ ModelManagement tmpMM = null;
+
+ boolean generateCode = (genOptions & GenerationOptions.MODEL_ONLY) == 0;
+ boolean generateCACOnly = (genOptions & GenerationOptions.CAC_ONLY) != 0;
+
+ Package cdp;
+ Configuration configuration = null;
+ if(cdpOrConfig instanceof Package) {
+ cdp = (Package)cdpOrConfig;
+ MainModelTrafo.setConfiguration(null);
+ } else if(StUtils.isApplied(cdpOrConfig, Configuration.class)) {
+ configuration = StUtils.getApplication(cdpOrConfig, Configuration.class);
+ DeploymentPlan fcmCDP = configuration.getDeploymentPlan();
+ if(fcmCDP == null) {
+ final NamedElement config = (NamedElement)cdpOrConfig;
+ Display.getDefault().syncExec(new Runnable() {
+
+ public void run() {
+ Shell shell = new Shell();
+ MessageDialog.openError(shell, "Cannot generate model", "The stereotype attribute <deploymentPlan> of configuration <" + config.getName() + "> is not initialized");
+ }
+ });
+ return;
+ }
+ cdp = fcmCDP.getBase_Package();
+ MainModelTrafo.setConfiguration(configuration);
+ } else {
+ return;
+ }
+
+ try {
+ EnumService.init();
+ InstanceSpecification rootIS = DepUtils.getMainInstance(cdp);
+ // Package copyCDP = dt.getCopyCDT (selectedCDP);
+
+ EList<InstanceSpecification> nodes = AllocUtils.getAllNodes(rootIS);
+
+ // -- calc # of steps for progress monitor
+ // 1 (tmpModel creation) + 1 (reification) + 1 (tmpModel save)
+ // 5x on each deployed node (see below)
+ // problem? Connector reification is a single, relatively long step
+ int steps = 3;
+ steps += 5 * nodes.size();
+ if(generateCode) {
+ steps += nodes.size();
+ }
+ monitor.beginTask("Generating deployment model ...", steps);
+ if(monitor.isCanceled()) {
+ return;
+ }
+
+ // 1a: create a new model (and applies same profiles / imports)
+ Model existingModel = cdp.getModel();
+ TransformationContext.sourceRoot = existingModel;
+ tmpMM = createTargetModel(existingModel, monitor, existingModel.getName(), true);
+ tmpModel = tmpMM.getModel();
+ // Declare that the new model is a derivedElement (kind of hack, since the source
+ // element (attribute of derive element) remains undefined). This is used to
+ // de-activate automatic transformations that should not be applied to the generated
+ // model.
+ monitor.worked(1);
+ if(monitor.isCanceled()) {
+ return;
+ }
+
+ // LateEval.clear();
+
+ EnumService.createEnumPackage(tmpModel);
+
+ Copy tmpCopy = new Copy(existingModel, tmpModel, false);
+ tmpCopy.preCopyListeners.add(FilterTemplate.getInstance());
+ tmpCopy.preCopyListeners.add(FilterComments.getInstance());
+ tmpCopy.postCopyListeners.add(InstantiateCppIncludeWOB.getInstance());
+
+ Copy.copyID(existingModel, tmpModel);
+
+ // 1b: reify the connectors "into" the new model
+ monitor.subTask("expanding connectors and containers");
+
+ // obtain reference to CDP in target model
+ //
+ tmpCopy.createShallowContainer(rootIS);
+ Package tmCDP = (Package)tmpCopy.get(cdp);
+
+ ContainerTrafo.init();
+ InstanceSpecification newRootIS = MainModelTrafo.mainModelTrafo(tmpCopy, tmCDP, rootIS, null);
+ monitor.worked(1);
+
+ // 1c: late bindings
+ // LateEval.bindLateOperations();
+ // 3: distribute to nodes
+
+ String tmpPath = tmpMM.getPath(project, "tmpModel", tmpModel.getName() + "Tmp.uml");
+ tmpMM.saveModel(tmpPath);
+
+ if(monitor.isCanceled()) {
+ return;
+ }
+ monitor.worked(1);
+
+ if(!generateCACOnly) {
+ // not deploy on each node
+ DepCreation.initAutoValues(newRootIS);
+
+ nodes = AllocUtils.getAllNodes(newRootIS);
+ if(nodes.size() == 0) {
+ throw new TransformationException("None of the instances in the deployment plan is allocated to a node. Verify the node allocation.");
+ }
+ int nodeIndex = 0;
+ String targetLanguage = "C/C++";
+ for(InstanceSpecification node : nodes) {
+ String modelName = existingModel.getName() + "_" + node.getName();
+ if(configuration != null) {
+ modelName += "_" + configuration.getBase_Class().getName();
+ } else {
+ modelName += "_" + cdp.getName();
+ }
+ ModelManagement genMM = createTargetModel(existingModel, monitor, MapUtil.rootModelName, false);
+ Model genModel = genMM.getModel();
+
+ if(monitor.isCanceled()) {
+ return;
+ }
+ monitor.worked(1);
+ // new model has name "root" and contains a package with the
+ // existing model
+ // Package originalRoot = genModel.createNestedPackage
+ // (existingModel.getName ());
+ Copy targetCopy = new Copy(tmpModel, genModel, true);
+ targetCopy.preCopyListeners.add(FilterStateMachines.getInstance());
+ targetCopy.postCopyListeners.add(InstantiateCppIncludeWOB.getInstance());
+
+ monitor.setTaskName("deploying for node " + node.getName());
+ ILangSupport langSupport = LanguageSupport.getLangSupport(targetLanguage);
+ langSupport.resetConfigurationData();
+
+ Deploy deploy = Deploy.distributeToNode(targetCopy, langSupport, node, nodeIndex, nodes.size(), newRootIS);
+
+ if(monitor.isCanceled()) {
+ return;
+ }
+ monitor.worked(1);
+ // 2b: remove derived interfaces in root: derived interfaces that can
+ // not be placed in the same package as the port type (e.g. since read-only
+ // type from system library), are put in a top-level package called "derivedInterfaces".
+ // Due to the copying of imports, the top-level package has changed which implies that new
+ // derived interfaces are put into a different package and the derivedInterfaces package in
+ // the original root becomes obsolete. Delete this obsolete package, if existing.
+ NamedElement derivedInterfaces = Utils.getQualifiedElement(genModel, "root::derivedInterfaces");
+ if(derivedInterfaces instanceof Package) {
+ derivedInterfaces.destroy();
+ }
+
+ // 2c: add get_p/connect_q operations
+ // caveat: may modify imported classes
+ CompImplTrafos.bootloader = deploy.getBootloader();
+ CompImplTrafos.addPortOperations(targetCopy, genModel);
+
+ if(OOmodel) {
+ // 3: component -> OO transformations related to ports:
+ // complete port access operations
+ // (get<PortName>/connect<PortName> and
+ // remove the ports afterwards
+ CompTypeTrafos.completeAccessOps(genModel);
+ CompTypeTrafos.removePorts(genModel);
+ }
+
+ // 4: remove connectors from implementations, since their endpoint's roles
+ // have disappeared during step 4b (targeted ports have been
+ // deleted together with the types).
+ CompImplTrafos.deleteConnectors(genModel);
+ if(monitor.isCanceled()) {
+ return;
+ }
+ monitor.worked(1);
+
+ IProject genProject = ProjectManagement.getNamedProject(modelName);
+ if((genProject == null) || !genProject.exists()) {
+ genProject = langSupport.createProject(modelName, node);
+ }
+ else {
+ langSupport.setProject(genProject);
+ if((genOptions & GenerationOptions.REWRITE_SETTINGS) != 0) {
+ langSupport.setSettings(node);
+ }
+ }
+
+ if(generateCode) {
+ GenerateCode codeGen = new GenerateCode(genProject, langSupport, genMM, monitor);
+ codeGen.generate(node, targetLanguage, (genOptions & GenerationOptions.ONLY_CHANGED) != 0);
+ }
+
+ nodeIndex++;
+ genMM.dispose();
+ }
+ }
+ } catch (TransformationException te) {
+ // Get UI thread to show dialog
+ final TransformationException teFinal = te;
+ Display.getDefault().syncExec(new Runnable() {
+
+ public void run() {
+ Shell shell = new Shell();
+ MessageDialog.openError(shell, "A transformation exception occurred", teFinal.getMessage());
+ }
+ });
+ } catch (Exception e) {
+ final Exception eFinal = e;
+ e.printStackTrace();
+ Display.getDefault().syncExec(new Runnable() {
+
+ public void run() {
+ Shell shell = new Shell();
+ String msg = eFinal.toString() + "\n\n" +
+ "Consult error log or console for details";
+ MessageDialog.openError(shell, "An error occurred during transformation", msg);
+ }
+ });
+ }
+ if(tmpMM != null) {
+ tmpMM.dispose();
+ }
+ }
+
+
+ /**
+ * Create a new empty model from an existing model that applies the same
+ * profiles and has the same imports
+ *
+ * @param existingModel
+ * @return
+ */
+ public static ModelManagement createTargetModel(Model existingModel, IProgressMonitor monitor, String name, boolean copyImports) throws TransformationException {
+ ModelManagement mm = new ModelManagement();
+ Model newModel = mm.getModel();
+ newModel.setName(name);
+
+ try {
+ // copy profile application
+ for(Profile profile : existingModel.getAppliedProfiles()) {
+ // reload profile in resource of new model
+ monitor.subTask("apply profile " + profile.getQualifiedName());
+
+ if(profile.eResource() == null) {
+ String profileName = profile.getQualifiedName();
+ if(profileName == null) {
+ if(profile instanceof MinimalEObjectImpl.Container) {
+ URI uri = ((MinimalEObjectImpl.Container)profile).eProxyURI();
+ if(uri != null) {
+ throw new TransformationException("Check input model: the applied profile with URI \"" + uri + "\" has no name and is not contained in a resource");
+ }
+ }
+ throw new TransformationException("Check input model: one of the applied profiles has no name and is not contained in a resource");
+ }
+ throw new TransformationException("Check input model: profile \"" + profileName + "\" is not contained in a resource");
+ }
+
+ Resource profileResource = null;
+ try {
+ profileResource = ModelManagement.getResourceSet().getResource(profile.eResource().getURI(), true);
+ } catch (WrappedException e) {
+ // read 2nd time (some diagnostic errors are raised only once)
+ System.err.println("Warning: exception in profile.eResource() " + e.getMessage());
+ profileResource = ModelManagement.getResourceSet().getResource(profile.eResource().getURI(), true);
+ }
+ Profile newProfileTop = (Profile)profileResource.getContents().get(0);
+ Profile newProfile;
+ String qname = profile.getQualifiedName();
+ if((qname != null) && qname.contains("::")) {
+ // profile is a sub-profile within same resource
+ // TODO: should Copy class copy profile applications?
+ // Should be handled in shallowContainer class.
+ // if we put profile/newProfile pair into copy map, copy would find (and copy profile
+ // applications in sub-folders
+ qname = qname.substring(qname.indexOf("::") + 2);
+ newProfile = (Profile)Utils.getQualifiedElement(newProfileTop, qname);
+ }
+ else {
+ newProfile = newProfileTop;
+ }
+ newProfile.getMember("dummy"); // force profile loading
+ newModel.applyProfile(newProfile);
+ }
+ } catch (IllegalArgumentException e) {
+ throw new TransformationException("An Illegal argument exception occured during the copy of profile applications. This may indicate that the original model contains an invalid profile application\n\n" + e.toString());
+ }
+
+ // copy imports (and load resources associated - TODO: might not be necessary)
+ // While this is useful in general, it implies that code for imported models
+ // has been generated and compiled (for the right target) into a library. This may be
+ // quite tedious, unless automatically managed.
+ // Therefore we do not activate this option in a first pass of the model transformations.
+ if(copyImports) {
+ for(Package importedPackage : existingModel.getImportedPackages()) {
+ if(importedPackage == null) {
+ throw new TransformationException("An imported package is null. Verify the imported packages");
+ }
+ if(importedPackage.eResource() == null) {
+ String errorMsg = "An imported package has no eResource. Verify imported packages";
+ if(importedPackage instanceof MinimalEObjectImpl.Container) {
+ URI uri = ((MinimalEObjectImpl.Container)importedPackage).eProxyURI();
+ if(uri != null) {
+ errorMsg += " - URI: " + uri.devicePath();
+ }
+ }
+ throw new TransformationException(errorMsg);
+ }
+ newModel.createPackageImport(importedPackage);
+ monitor.subTask("import package " + importedPackage.getName());
+
+ try {
+ importedPackage.eResource().load(null);
+ newModel.getMember("dummy"); // force loading of model
+ } catch (IOException e) {
+ System.err.println(e);
+ }
+
+ }
+ }
+
+ StUtils.copyStereotypes(existingModel, newModel);
+
+ return mm;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java
new file mode 100644
index 00000000000..b32d38d88d9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java
@@ -0,0 +1,359 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Dependency;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+
+import FCM.ContainerRule;
+import FCM.InterceptionRule;
+import FCM.Template;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.AcceleoDriver;
+import org.eclipse.papyrus.qompass.designer.core.extensions.InstanceConfigurator;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateUtils;
+
+/**
+ * A light-weight container transformation. Unlike the standard component-based transformation, this trafo does add a new class.
+ * It is target for standard object-oriented architecture, enabling in particular to intercept the methods of a class (instead of
+ * adding interceptors to ports).
+ *
+ * @author ansgar
+ *
+ */
+public class LWContainerTrafo extends AbstractContainerTrafo {
+
+ public final String interceptor =
+ "[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]\n" +
+ "[template public dummy(operation : Operation)]\n" +
+ "[returnCppCall()/];\n" +
+ "[/template]\n";
+
+ public final String origOpPrefix = "orig_";
+
+ /**
+ * Constructor
+ *
+ * @param sat
+ * information about source and target model
+ * @param tmCDP
+ * deployment plan within target model
+ */
+ public LWContainerTrafo(Copy copy, Package tmCDP) {
+ this.copy = copy;
+ this.tmCDP = tmCDP;
+ configureOnly = false;
+ interceptionOpMap = new HashMap<Operation, Operation>();
+ }
+
+ /**
+ * creates the executor. Needs to be called *before* the other operations of
+ * this class.
+ *
+ * @param tmComponent
+ * the implementation of a component
+ *
+ * @throws TransformationException
+ */
+ public void createContainer(Class smClass, Class tmClass) throws TransformationException {
+
+ // for non-components: create a delegation operation for all operations that are provided by a class (excluding those derived by ports)
+ // Calls on model level use CallOperationAction, will point to existing operation, unless changed.
+ // If deployed dynamically (no static component deployment), need to change factories as well.
+ // Pragmatic: rename/add existing operations (as Accord has done), do some renaming and clever model handling (assure
+ // that code referencing classes via name automatically uses the new class.
+ // => container with name of existing class, rename existing class.
+ // possible: move operations into container, existing class gets copy (and update behaviors)
+
+ // TODO: need something simple ...
+ // requirements:
+ // - existing creation operations create container (separation activity CreateAction: needs to change.)
+ // trivially in this case case, since container is no separate entity.
+ // - => references could be exchanged during copy operation with a suitable copyFilter (=> container transfo becomes a copy filter)
+ // [in case of ports: quite difficult to handle: if port belongs to abstract components, it may be inherited by multiple components that
+ // might or might-not have a container => only some references need to be changed]
+ // => clarify, how container handles super-classes, i.e. if it inherits ports as well (from a container of the abstract component) or not (not trivial at all!)
+ // TODO: don't copy derived operations
+
+ this.smClass = smClass;
+ this.tmClass = tmClass;
+ // create a copy of all operations
+ operations = new BasicEList<Operation>(smClass.getAllOperations());
+ }
+
+ /**
+ * Only configure the instances, i.e. avoid re-creating elements of the container, but create
+ * the UML instance specifications
+ */
+ public void configureOnly() {
+ configureOnly = true;
+ }
+
+ public void createInstance() {
+ }
+
+ /**
+ * original operation => operation gets interception prefix"
+ *
+ * Objectives: existing call operations call interception operation. Existing operations include CallOperationActions as well as calls within
+ * opaque behavior
+ * This is assured by keeping same model reference for the operation, but associating a new interception behavior, existing behavior will be
+ * associated
+ * with a new renamed operation
+ *
+ * @param operation
+ */
+ protected Operation createInterceptionOperation(Operation operation) throws TransformationException {
+ // create copy of operation
+ Operation copiedOperation = EcoreUtil.copy(operation);
+ tmClass.getOwnedOperations().add(copiedOperation);
+ StUtils.copyStereotypes(operation, copiedOperation);
+
+ copiedOperation.setName(origOpPrefix + operation.getName());
+
+ // create interception code
+ // TODO: this is Java/C++ specific!
+ OpaqueBehavior b = (OpaqueBehavior)tmClass.createOwnedBehavior(operation.getName(), UMLPackage.eINSTANCE.getOpaqueBehavior());
+ String body = AcceleoDriver.bind(interceptor, copiedOperation);
+ // TODO: solution is specific to C++
+ b.getLanguages().add("C/C++");
+ b.getBodies().add(body);
+ // copy existing methods into new operation, copy method list,
+ // since adding the method to copied operation will remove these from original operation)
+ EList<Behavior> methods = new BasicEList<Behavior>(operation.getMethods());
+ for(Behavior behavior : methods) {
+ copiedOperation.getMethods().add(behavior);
+ }
+ // new behavior is associated with existing call.
+ b.setSpecification(operation);
+ return copiedOperation;
+ }
+
+ /**
+ * return the reference of the created container class
+ *
+ * @return
+ */
+ public Class getContainer() {
+ return tmClass;
+ }
+
+ /**
+ * apply a container rule, i.e. add either a container extension or an
+ * interceptor to the container
+ *
+ * @param smContainerRule
+ * An container rule
+ * @param smComponent
+ * the application component in the source model
+ * @param tmComponent
+ * the application component in the target model
+ * @param tmIS
+ * the instance specification for the application component in the target model
+ * @throws TransformationException
+ */
+ public void applyRule(ContainerRule smContainerRule, Class smComponent, Class tmComponent, InstanceSpecification tmIS)
+ throws TransformationException
+ {
+ Map<Property, EList<Property>> interceptorPartsMap = new HashMap<Property, EList<Property>>();
+
+ // dependencies of the rule become dependencies of he class. These dependencies must be instantiated
+ for(Dependency dependency : smContainerRule.getBase_Class().getClientDependencies()) {
+ //
+ for(Element target : dependency.getTargets()) {
+ // target may, or may not be in a template
+ if(target instanceof Classifier) {
+ Classifier targetCl = (Classifier)target;
+ Class extClass = expandAggregationDep((Class)targetCl, smComponent);
+ tmComponent.createDependency(extClass);
+ // if(TemplateUtils.getSignature(targetCl) != null) {
+ // }
+ }
+ }
+ }
+
+ // execute after expansion before, since the TransformationContext.templateBinding variable remains set
+ // to the same values (TODO: calculate it properly)
+ for(Operation interceptionOperation : smContainerRule.getBase_Class().getAllOperations()) {
+ expandInterceptorExtension(smContainerRule, interceptionOperation);
+ }
+
+ for(Property part : smContainerRule.getBase_Class().getAllAttributes()) {
+ Type type = part.getType();
+ if(type == null) {
+ String ruleName = (smContainerRule.getBase_Class() != null) ? smContainerRule.getBase_Class().getName() : "undefined";
+ throw new TransformationException("Cannot apply container rule <" + ruleName + ">, since the type of one of its parts is undefined. Check for unresolved proxies in imports");
+ }
+ if(part instanceof Port) {
+ Port newPort = tmClass.createOwnedPort(part.getName(), part.getType());
+ StUtils.copyStereotypes(part, newPort);
+ }
+ else if(type instanceof Class) {
+ Class extOrInterceptor = (Class)type;
+ // DepUtils.chooseImplementation((Class) type,
+ // new BasicEList<InstanceSpecification>(), false);
+
+ if(StUtils.isApplied(part, InterceptionRule.class)) {
+ // port.filter
+ //
+ }
+ else {
+ Property extensionPart =
+ expandAggregationExtension(part.getName(), extOrInterceptor, tmComponent);
+ // register relation to facilitate connector copy
+ copy.setPackageTemplate(smContainerRule.getBase_Class(), tmClass);
+ copy.put(part, extensionPart);
+ copy.setPackageTemplate(null, null);
+ }
+ }
+ else {
+ Property newAttribute = EcoreUtil.copy(part);
+ tmClass.getOwnedAttributes().add(newAttribute);
+ }
+ }
+ InstanceConfigurator.configureInstance(smContainerRule, containerIS, null, context);
+
+ // tell copy that tmcontainerImpl is associated with the smContainerRule
+ // register a package template (although it is not a template) to assure that the connectors
+ // get copied, although they are in a different resource (only the connectors are copied, not
+ // the types of the referenced parts).
+ // [main issue here: properties of container rule are not copies in the sense of identical
+ // copies]
+
+ // copy.setPackageTemplate(smContainerRule.getBase_Class(), tmClass);
+ // copy.setPackageTemplate(null, null);
+ }
+
+ /**
+ * This container expansion does not create a new composite. Instead, it
+ * adds the extension as a part to the copied application component. The
+ * application component also inherits from the type of the container
+ * extension in order to avoid copying ports.
+ */
+ Property expandAggregationExtension(String name, Class smContainerExtImpl, Class tmComponent) throws TransformationException {
+ Property extensionPart;
+ Class tmContainerExtImpl = null;
+ if(configureOnly) {
+ extensionPart = tmClass.getAttribute(name, null);
+ if((extensionPart != null) && extensionPart.getType() instanceof Class) {
+ tmContainerExtImpl = (Class)extensionPart.getType();
+ }
+ }
+ else {
+ tmContainerExtImpl = expandAggregationDep(smContainerExtImpl, tmComponent);
+
+ // add part associated with the extension to the container
+ extensionPart = tmClass.createOwnedAttribute(name, tmContainerExtImpl);
+ }
+ // problem: would not be unique in case of multiple extensions
+ // Copy.copyID(tmComponent, extensionPart, "a");
+ extensionPart.setIsComposite(true);
+ // TODO separation of container creation and instance creation
+ // configure extension
+ InstanceConfigurator.configureInstance(containerIS, extensionPart, context);
+
+ return extensionPart;
+ }
+
+ Class expandAggregationDep(Class smContainerExtImpl, Class tmComponent) throws TransformationException {
+ Class tmContainerExtImpl = null;
+
+ TemplateSignature signature = TemplateUtils.getSignature(smContainerExtImpl);
+ if(signature == null) {
+ // no template signature, just copy the container extension into the target model
+ tmContainerExtImpl = copy.getCopy(smContainerExtImpl);
+ } else {
+ // template signature found, instantiate container extension via the
+ // template binding mechanism
+ TemplateBinding binding = TemplateUtils.fixedBinding(copy.target, smContainerExtImpl, tmComponent);
+ Object[] args = new Object[]{};
+ TemplateInstantiation ti = new TemplateInstantiation(copy, binding, args);
+ tmContainerExtImpl = (Class)ti.bindNamedElement(smContainerExtImpl);
+ }
+
+ return tmContainerExtImpl;
+ }
+
+ /**
+ * Expand an interceptor definition between the container and the executor.
+ *
+ * @throws TransformationException
+ */
+ EList<Property> expandInterceptorExtension(ContainerRule smContainerRule, Operation interceptionOperationInRule)
+ throws TransformationException
+ {
+ for(Operation smOperation : operations) {
+ Operation tmOperation = copy.getCopy(smOperation);
+ String interceptionBody = "";
+ for(Behavior behavior : interceptionOperationInRule.getMethods()) {
+ if(behavior instanceof OpaqueBehavior) {
+ EList<String> bodies = ((OpaqueBehavior)behavior).getBodies();
+ if(bodies.size() > 0) {
+ // always take first
+ interceptionBody = bodies.get(0);
+ }
+ }
+ }
+ if(StUtils.isApplied(interceptionOperationInRule, Template.class)) {
+ // pass operation in source model, since this enables acceleo code to check
+ // for markers on model
+ interceptionBody = AcceleoDriver.evaluate(interceptionBody, smOperation, null);
+ }
+ if(interceptionBody.length() > 0) {
+ // only add interception operation, if the interception is not empty
+ interceptionBody = "// --- interception code from rule <" + smContainerRule.getBase_Class().getName() + "> ---\n" +
+ interceptionBody;
+ Operation interceptionOpInClass = interceptionOpMap.get(tmOperation);
+ if(interceptionOpInClass == null) {
+ createInterceptionOperation(tmOperation);
+ // existing operation becomes interception operation (by assigning it a new behavior and moving its behavior to a new operation
+ interceptionOpInClass = tmOperation;
+ interceptionOpMap.put(tmOperation, interceptionOpInClass);
+ }
+ for(Behavior behavior : interceptionOpInClass.getMethods()) {
+ if(behavior instanceof OpaqueBehavior) {
+ EList<String> bodies = ((OpaqueBehavior)behavior).getBodies();
+ if(bodies.size() > 0) {
+ // always take first
+ String newBody = interceptionBody + "\n" + bodies.get(0);
+ ((OpaqueBehavior)behavior).getBodies().set(0, newBody);
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ // protected InstanceSpecification tmClassIS;
+
+ protected EList<Operation> operations;
+
+ protected Map<Operation, Operation> interceptionOpMap;
+
+ @Override
+ public void createContainerInstance(Class tmComponent, InstanceSpecification tmIS, ContainerContext context) {
+ containerIS = tmIS;
+ this.context = context;
+ this.context.executorIS = tmIS;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java
new file mode 100644
index 00000000000..a5681b35869
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java
@@ -0,0 +1,455 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+/**
+ * This file is part of Qompass GenTools
+ * Copyright (C) 2008 CEA LIST (http://www-list.cea.fr/)
+
+ * initial developer : Christophe JOUVRAY from CEA LIST
+ * Major contributions: Ansgar Radermacher from CEA LIST
+ */
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.EncapsulatedClassifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.InstanceValue;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.ValueSpecification;
+
+import FCM.ConfigOption;
+import FCM.Configuration;
+import FCM.ContainerRule;
+import FCM.ContainerRuleKind;
+import FCM.DeploymentPlan;
+import FCM.InteractionComponent;
+import FCM.util.FCMUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool;
+import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.InstanceConfigurator;
+
+/**
+ * This class provides model information around connectors ... Many classes are
+ * currently commented, since it is not clear if we really need these
+ */
+public class MainModelTrafo {
+
+ private static Configuration m_config;
+
+ public static void setConfiguration(Configuration config) {
+ m_config = config;
+ nodeHandled = new HashMap<InstanceSpecification, Boolean>();
+ }
+
+ /**
+ * Return an instance specification that corresponds to a part. This
+ * function is useful in the connector context, since it allows to retrieve
+ * the instance specification that is reference by a connection end-point
+ * (which points to the part).
+ *
+ * @param system
+ * the instance specification for the assembly
+ * @param part
+ * the part within a class
+ * @return The instance specification for the passed part
+ */
+ public static InstanceSpecification getInstanceForPart(
+ InstanceSpecification system, Property part) {
+ for(Slot slot : system.getSlots()) {
+ if(slot.getDefiningFeature() == part) {
+ for(ValueSpecification value : slot.getValues()) {
+ // instances are accessible via ValueSpecification subclass
+ // InstanceValue
+ if(value instanceof InstanceValue) {
+ return (((InstanceValue)value).getInstance());
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Find a port that would match a connection
+ *
+ * @param connectorType
+ * a connector type, i.e. a component with ports
+ * @param the
+ * port on the other side of the connection
+ * @return the first port (of all ports owned or inherited by the type) that
+ * is compatible with the passed otherPort.
+ */
+ public static Port getConnectorPort(EncapsulatedClassifier connectorType,
+ Port otherPort, boolean isAssembly) {
+ EList<Port> ports = PortUtils.getAllPorts(connectorType);
+ // try to find match via kind
+ for(Port port : ports) {
+ if(PortUtils.matches(port, otherPort, isAssembly)) {
+ return port;
+ }
+ }
+ // no match found, try weaker condition: find 1st match for provided ...
+ boolean otherEndProvides = PortUtils.getProvided(otherPort) != null;
+ for(Port port : ports) {
+ Interface intf;
+ // if isAssembly: take "opposite" port
+ if(otherEndProvides != isAssembly) {
+ intf = PortUtils.getProvided(port);
+ } else {
+ intf = PortUtils.getRequired(port);
+ }
+ if(intf != null) {
+ return port;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * check whether a rule is active in a given configuration
+ *
+ * @param aRule
+ * @return
+ */
+ private static boolean isRuleActive(ContainerRule rule) {
+ if(m_config != null) {
+ for(ConfigOption option : m_config.getConfigOptions()) {
+ if(rule.getForConfig().contains(option)) {
+ return true;
+ }
+ }
+ }
+ // not already true via specific configuration.
+ // => Also turn on rules by default that are not for a specific configuration option
+ return (rule.getForConfig().size() == 0);
+ }
+
+ /**
+ * This method performs a model transformation that replaces an Qompass
+ * connector by a property and a set of simple connectors. The type of the
+ * newly added connector must be instantiated from its template definition
+ * in order to adapt the connector to its context. This is done in a
+ * recursive manner on a compositeInstance. The result is a (composite)
+ * class which has the added connector. The function will also trigger
+ * container expansion, if necessary. Please note that we use the naming
+ * convention to prefix elements of the source model (wrt. to the
+ * transformation) with sm and elements of the target model with tm.
+ *
+ * @param copy
+ * Copier
+ * @param tmCDP
+ * deployment plan in target model
+ * @param smIS
+ * source model instance specification
+ * @param smDF
+ * source model defining feature (null for top-level instance).
+ * @param inheritedRules
+ * container rules inherited from containing composite
+ * @return new instance specification in traget model
+ *
+ * @throws TransformationException
+ */
+ public static InstanceSpecification mainModelTrafo(Copy copy, Package tmCDP,
+ InstanceSpecification smIS, StructuralFeature smDF) throws TransformationException {
+ Class smComponent = null;
+ Classifier smCl = DepUtils.getClassifier(smIS);
+ if(smCl instanceof Class) {
+ smComponent = (Class)smCl;
+ } else {
+ // should not happen
+ return null;
+ }
+
+ String instName = smIS.getName();
+ InstanceSpecification tmIS = (InstanceSpecification)
+ tmCDP.createPackagedElement(instName, UMLPackage.eINSTANCE.getInstanceSpecification());
+
+ Class tmComponent = copy.getCopy(smComponent);
+ if(tmComponent == null) {
+ return null;
+ }
+ tmIS.getClassifiers().add(tmComponent);
+
+ // retrieve the component type object from the static profile (in order
+ // to process rules)
+ EList<ContainerRule> rules = FCMUtil.getAllContainerRules(smComponent);
+
+ // get container trafo instance, if already existing
+ AbstractContainerTrafo containerTrafo = ContainerTrafo.get(tmComponent);
+
+ // general idea: an instance of class ContainerTafo is responsible for a specific component.
+ // the method createContainerInstance must be called for each instance of the application component
+ // (caveat: don't mix-up with instance of Java classes of the development tool)
+ // TODO: since we support multiple container kinds, we need to keep their container map separate!
+ if(containerTrafo != null) {
+ // create instance, if container exists already (if a container exists, all instances are
+ // instances of the container
+ containerTrafo.configureOnly();
+ containerTrafo.createContainerInstance(tmComponent, tmIS, new ContainerContext(smDF, null));
+ }
+ else {
+ // process container rules
+ for(ContainerRule rule : rules) {
+ if(isRuleActive(rule)) {
+ // at least one active rule => create container (or get previously instantiated))
+ if(containerTrafo == null) {
+ if(rule.getKind() == ContainerRuleKind.LIGHT_WEIGHT_OO_RULE) {
+ containerTrafo = new LWContainerTrafo(copy, tmCDP);
+ }
+ else {
+ containerTrafo = new ContainerTrafo(copy, tmCDP);
+ }
+ // create container instance once for all rules (that use same container kind)
+ containerTrafo.createContainer(smComponent, tmComponent);
+ containerTrafo.createContainerInstance(tmComponent, tmIS, new ContainerContext(smDF, null));
+ }
+ else {
+ // configure only??
+ }
+ containerTrafo.applyRule(rule, smComponent, tmComponent, tmIS);
+ }
+ // TODO(?) check if rule has already been applied (don't mix-up instances/classes)
+ }
+ }
+ // copy node allocation
+ for(InstanceSpecification smNode : AllocUtils.getNodes(smIS)) {
+ InstanceSpecification tmNode = copy.getCopy(smNode);
+ AllocUtils.allocate(tmIS, tmNode);
+
+ if(!nodeHandled.containsKey(tmNode)) {
+ nodeHandled.put(tmNode, true);
+
+ // check, whether a container rule is applied on the tmNode
+ Classifier tmCS = DepUtils.getClassifier(tmNode);
+ if(tmCS instanceof Class) {
+ // ---------------------------
+ EList<ContainerRule> hwRules = FCMUtil.getAllContainerRules(tmCS);
+
+ if(hwRules.size() > 0) {
+
+ AbstractContainerTrafo abstractNodeContainerTrafo = ContainerTrafo.get((Class)tmCS);
+ if(abstractNodeContainerTrafo instanceof ContainerTrafo) {
+
+ ContainerTrafo nodeContainerTrafo = (ContainerTrafo)abstractNodeContainerTrafo;
+ // make copy of inheritedRule list (avoid that added elements remain in single rule list passed to all)
+
+ // issues
+ // - unlike SW component container, don't update references pointing towards the HW node
+ // - create additional part in system (top-level) component for the node container
+ // - container (_cc class) appears in platform component (same package as HW node)
+ // - port copying and creation of delegation connectors does not make much sense, creation of
+ // executor itself does not make much sense, additional operation "createHwContainer"
+
+ // obtain property related to node instance
+ Slot smNodeSlot = DepUtils.getParentSlot(smNode);
+ ContainerContext context = new ContainerContext(smDF, smNodeSlot != null ? smNodeSlot.getDefiningFeature() : null);
+
+ if(nodeContainerTrafo != null) {
+ // only create instance, if container exists already
+ nodeContainerTrafo.configureOnly();
+ nodeContainerTrafo.createHwContainerInstance(tmComponent, tmNode, context);
+ }
+
+ Package smCDP = smIS.getNearestPackage();
+ DeploymentPlan smFCM_CDP = StUtils.getApplication(smCDP, DeploymentPlan.class);
+
+ for(ContainerRule rule : hwRules) {
+ if(isRuleActive(rule)) {
+ if(nodeContainerTrafo == null) {
+ // at least one active rule => create container (or get previously instantiated))
+ nodeContainerTrafo = new ContainerTrafo(copy, tmCDP);
+ nodeContainerTrafo.createHwContainer((Class)tmCS);
+ nodeContainerTrafo.createHwContainerInstance(tmComponent, tmNode, context);
+ }
+ nodeContainerTrafo.applyRule(rule, smComponent, tmComponent, tmIS);
+
+ // now add attribute in system (obtain via classifier of main instance in smCDP)
+ if(smFCM_CDP != null) {
+ InstanceSpecification smMI = smFCM_CDP.getMainInstance();
+ Classifier smSystem = DepUtils.getClassifier(smMI);
+ Classifier tmSystem = copy.getCopy(smSystem);
+ InstanceSpecification tmMI = DepUtils.getInstanceForClassifier(tmCDP, tmSystem);
+ if(tmSystem instanceof Class) {
+ Property hwcPart =
+ ((Class)tmSystem).createOwnedAttribute(smNode.getName() + "Hwc", nodeContainerTrafo.getContainer());
+ // and now create a slot for the created instance.
+ DepPlanUtils.createSlot(tmCDP, tmMI, nodeContainerTrafo.getContainerIS(), hwcPart);
+ }
+ }
+
+ // now allocate instance
+ AllocUtils.allocate(nodeContainerTrafo.getContainerIS(), tmNode);
+ }
+ }
+ }
+ }
+ }
+ }
+ } // ------------------- handling of HW nodes
+
+
+ // reread instName (may have been changed by container transformation).
+ instName = tmIS.getName();
+
+ // copy parts, i.e. referenced slots
+ // loop on instances (instead of parts), since reification needs to be
+ // based on used implementations.
+ for(Slot slot : smIS.getSlots()) {
+ if(slot.getDefiningFeature() == null) {
+ throw new TransformationException(
+ "Error: no defining feature associated with \""
+ + smIS.getName() + "\"");
+ }
+ StructuralFeature smPartDF = slot.getDefiningFeature();
+ if(StUtils.isApplied(smPartDF.getType(), InteractionComponent.class)) {
+ if(smPartDF instanceof Property) {
+ Property tmPart = ConnectorReification.reifyConnector(copy, tmComponent, (Property)smPartDF, tmIS, null);
+ // update value specification (to the one just created)
+ Type type = tmPart.getType();
+ InstanceSpecification tmPartIS = EcoreUtil.copy(DepUtils.getInstance(slot));
+ tmCDP.getPackagedElements().add(tmPartIS);
+ if(type instanceof Classifier) {
+ if(tmPartIS.getClassifiers().size() > 0) {
+ tmPartIS.getClassifiers().set(0, (Classifier)type);
+ }
+ }
+ DepCreation.createSlot(tmIS, tmPartIS, tmPart);
+ }
+ }
+ else if(smPartDF.getType() instanceof Class) {
+
+ InstanceSpecification smPartIS = DepUtils.getInstance(slot);
+ if(smPartIS == null) {
+ throw new TransformationException(
+ "Error: no instance is associated with slot for feature \""
+ + smPartDF.getName() + "\"");
+ }
+
+ // recursive reification
+ // returned instance specification in target model is an instance specification for the part
+ // or for a container for that part.
+ InstanceSpecification tmPartIS = mainModelTrafo(copy, tmCDP, smPartIS, smPartDF);
+ // AllocUtils.propagateNodesViaPort (tmPartIS, null, AllocUtils.getNodes(containedInstance));
+
+ // retrieve part in the target model (it has been created during
+ // the copyClassifier operation before)
+ // TODO: avoid cast (use StructuralFeature instead)
+ Property tmPart = (Property)copy.getCopy(smPartDF);
+
+ // check whether the instance specification has been modified
+ // (due to a container transformation)
+ // modification would not be required, if
+ if((tmPartIS != null) && (DepUtils.getClassifier(tmPartIS) != tmPart.getType())) {
+ Log.log(Log.INFO_MSG, Log.TRAFO_CONNECTOR, "change type of part " + tmPart.getName() +
+ " due to container trafo");
+ tmPart.setType(DepUtils.getClassifier(tmPartIS));
+ }
+ DepCreation.createSlot(tmIS, tmPartIS, tmPart);
+ } else {
+ // assume primitive type, copy slot values
+ // don't use "copy" to avoid duplicate entries (since not all instance specification created
+ // before are correctly inserted into the map of "copy").
+ Slot tmSlot = EcoreUtil.copy(slot);
+ tmSlot.setDefiningFeature(copy.getCopy(slot.getDefiningFeature()));
+ tmIS.getSlots().add(tmSlot);
+ }
+
+ }
+
+ // loop on connectors
+ // TODO: check, if true (no instance specification exists for these - unlike a connector which is explicitly specified via a part)
+ for(Connector smConnector : smComponent.getOwnedConnectors()) {
+ if(StUtils.isConnector(smConnector)) {
+ FCM.Connector fcmConn = StUtils.getConnector(smConnector);
+ if(fcmConn != null) {
+ // found an Qompass connector, connector type is specified.
+ // => Reify the connector within the target component, i.e. create a new part and
+ // additional connections for it.
+ Property connectorPart = ConnectorReification.reifyConnector(copy, tmComponent,
+ UMLTool.varName(smConnector), smConnector, tmIS, null);
+
+ if(connectorPart == null) {
+ continue;
+ }
+
+ // remove simple connector from composite in target model
+ Connector tmConnector = copy.getCopy(smConnector);
+ tmConnector.destroy();
+
+ // Now create an instance specification for the reified connector
+ InstanceSpecification tmReifiedConnectorIS = DepCreation.createDepPlan(
+ tmCDP, (Class)connectorPart.getType(),
+ instName + "." + smConnector.getName(), false);
+
+ // copy slots from the source deployment plan that are related to connector configuration
+ InstanceSpecification smConnectorIS = DepUtils.getNamedSubInstance(smIS, smConnector.getName());
+ if(smConnectorIS != null) {
+ copy.put(smConnectorIS, tmReifiedConnectorIS);
+ for(Slot smSlot : smConnectorIS.getSlots()) {
+ copy.getCopy(smSlot);
+ }
+ /*
+ * InstanceSpecification tmConnectorIS = copy.getCopy(smConnectorIS);
+ * Iterator<Slot> tmSlotIter = tmConnectorIS.getSlots().iterator();
+ * while(tmSlotIter.hasNext()) {
+ * Slot tmSlot = tmSlotIter.next();
+ * tmReifiedConnectorIS.getSlots().add(hhtmSlot);
+ * }
+ * tmConnectorIS.getSlots().clear();
+ */
+ }
+
+ // configure connector
+ InstanceConfigurator.configureInstance(tmReifiedConnectorIS, connectorPart, null);
+
+ Slot partSlot =
+ DepCreation.createSlot(tmIS, tmReifiedConnectorIS, connectorPart);
+
+ ConnectorReification.propagateNodeAllocation(tmComponent, tmIS, partSlot);
+ }
+ }
+ }
+ /*
+ * for(Property part : smComponent.getOwnedAttributes()) {
+ * Type type = part.getType();
+ * if(type != null) {
+ * if(StUtils.isApplied(type, InteractionComponent.class)) {
+ * ConnectorReification.reifyConnector(copy, tmComponent, part, tmIS, null);
+ * }
+ * }
+ * }
+ */
+
+ // needs to be called independently
+ // propagateNodeAllocation (cdp, compositeInstance);
+
+ if(containerTrafo != null) {
+ // return containerIS
+ containerTrafo.moveSlots();
+ return containerTrafo.getContainerIS();
+ } else {
+ return tmIS;
+ }
+ }
+
+ protected static Map<InstanceSpecification, Boolean> nodeHandled;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/PrefixConstants.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/PrefixConstants.java
new file mode 100644
index 00000000000..8d996e2235d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/PrefixConstants.java
@@ -0,0 +1,36 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+public class PrefixConstants {
+
+ public static String getP_Prefix = "get_";
+
+ public static String getConnQ_Prefix = "";
+
+ public static String connectQ_Prefix = "connect_";
+
+ @Deprecated
+ public static String equivIntfPrefix = "CCM_";
+
+ public static String attributePrefix = "";
+
+ enum CIFvariant {
+ UML, CCM
+ };
+
+ void init(CIFvariant cif) {
+ if(cif == CIFvariant.UML) {
+ getP_Prefix = "get_";
+ // empty indicates that no getConnQ operation should be generated
+ getConnQ_Prefix = "";
+ connectQ_Prefix = "connect_";
+ // equivIntfPrefix = "CCM_";
+ attributePrefix = "";
+ } else if(cif == CIFvariant.CCM) {
+ getP_Prefix = "get_";
+ getConnQ_Prefix = "getconnection_";
+ connectQ_Prefix = "connect_";
+ // equivIntfPrefix = "CCM_";
+ attributePrefix = "m_";
+ }
+ }
+};
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java
new file mode 100644
index 00000000000..b108d9dd55b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationContext.java
@@ -0,0 +1,87 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.TemplateBinding;
+
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateUtils;
+
+/**
+ * Return information about the current values in the context of a transformation
+ * e.g. the current instance, the current port (container transformation), ...
+ *
+ * TODO: clean separation ContainerContext? (e.g. port should only be in the latter)
+ *
+ * @author ansgar
+ *
+ */
+public class TransformationContext {
+
+ public static InstanceSpecification instance;
+
+ public static InstanceSpecification getInstance() {
+ return instance;
+ }
+
+ public static Port port;
+
+ public static Port getPort() {
+ return port;
+ }
+
+ public static Package sourceRoot;
+
+ public static Package getSourceRoot() {
+ return sourceRoot;
+ }
+
+ public static Classifier formalParameter;
+
+ public static Classifier getFormalParameter() {
+ return formalParameter;
+ }
+
+ // the element, to which transformations are currently applied.
+ public static Classifier classifier;
+
+ public static Classifier getClassifier() {
+ return classifier;
+ }
+
+ /**
+ * Set sat and binding context for pkgTemplateParameter function
+ *
+ * @param sat
+ * @param binding
+ */
+ public static void setTemplateInstantiation(TemplateInstantiation ti) {
+ TransformationContext.ti = ti;
+ }
+
+ public static TemplateInstantiation ti;
+
+ /**
+ * Return actual (in the current binding context) from a named package template parameter
+ * Used during template instantiation: code can access actual template parameter via formal
+ *
+ * @param formal
+ * the name of the formal parameter
+ * @return the actual
+ */
+ public static String pkgTemplateParameter(String formal) {
+ Classifier actual = TemplateUtils.getActualFromBinding(ti.binding, formal);
+ if(actual != null) {
+ return actual.getQualifiedName();
+ }
+ else {
+ return "";
+ }
+ }
+
+ public static TemplateBinding getBinding() {
+ return ti.binding;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationException.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationException.java
new file mode 100644
index 00000000000..04e5cf81c14
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/TransformationException.java
@@ -0,0 +1,11 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+public class TransformationException extends Exception {
+
+ public TransformationException(String reason) {
+ super(reason);
+ }
+
+ // String m_reason;
+ final static long serialVersionUID = 1234;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/UpdateUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/UpdateUtils.java
new file mode 100644
index 00000000000..1716a2a7b36
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/UpdateUtils.java
@@ -0,0 +1,61 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.DerivedElement;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+public class UpdateUtils {
+
+ public static EList<Element> getDerivedElements(Package pkg, NamedElement source) {
+ EList<Element> list = new BasicEList<Element>();
+ Iterator<NamedElement> members = pkg.getOwnedMembers().iterator();
+ while(members.hasNext()) {
+ NamedElement member = members.next();
+ if(getSource(member) == source) {
+ list.add(member);
+ }
+ if(member instanceof Package) {
+ EList<Element> subList = getDerivedElements((Package)member, source);
+ list.addAll(subList);
+ }
+ }
+ return list;
+ }
+
+ public static Element getDerivedElement(EList<? extends Element> list, Element source) {
+ Iterator<? extends Element> elements = list.iterator();
+ while(elements.hasNext()) {
+ Element element = elements.next();
+ if(StUtils.isApplied(element, DerivedElement.class)) {
+ DerivedElement de = StUtils.getApplication(element, DerivedElement.class);
+ if((de != null) && (de.getSource() == source)) {
+ return element;
+ }
+ }
+ }
+ return null;
+ }
+
+ public static void setSource(Element derivedElement, Element source) {
+ DerivedElement de = StUtils.applyApp(derivedElement, DerivedElement.class);
+ de.setSource(source);
+ }
+
+ public static Element getSource(Element element) {
+ if(StUtils.isApplied(element, DerivedElement.class)) {
+ DerivedElement de = StUtils.getApplication(element, DerivedElement.class);
+ if(de != null) {
+ return de.getSource();
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterComments.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterComments.java
new file mode 100644
index 00000000000..03913b82e95
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterComments.java
@@ -0,0 +1,32 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations.filters;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Comment;
+
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+/**
+ * Do not copy comments
+ *
+ * @author ansgar
+ *
+ */
+public class FilterComments implements CopyListener {
+
+ public static FilterComments getInstance() {
+ if(instance == null) {
+ instance = new FilterComments();
+ }
+ return instance;
+ }
+
+ public EObject copyEObject(Copy copy, EObject sourceEObj) {
+ if(sourceEObj instanceof Comment) {
+ return null;
+ }
+ return sourceEObj;
+ }
+
+ private static FilterComments instance = null;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterSignatures.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterSignatures.java
new file mode 100644
index 00000000000..f330de5c5b1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterSignatures.java
@@ -0,0 +1,36 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations.filters;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.TemplateSignature;
+
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+
+/**
+ * Remove signatures from package template (only remove signatures within the
+ * template, not others)
+ *
+ * @author ansgar
+ *
+ */
+public class FilterSignatures implements CopyListener {
+
+ public static FilterSignatures getInstance() {
+ if(instance == null) {
+ instance = new FilterSignatures();
+ }
+ return instance;
+ }
+
+ public EObject copyEObject(Copy copy, EObject sourceEObj) {
+ if(sourceEObj instanceof TemplateSignature) {
+ if(copy.withinTemplate(sourceEObj)) {
+ return null;
+ }
+ }
+ return sourceEObj;
+ }
+
+ private static FilterSignatures instance = null;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterStateMachines.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterStateMachines.java
new file mode 100644
index 00000000000..555a00211dc
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterStateMachines.java
@@ -0,0 +1,72 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations.filters;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Region;
+import org.eclipse.uml2.uml.StateMachine;
+import org.eclipse.uml2.uml.Transition;
+
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+
+public class FilterStateMachines implements CopyListener {
+
+ public static FilterStateMachines getInstance() {
+ if(instance == null) {
+ instance = new FilterStateMachines();
+ }
+ return instance;
+ }
+
+ public EObject copyEObject(Copy copy, EObject sourceEObj) {
+ if(sourceEObj instanceof StateMachine) {
+ StateMachine sm = (StateMachine)sourceEObj;
+ Class tmClass = getTargetClass(copy, sm);
+
+ // copy opaque behavior in state machine to class level
+ for(Region region : sm.getRegions()) {
+ for(Transition transition : region.getTransitions()) {
+ Behavior effect = transition.getEffect();
+ if(effect != null) {
+ if(tmClass != null) {
+ String newName = sm.getName() + "_" + transition.getName() + "_" + effect.getName();
+ moveBehavior(newName, tmClass, effect);
+ }
+ }
+ }
+ }
+ // remove state machine
+ return null;
+ }
+ return sourceEObj;
+ }
+
+ public Class getTargetClass(Copy copy, StateMachine sm) {
+ Element smOwner = sm.getOwner();
+ EObject tmOwner = copy.getMap(smOwner).get(smOwner);
+ if(tmOwner instanceof Class) {
+ return (Class)tmOwner;
+ }
+ return null;
+ }
+
+ public void moveBehavior(String newName, Class tmClass, Behavior effect) {
+ Behavior copiedEffect = EcoreUtil.copy(effect);
+ if(tmClass.getOwnedOperation(newName, null, null) != null) {
+ // has already been added
+ return;
+ }
+ Operation operation = tmClass.createOwnedOperation(newName, null, null);
+ copiedEffect.setSpecification(operation);
+ copiedEffect.setName(newName);
+ tmClass.getOwnedBehaviors().add(copiedEffect);
+
+ }
+
+ private static FilterStateMachines instance = null;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterTemplate.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterTemplate.java
new file mode 100644
index 00000000000..d9f2d877ae8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FilterTemplate.java
@@ -0,0 +1,64 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations.filters;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+
+import FCM.Connector;
+import FCM.InteractionComponent;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+
+/**
+ * Do not copy connector related elements, i.e.
+ * 1. UML connectors with stereotype FCM.Connector
+ * The rationale behind this is that we want to avoid copying a FCM connector from the source model
+ * into the target model since the target model should only contain the refied form of the connector
+ *
+ * 2. UML classes that are stereotyped as interaction components
+ * We do not want to copy interaction components, since they typically need to be instantiated.
+ * TODO: there is no check whether we are actually in a template. An interaction component might be fixed (i.e. not
+ * depend on template instantiation) and needs to be copied in this case.
+ * (in most cases, these are not copied anyway, since these are in a different model,
+ * but we do not want to exclude the case of defining model-local connectors)
+ *
+ * @author ansgar
+ *
+ */
+public class FilterTemplate implements CopyListener {
+
+ public FilterTemplate() {
+ active = true;
+ }
+
+ public static FilterTemplate getInstance() {
+ if(instance == null) {
+ instance = new FilterTemplate();
+ }
+ return instance;
+ }
+
+ public EObject copyEObject(Copy copy, EObject sourceEObj) {
+ if(active && (sourceEObj instanceof Element)) {
+ Element sourceElem = (Element)sourceEObj;
+ if((sourceEObj instanceof Connector) && StUtils.isApplied(sourceElem, Connector.class)) {
+ return null;
+ }
+ if((sourceEObj instanceof Class) && StUtils.isApplied(sourceElem, InteractionComponent.class)) {
+ return null;
+ }
+ }
+ return sourceEObj;
+ }
+
+ public void setActive(boolean active) {
+ this.active = active;
+ }
+
+ private boolean active;
+
+ private static FilterTemplate instance = null;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FixTemplateSync.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FixTemplateSync.java
new file mode 100644
index 00000000000..81a84e0636b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/filters/FixTemplateSync.java
@@ -0,0 +1,38 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations.filters;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.uml2.uml.Class;
+
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.listeners.CopyListener;
+import org.eclipse.papyrus.qompass.designer.core.sync.CompImplSync;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+
+/**
+ * Synchronize derived realizations (after copying). If re-synchronization is not done, the
+ * relationship would point to wrong interface, if it is derived and depending on a formal parameter
+ * (e.g. derived push interface with formal parameter T would be at wrong location).
+ * => TODO: incomplete explication, re-think about location of derived interface
+ *
+ * @author ansgar
+ *
+ */
+public class FixTemplateSync implements CopyListener {
+
+ public static FixTemplateSync getInstance() {
+ if(instance == null) {
+ instance = new FixTemplateSync();
+ }
+ return instance;
+ }
+
+ public EObject copyEObject(Copy copy, EObject targetEObj) {
+ // if (copy.get(sourceEObj) isWithinTemplate)
+ if((targetEObj instanceof Class) && Utils.isCompImpl((Class)targetEObj)) {
+ CompImplSync.syncRealizations((Class)targetEObj);
+ }
+ return targetEObj;
+ }
+
+ private static FixTemplateSync instance = null;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.project
new file mode 100644
index 00000000000..3318ef546c9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.project
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.designer.cpp</name>
+ <comment></comment>
+ <projects>
+ <project>ec3m.genTools.core</project>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>fr.obeo.acceleo.gen.ui.acceleoGenBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>fr.obeo.acceleo.gen.ui.acceleoGenNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..0d0f8adfee7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.cpp;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.designer.cpp.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml,
+ org.eclipse.papyrus.qompass.designer.core;bundle-version="0.9.2",
+ org.eclipse.cdt.ui,
+ org.eclipse.papyrus.cpp.codegen;bundle-version="0.9.2",
+ org.eclipse.ui.ide,
+ org.eclipse.core.resources,
+ org.eclipse.cdt.managedbuilder.core;bundle-version="8.0.0",
+ org.eclipse.cdt.core;bundle-version="5.4.0",
+ org.eclipse.papyrus.fcm.profile;bundle-version="0.9.2",
+ org.eclipse.emf.compare.diff;bundle-version="1.2.0"
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.qompass.designer.cpp
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Localization: plugin
+
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/build.properties
new file mode 100644
index 00000000000..7b3c227b84a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties,\
+ about.html
+src.includes = about.html
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.properties
new file mode 100644
index 00000000000..48c00f652ce
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass C++ support (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.xml
new file mode 100644
index 00000000000..5c9b741df78
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.qompass.designer.core.language">
+ <client
+ class="org.eclipse.papyrus.qompass.designer.cpp.CppLanguageSupport"
+ language="C/C++">
+ </client>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Activator.java
new file mode 100644
index 00000000000..a6d735faa50
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Activator.java
@@ -0,0 +1,52 @@
+package org.eclipse.papyrus.qompass.designer.cpp;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.designer.cpp";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CCNamedProjectWizard.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CCNamedProjectWizard.java
new file mode 100644
index 00000000000..7cf7f935914
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CCNamedProjectWizard.java
@@ -0,0 +1,49 @@
+package org.eclipse.papyrus.qompass.designer.cpp;
+
+import org.eclipse.cdt.ui.wizards.CCProjectWizard;
+import org.eclipse.jface.wizard.IWizardPage;
+
+/**
+ * Variant of CCProjectWizard that allows for setting an initial
+ * project name. It creates the pages and sets the initial name.
+ * It does not use the standard CDTMainWizardPage but a variant
+ * called CDTMainWizardPageV that skips the first validation which
+ * would other trigger an error.
+ *
+ * @see org.eclipse.papyrus.qompass.designer.cpp.CDTMainWizardPageV
+ *
+ * @author ansgar
+ */
+public class CCNamedProjectWizard extends CCProjectWizard {
+
+ public CCNamedProjectWizard(String projectName) {
+ this.projectName = projectName;
+ dontAdd = false;
+ }
+
+ @Override
+ public void addPages() {
+ dontAdd = true;
+ // avoid that page is actually added, since we want to add our page below
+ super.addPages();
+ dontAdd = false;
+ String title = fMainPage.getTitle();
+ String desc = fMainPage.getDescription();
+ fMainPage = new CDTMainWizardPageV(fMainPage.getName());
+ fMainPage.setTitle(title);
+ fMainPage.setDescription(desc);
+ fMainPage.setInitialProjectName(projectName);
+ addPage(fMainPage);
+ }
+
+ @Override
+ public void addPage(IWizardPage page) {
+ if(!dontAdd) {
+ super.addPage(page);
+ }
+ }
+
+ private String projectName;
+
+ private boolean dontAdd;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CDTMainWizardPageV.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CDTMainWizardPageV.java
new file mode 100644
index 00000000000..5af2bbd451a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CDTMainWizardPageV.java
@@ -0,0 +1,33 @@
+package org.eclipse.papyrus.qompass.designer.cpp;
+
+import org.eclipse.cdt.ui.wizards.CDTMainWizardPage;
+
+/**
+ * Variant of the CDTMainWizardPage that skips the first validation. This
+ * is required in the context of setting an initial project name, since the
+ * update of the project name will trigger a validation which stops with an
+ * exception, since some elements (notable tree) are not yet initialized.
+ *
+ * Verify if future versions of CDT still require this "hack" {@link CDTMainWizardPage}
+ *
+ * @author ansgar
+ *
+ */
+public class CDTMainWizardPageV extends CDTMainWizardPage {
+
+ public CDTMainWizardPageV(String pageName) {
+ super(pageName);
+ firstValidate = true;
+ }
+
+ @Override
+ protected boolean validatePage() {
+ if(firstValidate) {
+ return true;
+ } else {
+ return super.validatePage();
+ }
+ }
+
+ private boolean firstValidate;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CppLanguageSupport.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CppLanguageSupport.java
new file mode 100644
index 00000000000..c7fa05662b3
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/CppLanguageSupport.java
@@ -0,0 +1,264 @@
+package org.eclipse.papyrus.qompass.designer.cpp;
+
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.settings.model.CIncludePathEntry;
+import org.eclipse.cdt.core.settings.model.CMacroEntry;
+import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
+import org.eclipse.cdt.core.settings.model.ICFolderDescription;
+import org.eclipse.cdt.core.settings.model.ICLanguageSetting;
+import org.eclipse.cdt.core.settings.model.ICLanguageSettingEntry;
+import org.eclipse.cdt.core.settings.model.ICProjectDescription;
+import org.eclipse.cdt.core.settings.model.ICProjectDescriptionManager;
+import org.eclipse.cdt.core.settings.model.ICSettingEntry;
+import org.eclipse.cdt.managedbuilder.core.IConfiguration;
+import org.eclipse.cdt.managedbuilder.core.IOption;
+import org.eclipse.cdt.managedbuilder.core.ITool;
+import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
+import org.eclipse.cdt.ui.wizards.CCProjectWizard;
+import org.eclipse.core.resources.ICommand;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.UniqueEList;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.papyrus.cpp.codegen.transformation.ModelElementsCreator;
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.ILangSupport;
+import org.eclipse.papyrus.qompass.designer.core.preferences.QompassPreferenceConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+
+import FCM.CppLibrary;
+import FCM.OperatingSystem;
+import FCM.Target;
+
+/**
+ * C/C++ language support
+ *
+ * @author ansgar
+ */
+public class CppLanguageSupport implements ILangSupport {
+
+ /**
+ * Caller should test before calling, whether the project exists already
+ *
+ * @param projectName
+ * @return
+ */
+ public IProject createProject(String projectName, InstanceSpecification node) throws TransformationException
+ {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+
+ IProject project = root.getProject(projectName);
+ try {
+ IWorkbench wb = PlatformUI.getWorkbench();
+
+ final CCProjectWizard wiz = new CCNamedProjectWizard(projectName);
+ // use general selection dialog instead
+
+ wiz.setWindowTitle("create project " + projectName);
+ wiz.init(wb, null);
+
+ Display.getDefault().syncExec(new Runnable() {
+
+ public void run() {
+ Shell shell = new Shell();
+ WizardDialog wizDiag = new WizardDialog(shell, wiz);
+
+ wizDiag.create();
+ wizDiag.open();
+ }
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ project = null;
+ }
+ if((project == null) || !project.exists()) {
+ throw new TransformationException("could not create CDT project ...");
+ }
+ setProject(project);
+ setSettings(node);
+ return project;
+ }
+
+ public void setProject(IProject project) {
+ m_project = project;
+ IPreferenceStore store = org.eclipse.papyrus.qompass.designer.core.Activator.getDefault().getPreferenceStore();
+ String prefix = store.getString(QompassPreferenceConstants.P_CODE_GEN_PREFIX) + "\n\n";
+ creator = new ModelElementsCreator(project, "h", "cpp", prefix);
+ }
+
+ public void setSettings(InstanceSpecification node) throws TransformationException
+ {
+ try {
+ // ((CProject) project).
+ IProjectDescription desc = m_project.getDescription();
+ for(ICommand ic : desc.getBuildSpec()) {
+ Log.log(Log.INFO_MSG, Log.CODEGEN, "CppLanguageSupport - read build spec: " + ic);
+ }
+ ICProjectDescriptionManager mngr =
+ CoreModel.getDefault().getProjectDescriptionManager();
+ ICProjectDescription cdesc = mngr.getProjectDescription(m_project, true);
+
+ // loop over all configurations
+ for(ICConfigurationDescription configDescr : cdesc.getConfigurations()) {
+
+ ICFolderDescription folderDescription =
+ configDescr.getRootFolderDescription();
+
+ ICLanguageSetting[] languageSettings = folderDescription.getLanguageSettings();
+
+ // copy string array into ICLanguageSetting array
+ ICLanguageSettingEntry[] icIncludePaths = new ICLanguageSettingEntry[includePaths.size()];
+ for(int i = 0; i < includePaths.size(); i++) {
+ icIncludePaths[i] = new CIncludePathEntry(includePaths.get(i), CIncludePathEntry.VALUE_WORKSPACE_PATH);
+ }
+
+ // define name of used operating system from model (attribute of "Target" stereotype)
+ // and add it to list of macros
+ Target target = StUtils.getApplication(node, Target.class);
+ if(target == null) {
+ // get information from node referenced by the instance
+ target = StUtils.getApplication(DepUtils.getClassifier(node), Target.class);
+ }
+ if(target != null) {
+ OperatingSystem os = target.getUsedOS();
+ if(os != null) {
+ macros.add("OS_" + os.getBase_Class().getName());
+ }
+ }
+
+ // define macros
+ EList<ICLanguageSettingEntry> icMacros =
+ new BasicEList<ICLanguageSettingEntry>();
+ for(int i = 0; i < macros.size(); i++) {
+ // TODO: need to define values for macros as well?
+ icMacros.add(new CMacroEntry(macros.get(i), "", 0));
+ }
+
+ // now set include path and preprocessor code
+ for(ICLanguageSetting lang : languageSettings) {
+ // selection better via ID? (instead of extension)
+ Log.log(Log.INFO_MSG, Log.CODEGEN, "CppLanguageSupport: lang.getID: " + lang.getId() + " lang.getLanguageID: " + lang.getLanguageId());
+ for(String ext : lang.getSourceExtensions()) {
+ if(ext.equals("cpp") || ext.equals("c")) {
+ lang.setSettingEntries(ICSettingEntry.INCLUDE_PATH, icIncludePaths);
+ ICLanguageSettingEntry icOldMacros[] =
+ lang.getSettingEntries(ICSettingEntry.MACRO);
+ for(ICLanguageSettingEntry entry : icOldMacros) {
+ icMacros.add(entry);
+ }
+ lang.setSettingEntries(ICSettingEntry.MACRO, icMacros);
+ break;
+ }
+ }
+ }
+ IConfiguration main = ManagedBuildManager.getConfigurationForDescription(configDescr);
+ // change artifact name
+ // main.setArtifactName(main.getArtifactName () + ".bin");
+
+ // add to -l (libraries)
+ ITool cfTool = main.calculateTargetTool();
+
+ // IOption libOption = cfTool.getOptionBy(IOption.TYPE_LIB);
+
+ for(IOption opt : cfTool.getOptions()) {
+ if(opt.getValueType() == IOption.LIBRARIES) {
+ main.setOption(cfTool, opt, libs.toArray(new String[0]));
+ } else if(opt.getValueType() == IOption.LIBRARY_PATHS) {
+ main.setOption(cfTool, opt, libPaths.toArray(new String[0]));
+ }
+ }
+ mngr.setProjectDescription(m_project, cdesc, true, null);
+ }
+ ManagedBuildManager.saveBuildInfo(m_project, true);
+ } catch (Exception e) {
+ throw new TransformationException(e.getMessage());
+ }
+ }
+
+ public void generateCode(IProgressMonitor monitor, PackageableElement element)
+ throws TransformationException
+ {
+ try {
+ creator.createPackageableElement(monitor, element);
+ } catch (CoreException exception) {
+ throw new TransformationException("Exception during C/C++ code generation: " + exception.toString());
+ }
+ }
+
+ public void cleanCode(IProgressMonitor monitor, PackageableElement element)
+ throws TransformationException
+ {
+ try {
+ creator.removePackageableElement(monitor, element);
+ } catch (CoreException exception) {
+ throw new TransformationException("Exception during C/C++ code generation: " + exception.toString());
+ }
+ }
+
+ public void resetConfigurationData() {
+ includePaths = new UniqueEList<String>();
+ // include project directory (all paths are relative to it => ".")
+ includePaths.add(".");
+ // include also "root" (relative path)
+ includePaths.add("root");
+
+ libs = new UniqueEList<String>();
+ libPaths = new UniqueEList<String>();
+ macros = new UniqueEList<String>();
+ }
+
+ public void gatherConfigData(Class implementation) {
+ Element owner = implementation.getOwner();
+ while(owner instanceof Package) {
+ CppLibrary cppLibrary = StUtils.getApplication(owner, CppLibrary.class);
+ if(cppLibrary != null) {
+ includePaths.addAll(cppLibrary.getIncludePaths());
+ for(String libPath : cppLibrary.getLibPaths()) {
+ if(libPath.startsWith("/")) {
+ // libPaths starting with a slash are relative to workspace location
+ // TODO: need to support absolute paths (host file system?) as well?
+ // (additional prefix. Eclipse standards?) Problem: workspace_loc is added
+ // automatically for absolute includePaths
+ libPaths.add("${workspace_loc:" + libPath + "}");
+ } else {
+ // relative to project root, otherwise
+ libPaths.add(libPath);
+ }
+ }
+ libs.addAll(cppLibrary.getLibs());
+ macros.addAll(cppLibrary.getMacros());
+ }
+ owner = owner.getOwner();
+ }
+ }
+
+ static EList<String> includePaths;
+
+ static EList<String> libs;
+
+ static EList<String> libPaths;
+
+ static EList<String> macros;
+
+ static ModelElementsCreator creator;
+
+ static IProject m_project;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/.project
new file mode 100644
index 00000000000..95ded03ad32
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.designer.doc</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..68e9693e0d2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.doc;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.designer.help.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.help;bundle-version="3.5.0",
+ org.eclipse.ui.cheatsheets;bundle-version="3.4.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
+
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/build.properties
new file mode 100644
index 00000000000..7ea784f3854
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = .,\
+ plugin.xml,\
+ help/,\
+ cheatsheet/,\
+ html/,\
+ toc.xml,\
+ about.html,\
+ plugin.properties,\
+ META-INF/
+src.includes = about.html
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/AddPorts.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/AddPorts.xml
new file mode 100644
index 00000000000..59c01e6c693
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/AddPorts.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet title="Component development">
+<intro>
+ <description>
+ Model the ports of a component
+ </description>
+</intro>
+
+
+
+<item title="Model the ports of your components" skip="true">
+ <description>
+ Select a port from the &quot;Palette&quot;, under &quot;Nodes&quot;, and create a new
+ port on a component type or implementation.<br/>
+ <br/>
+ Note: a port of a component type is implicitly included in all
+ component implementations inheriting from it<br/>
+ Note: inherited ports are not shown by default. In order to visualize these, do
+ not create a new port, but drag and drop the inherited port from the
+ model explorer on the component that inherits the port.
+ </description>
+</item>
+
+<item title="Choose a port kind" skip="true">
+ <description>
+ Your ports need to be named and a <i>port kind</i> (see below) needs to be chosen.
+ There are several ways to change a port name: either via the
+ &quot;Properties&quot; view or via a textual dialog that is shown once F2 is pressed.
+
+ An Qompass (FCM) port has an additional parameter: it is characterized by a
+ port kind. The latter defines for instance if the port
+ provides or requires an interface or consumes a data-type.<br/>
+ A port kind may require a certain variant of a type: data-flow oriented kinds
+ require a datatype, client/server port kinds require an interface as port type. The user can
+ verify the suitability of the port type by observing the derived attributes provided and
+ required interface. If both are not set, the port is wrongly typed. This rule is part of
+ a set of Qompass related constraints that can be validated at any time.
+ <br/>
+ <br/>
+ Assign the port kind attribute:
+ &quot;Properties&quot; view &gt; Profile &gt; under &quot;Port&quot; and &quot;kind&quot;.
+ Select the value of the port kind. The shown list is a collection of all PortKinds that are
+ defined in the model itself or one of the libraries it imports. For example, if the ports
+ requires an interface, the value of the port kind is &quot;BasicCalls::PortKind::UseInterface&quot;<br/>
+ Note that the stereotype &quot;Port&quot; from the profile FCM is applied automatically
+ on all the ports you add to your model.
+ </description>
+</item>
+
+<item title="Type your ports">
+ <description>
+ As for the name, this can be either be done via the &quot;Properties&quot; view or via
+ a textual dialog that is shown once F2 is pressed. But before a type can be selected, it may have to
+ be created first.
+ In our example we want to type the port with an interface which is stored in an additional
+ package called &quot;interfaces&quot;.
+
+ As a good practice, you can group interfaces that are referenced by multiple components in a
+ package called &quot;interfaces&quot;
+ &quot;model explorer&quot; view &gt; Right-click on
+ &quot;ComponentModel&quot; package &gt; New child &gt; Package &gt; Name it &quot;interfaces&quot;<br/>
+ <br/>
+ Then, under &quot;interfaces&quot; package, create a new class diagram:
+ &quot;model explorer&quot; view &gt; Right-click on
+ &quot;interfaces&quot; package &gt; New diagram &gt; Create a new Class Diagram.<br/>
+ <br/>
+ Open your class diagram and add an interface and operation in standard Papyrus way.
+ </description>
+</item>
+
+<item title="(Optional) Define an entry point" skip="true">
+ <description>
+ The component that is executed at system startup has to be clearly defined.
+ Such a component has to inherit from the component type &quot;Cstart&quot; that is defined
+ in the &quot;BasicCalls&quot; library in the package &quot;StdPorts&quot;. It has the port &quot;start&quot; with the provided interface
+ &quot;IStart&quot;, containing the operation run. This operation is called at application start.<p/>
+ The addition of Cstart to your composite diagram is performed in 5 steps:<br/>
+ 1 - Expand the imports in the &quot;Outline&quot; view &gt; Expand the library
+ &quot;BasicCalls&quot; &gt; &quot;StdPorts&quot; &gt;. Select &quot;Cstart&quot; component type.<br/>
+ 2 - Drag and drop the component type &quot;Cstart&quot; in your composite diagram.<br/>
+ 3 - (Optionally) If you want to visualize the port in the diagram, drag and drop the port
+ &quot;start&quot; on the newly added &quot;Cstart&quot; component.<br/>
+ 4 - Add a &quot;Generalization&quot; link that points from your component (type/implementation),
+ to &quot;Cstart&quot;.<br/>
+ 5 - (Optionally) If you want to visualize the port in the diagram, drag and drop the port
+ &quot;start&quot; to the application component
+ </description>
+</item>
+
+<item title="(Optional) Support life cycle events" skip="true">
+ <description>
+ A component may want to perform actions directly after instantiation and before destruction.
+ Such a component has to inherit from the component type &quot;LifeCycle&quot; that is defined
+ in the &quot;BasicCalls&quot; library in the package &quot;StdPorts&quot;. It has the port
+ &quot;lc&quot; with the provided interface &quot;ILifeCycle&quot;, containing the operations
+ activate and deactivate.
+ The addition of LifeCycle to your composite diagram is performed in 5 steps:<br/>
+ 1 - Expand the imports in the &quot;Outline&quot; view &gt; Expand the library
+ &quot;BasicCalls&quot; &gt; &quot;StdPorts&quot; &gt;. Select &quot;LifeCylce&quot; component type.<br/>
+ 2 - Drag and drop the component type &quot;LifeCycle&quot; in your composite diagram.<br/>
+ 3 - (Optionally) If you want to visualize the port in the diagram, drag and drop the port
+ &quot;lc&quot; on the newly added &quot;LifeCylce&quot; component.<br/>
+ 4 - Add a &quot;Generalization&quot; link that points from your component (type/implementation),
+ to &quot;Cstart&quot;.<br/>
+ 5 - (Optionally) If you want to visualize the port in the diagram, drag and drop the port
+ &quot;lc&quot; to the application component
+ </description>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/CodeCompilation.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/CodeCompilation.xml
new file mode 100644
index 00000000000..a8de088de93
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/CodeCompilation.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet
+ title="Title">
+ <intro>
+ <description>
+ Finally, compile the generated code on each node.
+ </description>
+ </intro>
+
+ <item
+ title="Code Compilation" skip="true">
+ <description>
+
+ </description>
+ <subitem
+ label="It is proposed to use the eclipse internal built mechanisms, e.g. CDT builder in case of C/C++.
+ &#x0A;&#x0A; Libraries and include pathes required by the runtime mechanisms of used connector libraries are automatically taken into account."
+ skip="true">
+ </subitem>
+ </item>
+
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/CodeGeneration.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/CodeGeneration.xml
new file mode 100644
index 00000000000..3de326cbd43
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/CodeGeneration.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet title="Code generation">
+<intro>
+ <description>
+ Once the allocation is specified, the Qompass plug-in applies a sequence of model transformations to generate the code required on each node.
+ </description>
+</intro>
+<item title="The sequence of actions performed automatically by Qompass" skip="true">
+ <description>
+ Select a deployment plan. Right click and choose "Qompass: generate deployment models and code from plan". Choose among
+ the available options: (1) only generate a target model and not code, (2) re-create compilations settings and (3) only
+ generate code for types that have changed. The first option is useful for testing purposes or if the intermediate
+ models produced by Qompass are inputs for other models.
+ The second option is useful, if additional container or connector elements require additional libraries that would not
+ found otherwise. But it overrides user settings.
+ The last option aims to reduce the time for generating an executable: for each elements that is re-generated, the associated
+ file need to be re-compiled.
+ The Qompass plug-in applies a sequence of model transformations that<br/>
+ (1) add and adapt connectors and containers as required by the application,
+ (2) transform the component model into an object-oriented model, i.e. replace ports with attributes and suitable access operations,
+ (3) create boot-code that instantiates the components and
+ (4) calculate the sub-set of the resulting model that is required on each node.
+ Qompass produces a new plugin for each node of the platform model. It contains a suitable project
+ definition (Eclipse CDT) in the sense that the build settings (macros, include and library paths)
+ should be configured for the application needs. It also contains a folder "model" along with
+ the generated model (called "root.uml") and applies the standard UML model-to-code generators
+ (currently C++) to produce the code required on each node and "
+ </description>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentDev.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentDev.xml
new file mode 100644
index 00000000000..242e723f337
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentDev.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet title="Component development">
+<intro>
+ <description>
+ <b>In this step, you model a component within a composite diagram.</b>
+ </description>
+</intro>
+
+<item title="Step1: Create a new component" skip="true">
+ <description>
+ The first decision is whether you want to define a component type or a component implementation.
+ A component type is useful, if you anticipate that more than one implementation are required sooner or later.
+ The decision is comparable to the decision whether interfaces should be used in an object-oriented
+ approach: it is more flexible, but requires an additional definition (beside this reflection, there is nothing to do
+ in this step).
+ </description>
+</item>
+
+<item title="(Optional) Create a package for your component" skip="true">
+ <description>
+ As a good practice, we recommend to create a package for each component which will group all
+ component-related elements e.g. type, implementation(s) and associated diagrams.<br/>
+ ModelExplorer > Right-click on your "ComponentModel" package > Add child > Package.
+ Name the created package according to your application needs. A convention (not enforced) used in Qompass is
+ to use the same name for the package and component type, add the post-fix "Impl" in case of a
+ component implementation.
+ <subitem label=
+ "Show model explorer: Window > Show View > Papyrus > Model Explorer (or select Papyrus perspective)" skip="true">
+ <command required="false"
+ serialization="org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.papyrus.modelexplorer.modelexplorer)"/>
+ </subitem>
+ </description>
+</item>
+
+<item title="Create a composite diagram" skip="true">
+ <description>
+ Select the package created in the previous step (or the top-level package). Create a composite diagram and open it. Right-click on your package in the
+ model explorer > new diagram > Create a new Composite Diagram.
+ </description>
+</item>
+
+<item title="Create a new component (type or implementation)" skip="true">
+ <description>
+ Create a class. Make it abstract (via the properties view) if it is a component type.
+ Choose a name which suits your application needs. If you created a type, you
+ might also want to add an implementation. Convention (not compulsory): use the same name as for the type
+ and add the postfix "Impl". The link between component type and implementation is manifested by means
+ of generalization relationship. Use the standard Papyrus mechanisms to create this relationship.
+ (The realization of an implementation is described in more detail in step 4).
+ </description>
+</item>
+
+<item title="Select container properties">
+ <description>
+ A component is optionally enclosed by a so-called container which can perform additional processing.
+ So called container extensions either intercept incoming port request or perform additional processing.
+ For further information, consult the Qompass online help. From a user perspective, the choice of a
+ certain container option is controlled by the application of an ordered set of <i>container rules</i>.
+ which select the extension or interceptor to use and optionally restrict the use of the rule to
+ a specific configuration (see deployment)<br></br>
+
+ Qompass provides a specific dialog to selected a container extension. This can be found in the context
+ menu of a component.
+ </description>
+</item>
+
+<item title="Create the system component">
+ <description>
+ A specific component is typically called "System". It is the main component that will be instantiated
+ later on. This component is the root of the composition hierarchy, your application components are
+ parts within it - it is a composite or assembly implementation and further information is therefore
+ available in the next section. It must not have any ports.
+ </description>
+</item>
+
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentImplementation.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentImplementation.xml
new file mode 100644
index 00000000000..335fb27986a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentImplementation.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet
+ title="Component implementation">
+<intro>
+ <description>
+ A component implementation has to realize the operations of interfaces that are provided by
+ its ports. For each port, there are two options: either the component implements the interface
+ itself, or it delegates the port to a part which has to implement the interface.
+ If a component does not have any parts, we call it primitive (or monolithic).
+ </description>
+</intro>
+
+<item title="Synchronize derived elements">
+ <description>
+ If order to implement the operations of a provided interface, these operations have to be
+ added to the component first. Since it would be tedious to copy an operation signature manually
+ and keep it synchronized, Qompass offers an operation "Synchronize derived elements" in the
+ context menu of a component. It will automatically add an "interface realization"
+ relationship and the operations of the provided interfaces - as long as there is no delegation
+ to an internal component. These relationships carry the FCM stereotype "DerivedElement"
+ in order to indicate that these have been added automatically.
+ </description>
+</item>
+
+<item title="Implement an operation of a provided port">
+ <description>
+ The implementation could use either the UML action language or a programming language specific
+ implementation in form of an opaque behavior definition (not yet supported). Here, we will cover
+ the case of C++<br/>
+ Activate the C/C++ view (Views > Papyrus > C/C++). Then, select the operation in the
+ model explorer or diagram. Enter your code. Note that you can call operations of required ports
+ by using the port name as a property, i.e. in case of C++ use "portName" -> "operation name"
+ </description>
+ <subitem label="If the &quot;Properties&quot; view is not shown: Window > Show View > Select Properties (or click on perform within this sheet)"
+ skip="true">
+ <command required="false"
+ serialization="org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.ui.views.PropertySheet)"/>
+ </subitem>
+ <subitem label="If the &quot;C/C++&quot; view is not shown: Window > Show View > Other > Select Papyrus C/C++ (or click on perform within this sheet)"
+ skip="true">
+ <command required="false"
+ serialization="org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=com.cea.papyrus.views.cpp)"/>
+ </subitem>
+</item>
+
+<item title="Create inner parts">
+ <description>
+ An component implementation may have an internal structure, i.e. if may contain other components
+ via composition. Please note that the containment does not mean that a new component is defined
+ in an existing one, but that the composite component contains an attribute typed with another
+ component. If this attribute has the "composition" aggregation style, the creation of
+ an instance of the composite component implies creating an instance of the contained component.<br/>
+ <br/>
+ The "System" component is a specific composite implementation of your system.
+ It does not have any implementation of its own but is a kind of aggregation container of your
+ application components and defines how these are connected (see next step).
+ </description>
+ <subitem
+ label="You can drag and drop an existing component type into the composite. A property will
+ automatically be created for you">
+ </subitem>
+ <subitem
+ label="If the component does not exist yet, you can create a new property within the composite
+ and type it later with the appropriate component">
+ </subitem>
+</item>
+
+<item title="Connect inner parts (assembly)">
+ <description>
+ Once the inner parts have been added, the may be connected. Connectors may either delegate
+ from the composite towards an inner part or connect (assemble) two (or more) internal parts.
+ A connector may connect either the ports of internal parts or directly an internal part. For the
+ moment, Qompass supports only the first option. It may be required to drag and drop ports first from
+ the model explorer to a part (whose type owns the port).<br/>
+ <br/>
+ A major concept in Qompass is that of a connector. Instead of simply being a "line" between
+ parts, a connector may be realized a specific interaction component. Which interaction component
+ is used, is defined by an FCM stereotype attribute owned by the connector. The Qompass palette allows
+ you to add a connector with the appropriate FCM stereotype directly to your component.<br/>
+ <br/>
+ In addition, Qompass provides a specific dialog for the selection of an interaction component.
+ (open the context menu, once a connector is selected).
+ </description>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentModel.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentModel.xml
new file mode 100644
index 00000000000..7af6183b976
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/ComponentModel.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet
+ title="Creation of component model">
+ <intro>
+ <description>
+ A component model consists of a set of component definitions. Each component may be either a
+ primitive (or monolithic) component or a composite component. Whereas the latter contains one
+ or more <i>parts</i> typed with other components, the former does not contain other components.
+ Typically, a composite component delegates services provided by some of its ports to inner
+ components while a primitive component implements the services itself.
+ There are different strategies, in which order components are implemented, e.g. starting
+ with the composite components and then defining the sub-components (top-down) or vice-versa
+ (bottom-up). Both strategies could be mixed.
+ </description>
+ </intro>
+ <item
+ title="(Top-down) Step1: Create your system">
+ <description>
+ <b>In this step, you start by modeling your system in a composite diagram.</b>
+ <br> </br>Start modeling the system type and implementation.
+ <br> </br>A component defines a type when it has more that one implementation,
+ or when the evolution of the component envisions to group a set of implementations using a type definition.
+ Optionally, a component may be abstract, i.e. does not provide an implementation.
+ <br> </br>As a good practice, we recommend to define component type only when necessary.
+ <br> </br>In the following, we will define a component type for the components that we will create.
+ </description>
+ <subitem
+ label="Open the &quot;Model explorer&quot; view: Window &gt; Show View &gt; Papyrus &gt; Model Explorer (alternative: select Papyrus perspective): The explorer shows a tree-view of your model." skip="true">
+ <command
+ required="false"
+ serialization="org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.papyrus.modelexplorer.modelexplorer)"/>
+ </subitem>
+ <subitem
+ label="Expand your model, you will find under it three packages from the template: &quot;ComponentModel&quot;, &quot;Platform&quot;, and &quot;DeploymentPlans&quot;. To organize you models, each package will include the appropriate diagrams."
+ skip="true">
+ </subitem>
+ <subitem
+ label="As a good practice, we recommend to create a package for each component (monolithic or composite) under the package &quot;ComponentModel&quot;. The package will group all the component-related elements (i.e., type, implementation(s), port(s)). Nevertheless, you can model all your components in the same diagram. This may only affect the clarity of your model. Under &quot;ComponentModel&quot;, you create a package related to each monolithic component your system will include, as well as a package for modeling your system: Outline &gt; Right-click on your &quot;ComponentModel&quot; package &gt; Add an element &gt; Package. Select your package and name it according to your application needs from the &quot;Properties&quot; view. In the following, we will use the name &quot;System&quot; to denote the component that models your system."
+ skip="true">
+ </subitem>
+ <subitem
+ label="If the &quot;Properties&quot; view is not shown: Window &gt; Show Perspective &gt; Select Properties"
+ skip="true">
+ <command
+ required="false"
+ serialization="org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.ui.views.PropertySheet)"/>
+ </subitem>
+ <subitem
+ label="In your package &quot;System&quot;, create a composite diagram and open it. Outline &gt; Right-click on your package &gt; Add a diagram &gt; Create a new Composite Diagram. Double click on your newly created composite diagram to open it." skip="true">
+ </subitem>
+ <subitem
+ label="From the &quot;Palette&quot; view, under &quot;Qompass&quot;, drag-and-drop a new component type (ComponentType), and name it according to your application needs. Herein, we will call it &quot;System&quot;. In addition, drag and drop a new component implementation (ComponentImpl), and name it. In this tutorial, we will call it &quot;System_Impl&quot;."
+ skip="true" >
+ </subitem>
+ <subitem
+ label="The component implementation(s) inherit(s) from the component type. The inheritance relation is useful in order to remove redundancy when generating the code from the model. Drag and drop a &quot;Generalization&quot; link from the &quot;Palette&quot;, under &quot;UML Links&quot;.
+ The link has as origin the component implementation (i.e., &quot;System_Impl&quot;) and, the component type (i.e. &quot;System&quot;) as destination." skip="true">
+ </subitem>
+ <subitem
+ label="In your &quot;System_Impl&quot;, add as many properties as parts you require in your system. The properties represent the instances of the primitive components you will create in the next step. To this aim: From the &quot;Palette&quot; view, drag-and-drop &quot;Property&quot; provided under &quot;UML Elements&quot;. Name each property: Select the property in your composite diagram then, from the &quot;Properties&quot; view, under &quot;General&quot;, you can give a name to your part (property). Later on, you will select the type of your part. Furthermore, in the &quot;Properties&quot; view, under &quot;General&quot;, you can select the &quot;aggregation kind&quot;: &quot;Aggregation&quot; when the part is shared by more than one subcomponent, or &quot;Composition&quot; when the property is not shared. &quot;Composition&quot; is the most commonly used &quot;aggregation kind&quot;."
+ >
+ <command
+ required="false"
+ serialization="org.eclipse.team.svn.ui.command.EditPropertiesCommand"/>
+ </subitem>
+
+ </item>
+ <item
+ title="Enter component modeling">
+ <description>
+ <b>In this step, you model the monolithic components that your system includes (i.e., the internal parts of your system). </b>
+ <br> </br>Start by modeling the components type, implementation, and their ports in a &quot;component diagram&quot; then model their interfaces in &quot;class diagrams&quot;.
+ </description>
+ </item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/DeploymentPlan.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/DeploymentPlan.xml
new file mode 100644
index 00000000000..726d08968d4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/DeploymentPlan.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet title="Create deployment plan">
+<intro>
+ <description>
+ Generate the instance specification of the system and its internal parts, specify values for configuration attributes and finally
+ allocate to nodes
+ </description>
+</intro>
+
+<item title="Create initial deployment plan" skip="false">
+ <description>
+ Up to now, we have modeled components and their composition, but we have not yet instantiated these.
+ The convention in Qompass is that a single component, typically called System, is the primary
+ instance. The instantiation of this component implies an instantiation of its parts which
+ in turn will instantiate their parts (if composites). This instantiation process is
+ automated by Qompass. The generated instances are part of a package which we call deployment plan
+ in the sequence.
+ <br/>
+ The automatic generation of the initial deployment plan is performed as follows:
+ Right click on your "system" component > Qompass: Instantiate system (create deployment plan).
+ As a result, a "newDeploymentPlan" package is created within "DeploymentPlans". Note that a
+ deployment plan is a stereotyped UML package serving as a container for the instance
+ specifications. A stereotype attribute points to the main instance.
+ </description>
+</item>
+
+<item title="Configure instance specifications" skip="true">
+ <description>
+ The initial deployment plan contains information about the instances within their system (along with their allocation
+ to a node, see next step). Each instance may have a set of attributes that are subject to configuration, e.g. a FIFO
+ component might have an attribute that denotes its size or the application of a specific policy. By default, all
+ attributes that are part of a component type, are considered as configuration attributes, attributes of implementations
+ need to be marked explicitly by the stereotype FCM::ConfigProperty. UML supports the specification of values via slots.
+ This is done in Qompass as well, a custom dialog facilitates this configuration:
+ Right click on your "system" component > Qompass: Configure instantiate properties.
+ The dialog displays a set of instance specifications that are associated with the property. The
+ previous operation should have created these instances (there should be one instance per deployment plan).
+ Once an instance is selected, the user can select a configuration attribute and provide a value for it. If the attribute
+ has an attached comment, it is assumed to be a description of the configuration attribute and displayed in the dialog
+ (this is the case for elements of the Qompass library).
+ </description>
+</item>
+
+<item title="Allocate instance specifications to nodes" skip="true">
+ <description>
+ In order to deploy the system, the instances created before need to be allocated to a
+ node. The allocation relationship is transitive in two directions: if a composite component
+ instance is allocated to a node, all sub-instances (= instances of contained parts) are
+ implicitly also allocated on this node. Vice versa, a composite needs to exist on all
+ instances where its sub-instances are allocated.
+ <br></br>
+ Qompass supports the allocation by means of a specific dialog. It is available in the
+ context menu of a deployment plan.
+ </description>
+</item>
+
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/Main.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/Main.xml
new file mode 100644
index 00000000000..7196d1103ef
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/Main.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<compositeCheatsheet name="Create an Qompass-supported Model">
+<taskGroup kind="sequence" name="Create your model" skip="false">
+<intro>
+ <b>Introduction</b>
+ This guide will walk you though the process of creating an &quot;Qompass-supported&quot; model and generate the code related to your model.
+ You will create an empty model and build it gradually to finally generate the related code.
+
+ If you need help at any step, click the (?) to the right. Let&apos;s get started!
+</intro>
+
+<taskGroup kind="choice" name="Step1: Create a new model" skip="true">
+ <intro>
+ Either create a new Qompass model or start with a working example
+ </intro>
+
+ <task kind="cheatsheet" name="Step1a: Create a new model" skip="true">
+ <param name="path" value="NewModel.xml"></param>
+ </task>
+
+ <task kind="cheatsheet" name="Step1b: Start with a working example" skip="true">
+ <param name="path" value="OpenExample.xml"/>
+ </task>
+</taskGroup>
+
+<task kind="cheatsheet" name="Step2: Define components" skip="true">
+ <param name="path" value="ComponentDev.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step3: Define component ports" skip="true">
+ <param name="path" value="AddPorts.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step4: Develop component implementations" skip="true">
+ <param name="path" value="ComponentImplementation.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step5: Model the platform" skip="true">
+ <onCompletion>
+ <b>Conclusion</b>
+ </onCompletion>
+ <param name="path" value="PlatformModel.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step6: Validate the model" skip="false">
+ <param name="path" value="Validation.xml"/>
+</task>
+
+
+<task kind="cheatsheet" name="Step7: Generate the deployment plan of the system" skip="true">
+ <param name="path" value="DeploymentPlan.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step8: Code generation" skip="true">
+ <onCompletion>
+ <b>Conclusion</b>
+ </onCompletion>
+ <param name="path" value="CodeGeneration.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step9: Code compilation" skip="true">
+ <onCompletion>
+ <b>Conclusion</b>
+ </onCompletion>
+ <param name="path" value="CodeCompilation.xml"/>
+</task>
+
+</taskGroup>
+</compositeCheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteAddComponents.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteAddComponents.xml
new file mode 100644
index 00000000000..f7ec40e7aa4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteAddComponents.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<cheatsheet title="Add GCM components to your model">
+<intro>
+ <description>
+ In this step, you model the application components as forseen by MARTE GCM &amp; HLAM.
+ </description>
+</intro>
+
+<item title="Create a new composite diagram">
+ <description>
+ Use the model explorer to create a new composite diagram within the "ComponentModel" package
+ </description>
+</item>
+<item title="Select a MARTE component in the palette and add it to your model" dialog="true" skip="true">
+ <description>
+ Select an element from the MARTE/HLAM palette, i.e. a RtUnit or a PpUnit. These are available,
+ if the MARTE profile is applied (which should be the case, if you have chosen the Qompass for MARTE template
+ during model creation).
+ Now create the GCM component in the diagram. Mapping rules in Qompass will automatically add the FCM implementation
+ stereotype and set its container rule attribute appropriately to support the two component variants.<br/>
+ Verify stereotype application/attribute values in the properties/profile view. Alternatively, right click on
+ the created component and call the "Qompass show/choose container rules" dialog.
+ </description>
+</item>
+<item href="/org.eclipse.papyrus.qompass.designer.doc/html/reference/marte.html" title="More information about the Qompass MARTE integration" skip="true">
+ <description>
+ Click on the "?" on right to open the online html help
+ </description>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteAddPorts.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteAddPorts.xml
new file mode 100644
index 00000000000..38233bc7312
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteAddPorts.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<cheatsheet title="Creating a new model">
+<intro>
+ <description>
+ In this step you will add ports to your MARTE/GCM components
+ </description>
+</intro>
+<item title="Add ports">
+ <description>
+ Use the model explorer to create a new composite diagram within the "components" package
+ Use the standard MARTE mechanism to add ports, i.e. client/server or flow ports - the associated
+ FCM stereotypes will be set automatically.
+ </description>
+</item>
+<item href="/org.eclipse.papyrus.qompass.designer.doc/html/reference/marte.html#ports" title="More information about the Qompass integration of MARTE ports" skip="true">
+ <description>
+ Click on "?" on the right to open the online html help
+ </description>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteMain.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteMain.xml
new file mode 100644
index 00000000000..e32ef8326fe
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteMain.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<compositeCheatsheet name="Create an Qompass-supported Model with MARTE">
+<taskGroup kind="sequence" name="Create your model" skip="false">
+<intro>
+ <b>Introduction</b>
+ This guide will walk you though the process of creating a MARTE model with &quot;Qompass-support&quot;
+ and generate the code related to your model.
+ You will create an empty model and build it gradually to finally generate the related code.
+ If you need help at any step, click the (?) to the right. Let&apos;s get started!
+</intro>
+
+<taskGroup kind="choice" name="Step1: Create a new model" skip="true">
+ <intro>
+ Either create a new Qompass model or start with a working example
+ </intro>
+
+ <task kind="cheatsheet" name="Step1a: Create a new model" skip="true">
+ <param name="path" value="MarteNewModel.xml"/>
+ </task>
+
+ <task kind="cheatsheet" name="Step1b: Start with a working example" skip="true">
+ <param name="path" value="OpenExample.xml"/>
+ </task>
+</taskGroup>
+
+<task kind="cheatsheet" name="Step2: Model the application components" skip="true">
+ <param name="path" value="MarteAddComponents.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step3: Add ports" skip="true">
+ <param name="path" value="MarteAddPorts.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step3b: Review standard FCM port definition (Start and LifeCycle)" skip="true">
+ <param name="path" value="AddPorts.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step4: Component implementation (not MARTE specific)" skip="true">
+ <onCompletion>
+ <b>Conclusion</b>
+ You have now created a MARTE component which has at the same time FCM annotations. You can now
+ proceed with implementation and deployment as for a standard FCM component
+ </onCompletion>
+ <param name="path" value="ComponentImplementation.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step5: continue with platform modeling" skip="true">
+ <onCompletion>
+ <b>Conclusion</b><br/>
+ You have now created a MARTE component which has at the same time FCM annotations. You can now
+ proceed with implementation and deployment as for a standard FCM component
+ </onCompletion>
+ <param name="path" value="PlatformModel.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step6: Validate the model" skip="false">
+ <param name="path" value="Validation.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step7: Generate the deployment plan of the system" skip="true">
+ <param name="path" value="DeploymentPlan.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step8: Code generation" skip="true">
+ <onCompletion>
+ <b>Conclusion</b><br/>
+ You have now a project, a model and source code for each target.
+ </onCompletion>
+ <param name="path" value="CodeGeneration.xml"/>
+</task>
+
+<task kind="cheatsheet" name="Step9: Code compilation" skip="true">
+ <onCompletion>
+ <b>Conclusion</b><br/>
+ You have now a binary per target which is ready for deployment. The actual transfer
+ to the target is out of Qompass's scope.
+ </onCompletion>
+ <param name="path" value="CodeCompilation.xml"/>
+</task>
+</taskGroup>
+</compositeCheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteNewModel.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteNewModel.xml
new file mode 100644
index 00000000000..dbbe1802e86
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/MarteNewModel.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<cheatsheet title="Creating a new model">
+<intro>
+ <description>
+ In this step you will create a new Qompass Model for MARTE, i.e. a MODEL that applied MARTE GCM as well as the
+ FCM profile.
+ </description>
+</intro>
+<item title="Papyrus Perspective" dialog="false" skip="true">
+ <description> Start setting up your environment&apos;s perspective.</description>
+ <subitem label="Open Papyrus Perspective." skip="true">
+ <command required="false"
+ serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.papyrus.perspective)"/>
+ </subitem>
+</item>
+
+<item title="Create a new project" dialog="true" skip="true">
+ <description>
+ </description>
+ <subitem
+ label="Start creating the project that will host your model or create a new model within an existing project.
+ &#x0A;File &gt; New &gt; Project &gt; Papyrus project &gt; Enter your project name, then select UML as diagram language. On the next page, choose the Qompass template for MARTE."
+ skip="true">
+ <command required="false"
+ serialization="org.eclipse.ui.newWizard(newWizardId=org.eclipse.ui.wizards.new.project)"/>
+ </subitem>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/NewModel.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/NewModel.xml
new file mode 100644
index 00000000000..68c3c72b990
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/NewModel.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<cheatsheet title="Creating a new model">
+<intro>
+ <description>In this step you will create a new Qompass Model which applies the profile and optionally MARTE GCM</description>
+</intro>
+<item title="Open the Papyrus perspective" dialog="false" skip="true">
+ <description> Start setting up your environment&apos;s perspective. </description>
+ <command required="false"
+ serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.papyrus.infra.core.perspective)"/>
+</item>
+<item title="Create a new project" dialog="true" skip="true">
+ <description>
+ Start creating the project that will host your model or create a new model within an existing project.
+ &#x0A;File &gt; New &gt; Project &gt; Papyrus project &gt; Enter your project name, then select UML as diagram language. On the next page, choose one of the Qompass templates
+ (currently two, one including MARTE and one without)
+ </description>
+ <command required="false"
+ serialization="org.eclipse.ui.newWizard(newWizardId=org.eclipse.papyrus.uml.diagram.wizards.1createproject)"/>
+</item>
+<item title="Create additional Papyrus model within the project" dialog="true" skip="true">
+ <description>
+ If you need to create additional models within a project, you can do this at any time using the
+ Papyrus model wizard. In the context of this tutorial, you can simply skip this step.
+ Enter your model name, then select UML as diagram language. On the next page, choose one of the Qompass templates
+ (currently two, one including MARTE and one without)
+ </description>
+ <command required="true"
+ serialization="org.eclipse.ui.newWizard(newWizardId=org.eclipse.papyrus.uml.diagram.wizards.createmodel)"/>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/OpenExample.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/OpenExample.xml
new file mode 100644
index 00000000000..e6e0d5537a6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/OpenExample.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<cheatsheet title="Create a new model from an example">
+<intro>
+ <description>In this step you will create a new Qompass model from an example</description>
+</intro>
+<item title="Open Papyrus Perspective" dialog="false" skip="true">
+ <description> Start setting up your environment&apos;s perspective. </description>
+ <command required="false"
+ serialization="org.eclipse.ui.perspectives.showPerspective(org.eclipse.ui.perspectives.showPerspective.perspectiveId=org.eclipse.papyrus.perspective)"/>
+</item>
+<item title="Create a new project" dialog="true" skip="true">
+ <description>
+ Creating the project that will host your model. You can skip this step, if you want to create the model
+ in an existing project.
+ File > New > Project. Enter your project name.
+ </description>
+ <command required="false"
+ serialization="org.eclipse.ui.newWizard(newWizardId=org.eclipse.ui.wizards.new.project)"/>
+</item>
+<item title="Create a new project" dialog="true" skip="true">
+ <description>
+ Create a new model from an example.
+ File > New > Example. Choose an Qompass example. Select the parent folder (it is not possible
+ to change the name of the example, since the model files reference each other. Use File > Save As after opening,
+ if required).
+ </description>
+ <command required="false"
+ serialization="org.eclipse.ui.newWizard(newWizardId=org.eclipse.ui.wizards.new.project)"/>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/PlatformModel.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/PlatformModel.xml
new file mode 100644
index 00000000000..894c7172939
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/PlatformModel.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet title="Platform Model">
+<intro>
+ <description>
+ The platform modeling consists in specifying the set of nodes on which the system
+ will be deployed.
+ </description>
+</intro>
+
+<item title="Create your platform model" skip="true">
+ <description>
+ The platform definition contains a set of nodes. Each node represents a computation resource on a type level.
+ The specification of a platform is quite similar to the specification of a composite component: it is done by
+ means of a component (class) whose parts represent the nodes. Each of the parts is typed with a node. Since a
+ node is a class as well, the inner structure of a node can be equally modeled via parts. Thus, a hardware
+ specification can be organized hierarchically.
+ As for software components, we are in the end interested in the instances of our computation resources. An
+ operation of the Qompass context menu will create this hardware instances from the class representing the hardware
+ in a similar way as a deployment plan is created.
+
+ Use the FCM stereotype "Target" on nodes to provide information about supported operating system and
+ available RAM and ROM (currently only the supported operation system information is evaluated).
+ A node represents a certain type of a computing resource, UML instance specifications represent a concrete
+ node instance. This concept is useful, if several identical nodes are used within a system.
+ </description>
+ <subitem
+ label="Create a new class &quot;HWArchitecture;&quot; within a composite diagram (in the package &quot;PlatformModel&quot;), stereotype it as FCM::HwArchitecture"
+ skip="true">
+ </subitem>
+ <subitem
+ label="Create one or more new node types by calling AddChild &gt; Node in the package &quot;PlatformModel&quot;"
+ skip="true">
+ </subitem>
+ <subitem
+ label="Apply the stereotype FCM::Target to the created nodes"
+ skip="true">
+ </subitem>
+ <subitem
+ label="Provide values for stereotype attributes, currently only &quot;supportedOS&quot; is evaluated"
+ skip="true">
+ </subitem>
+ <subitem
+ label="Create parts (make sure that aggregation-kind is set to composite) in the class representing the HW architecture (composite diagram). Type the parts with a node (created in the previous step);"
+ skip="true">
+ </subitem>
+ <subitem
+ label="Create tree of instance specifications associated with the HWArchitecture class: use the context menu on the HWArchitecture class (the menu entry &quot;Create platform definition;&quot; will appear if the HWArchitecture stereotype is applied)"
+ skip="true">
+ </subitem>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/Validation.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/Validation.xml
new file mode 100644
index 00000000000..d9822313b5d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/cheatsheet/Validation.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<cheatsheet
+ title="Model Validation">
+<intro>
+ <description>
+ Model validation enables the verification of a certain set of rules. Besides the standard UML rules,
+ Qompass defines a dozen of additional rules, for instance a validation of the typing rules for
+ ports.
+ </description>
+</intro>
+<item title="Verify validation settings" skip="true">
+ <description>
+ Verify the validation settings, i.e. the currently active validation rules (constraints).
+ Open the entry "Model Validation" within Window/Preferences and verify the active constraints.
+ Qompass related constraints are grouped.
+ </description>
+</item>
+<item title="Validate your Model" skip="true">
+ <description>
+ Validate your model. Click right on an element within the model explorer. Choose
+ the option "Validate model". Erroneous elements will appear in the Problem view,
+ will be marked in the model explorer and in the diagrams. Caveat: the model explorer
+ creates a visual marker for problems found within a child whereas this is not the case for
+ diagrams.
+ </description>
+</item>
+<item title="Open the &quot;Problems&quot; view" skip="true">
+ <description>
+ Window > Show View > Problems
+ </description>
+ <command
+ required="false"
+ serialization="org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId=org.eclipse.ui.views.ProblemView)"/>
+</item>
+</cheatsheet>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/index.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/index.xml
new file mode 100644
index 00000000000..6ca8880c3dc
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/index.xml
@@ -0,0 +1 @@
+<index></index>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocconcepts.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocconcepts.xml
new file mode 100644
index 00000000000..a70c9f0c946
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocconcepts.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Concepts" link_to="toc.xml#concepts">
+ <topic label="Qompass overview" href="html/concepts/overview.html">
+ </topic>
+ <topic label="Input models" href="html/concepts/input-models.html">
+ </topic>
+ <topic label="Connector/container" href="html/concepts/connector-container.html">
+ </topic>
+ <topic label="Code generation" href="html/concepts/codegen.html">
+ </topic>
+ <topic label="Bibliography" href="html/concepts/bibliography.html">
+ </topic>
+</toc>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocdevguide.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocdevguide.xml
new file mode 100644
index 00000000000..254dbf34b5d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocdevguide.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Developer guide" link_to="toc.xml#devguide">
+ <topic
+ label="Plugin overview"
+ href="html/developer-guide/developer.html">
+ </topic>
+ <topic
+ label="Create a new Qompass interaction component"
+ href="html/developer-guide/createInteractionComponents.html">
+ </topic>
+ <topic
+ label="Create a new Qompass container extension"
+ href="html/developer-guide/createContainers.html">
+ </topic>
+ <topic
+ label="Create a new Qompass port kind"
+ href="html/developer-guide/DefineNewPortKinds.html">
+ </topic>
+</toc>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocreference.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocreference.xml
new file mode 100644
index 00000000000..7f27d062c18
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/help/tocreference.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Reference" link_to="toc.xml#reference">
+ <topic
+ label="Components"
+ href="html/reference/component.html">
+ </topic>
+ <topic
+ label="Interaction Components"
+ href="html/reference/interactionComponent.html">
+ </topic>
+ <topic
+ label="Containers"
+ href="html/reference/container.html">
+ </topic>
+ <topic
+ label="Port kinds"
+ href="html/reference/portKind.html">
+ </topic>
+ <topic
+ label="Port"
+ href="html/reference/port.html">
+ </topic>
+</toc>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/bibliography.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/bibliography.html
new file mode 100644
index 00000000000..a5bec374c1b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/bibliography.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <TITLE>Bibliography</TITLE>
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<BODY>
+<img src="../img/qompass-0.33.jpg" alt="Qompass logo">
+<H1>Bibliography</H1>
+
+<dl>
+<dt>
+<A NAME="Fractal:04">[1]</A>
+<dd>
+E. Bruneton, T. Coupaye, and J. Stefani.
+<EM>The Fractal Component Model</EM>, 2004,
+<a href="http://fractal.objectweb.org/specification/">Fractal specification</a>.
+
+<dt>
+<A NAME="OMG:CCM:08">[2]</A>
+<dd>
+OMG, <EM>CORBA Component Model Specification, V3.3 (part 3 of the
+ CORBA specification)</EM>, 2012,
+OMG Document formal/2012-11-16. <a href="http://www.omg.org/spec/CORBA/3.3/">CORBA 3.3</a>
+
+<dt>
+<A NAME="OMG:MARTE:09">[3]</A>
+<dd>
+OMG, <EM>UML Profile for MARTE: Modeling and Analysis of Real-Time
+ Embedded systems, Version 1.0</EM>, 2009.
+OMG document ptc/2009-11-02.<a href="http://www.omg.org/spec/MARTE/1.1/">MARTE 1.1</a>
+
+<dt>
+<A NAME="Robert:05a">[4]</A>
+<dd>
+S. Robert, A. Radermacher, V. Seignole, S. G&#233;rard, V. Watine, and F. Terrier,
+Enhancing Interaction Support in the CORBA Component Model.
+In A. Rettberg, M. C. Zanella, and F. J. Rammig, editors, <EM>From
+ Specification to Embedded Systems Application</EM>, IFIP TC10 Working Conference:
+ International Embedded Systems Symposium (IESS). Springer, 2005.
+
+<dt>
+<A NAME="Robert:05b">[5]</A>
+<dd>
+S. Robert, A. Radermacher, V. Seignole, S. G&#233;rard, V. Watine, and F. Terrier.
+The CORBA Connector Model.
+In <EM>Proceedings of the 5th International Workshop on Software Engineering and Middleware</EM>. ACM Digital Library, 2005.
+
+<dt>
+<A NAME="GarlanShaw:95">[6]</A>
+<dd>
+M. Shaw and D. Garlan, <EM>Software Architecture: Perspectives on an Emerging Discipline</EM>, Prentice Hall, 1995.
+</dl>
+
+</BODY>
+</HTML>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/codegen.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/codegen.html
new file mode 100644
index 00000000000..37adce760f1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/codegen.html
@@ -0,0 +1,60 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Code generation</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<BODY >
+<img src="../img/qompass-0.33.jpg" alt="Qompass logo">
+
+<H1>Code generation</H1>
+
+The result of the previous phase is a component model of the application, enriched with reified connectors and expanded containers.
+The code generation starting from this model requires two actions: (1) the realization of the component deployment consisting of a
+splitting the global model into sub models for each execution node and (2) the transformation of ports and connectors that do not have
+a direct equivalent concepts in object-oriented programming languages.
+
+<P>
+The former is not as trivial as it may seem since dependencies have to be taken into account and composites may have to be
+deployed on multiple nodes due to allocations of theirs parts. This imposes constraints such as only read-only attributes in
+these composites to ensure consistency. We do not discuss this issue further in the context of this paper and focus on the
+second aspect, the transformation of ports and connectors.
+
+<P>
+<A NAME="trafo_OO"></A>Ports and connectors do not possess a direct equivalent in an object-oriented programming language.
+Thus, it is necessary to relate component-oriented concepts to object-oriented concepts, i.e. classes, interfaces, attributes
+and operations.
+We distinguish ports with provided interfaces and ports with required interfaces (a port might also have both).
+A port providing an interface is an access point to a service and a caller needs to obtain a reference to this service, in
+our implementation pattern via a specific operation. For instance, if a component owns a port "p" providing interface "I",
+the realization of a component needs an operation "get_p" returning a reference to the service. The implementation of this
+operation is determined automatically: in case of a delegation connector between the port and an internal part of a component,
+this reference is returned, otherwise a reference to the component reference itself is returned.
+
+<P>
+A port with a required interface is an interaction point which requires a reference of another component that provides the
+interface. Thus, the component needs to store this reference and provide an operation to initialize the reference in the moment
+of instantiation. For instance, a port "q" with an required interface is transformed into an attribute which stores a reference
+to a port providing the interface and an operation "connect_q" which initializes this reference.
+
+<P>
+Connectors within a composite are transformed into a realization of a specific operation that creates the connections between
+parts, i.e. contains suitable combinations of <I>some-part</I>.connect_<I>some-port</I> <I>other-part</I>.get_<I>other-port</I>.
+
+<P>
+Once the transformation of component-based models to object-oriented models is done, a "classical" code generator taking an
+object-oriented UML model as input is sufficient for the code generation (in our case C++).
+For each class or interface, a C++ class is generated. The UML packages are transformed into C++ name spaces. The organization
+of the files follows the same as in Java. A name space corresponds to a directory and thus reflects the package structure in UML.
+
+<P>
+The dependencies to the external packages are translated into <I>include</I> directives to libraries. The generated code can now
+be compiled, for instance in the context of the Eclipse CDT environment.
+
+<P>
+
+</BODY>
+</HTML>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/connector-container.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/connector-container.html
new file mode 100644
index 00000000000..057bf4612d1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/connector-container.html
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Connector and container pattern</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+
+<body>
+<img src="../img/qompass-0.33.jpg" alt="Qompass logo">
+<h1>Connector and container pattern</h1>
+
+<P>
+The connector pattern is based on the idea of Garlan and Shaw that a realization of an interaction must be
+a first class citizen of the application model. It must be possible that an interaction - like an
+application component - has multiple realizations and can be configured. The idea of connectors has been
+formalized in the context of UML in [<A
+ HREF="bibliography.html#Robert:05a">4</A>] and [<A
+ HREF="bibliography.html#Robert:05b">5</A>]: a UML connector - a "line" within a composite class - is replaced by an
+ interaction component as shown in the left part of Fig. <A HREF="#fig:cont-conn">3</A>.
+
+<P>
+The interaction component is typically defined in a model library in form of a <I>template</I>. This is required,
+since the interaction component must be able to adapt to the context in which it is used. For instance, in case of
+an operation call of a component, the interaction component must provide the same operation as the component.
+In most cases, the formal parameter of the template is either an interface or a data-type. The implementation of
+the interaction component must be adapted as well, in order to correspond to the interface. The implementation body
+is thus provided in a form a a template of a typical model-to-text (M2T) language, in our case Acceleo.
+
+<P>
+The container pattern may be used to modify the way a component interacts with its environment. This pattern has been
+identified by existing middleware solutions, such as
+CCM[<A HREF="bibliography.html#OMG:CCM:08">2</A>] and
+Fractal[<A HREF="bibliography.html#Fractal:04">1</A>].
+The container encapsulates an object (component) and can provide additional service and observer or manipulate the
+interactions with the component. In order to enhance flexibility (and readability) of the application model, it is
+preferable to add information about the container (in form of rules) to the model, but not the container itself.
+Thus, a transformation step adds the container to the model.
+
+<P>
+
+<center>
+<a name="fig:cont-conn">
+<img src="../img/container-connector.png"><br>
+Connector reification and container expansion
+</center>
+
+<P>
+The right side of Figure <A HREF="#fig:cont-conn">3</A> shows this principle: a component "C" is enriched with rules
+to apply. This information is evaluated by a transformation that creates the container and adds the elements that are
+associated with the rule. The component becomes an <I>executor</I>, i.e the business code behind a component. It is possible
+to distinguish two different types of elements within the container: the <I>interceptor</I> and the <I>extensions</I>. The
+interceptor is placed on a delegation connection between a port of the container and the executor. The extension is
+an additional element which can be connected with external ports of the container.
+<P>
+
+<center>
+<a name="figSMrule">
+<img src="../img/statemachine-rule.png"><br>
+Container rule for a state machine
+</center>
+
+<P>
+The current container libraries offer for instance the production of execution traces or the realization of mutual access.
+An interesting feature is the support for state-machines. Its realization requires three elements within the container:
+the state-machine itself, an event pool and an interceptor which feeds the pool (e.g. each time an operation is called,
+an associated call event is produced). These elements are captured by the rule shown in Figure <A HREF="#figSMrule">4</A>.
+
+<P>
+In a similar way as the FIFO interaction component, the state machine and the interceptor are defined in a package template.
+The model of the state machine is defined for a component (class). The implementation of the state machines depends on the
+formal parameter which is instantiated with a class. The message interceptor is typed with an interface, since it primarily
+captures call-events.
+
+<P>
+The following code fragment describes the template of an operation which manages the execution of a state-machine.
+The code, here using the C++ language, is modeled by an UML opaque behavior. The access to the model element is embedded
+between <TT>[</TT> and <TT>/]</TT>, i.e. <TT>[name/]</TT> allows to access the name of a UML element. This excerpt shows
+the power to adapt the behavior of embedded components via the container to add new functionality that is well separated
+of the business code.
+
+<P>
+<PRE>
+[for (sm : StateMachine | ownedBehavior-&gt;select(oclIsKindOf(StateMachine)))]
+switch(m_currentState)
+{
+ [for (state : State | sm.region.subvertex-&gt;select(oclIsKindOf(State)))]
+ case [clazz.name/]_[state.name/]:
+ ...
+ [/for] ...
+</PRE>
+
+<P>
+The instantiation of the template with a fictive class "A" is shown in the next code fragment. This class contains a
+state machine with the state "state1", which appears in the code's "switch" statement. In each state, the events defined
+as triggers for transitions are compared with the event read from the pool (in which a timer or interceptor write).
+
+<P>
+<PRE>
+switch(m_currentState)
+{
+ case A_state1:
+ ...
+</PRE>
+
+<P>
+
+<P>
+<HR>
+
+</BODY>
+</HTML>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/input-models.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/input-models.html
new file mode 100644
index 00000000000..1d910b4c70c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/input-models.html
@@ -0,0 +1,67 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<img src="../img/qompass-0.33.jpg" alt="Qompass logo">
+<h1>Input models</h1>
+
+The set of input models contains three sub-models that are shortly described in the sequel:
+<ol>
+<li> the software component model,
+<li> the hardware platform and
+<li> the deployment model.
+</ol>
+
+In the context of this page, the input models are discussed without referring to a specific example. Sample models are available via the Qompass
+online help or via the "create-new example" dialog of Eclipse.
+
+<h2>Component model</h2>
+
+We use the UML MARTE component model that describes components (with their internal behavior), and the interaction points (ports)
+characterized by the transferred data or by the provided/required services. Interactions are realized by the design patterns described
+in section <a href="connector-container.html">Connector/Container</a>.
+The concurrent behavior is specified via the HLAM (High Level Application Modeling) sub-profile of MARTE. This concurrency model
+identifies the components that possesses execution resources (RtUnit) and the shared ones (PpUnit) which do not have execution resources,
+but resources that manage the concurrent access.
+
+<h2>Platform model</h2>
+
+A hardware architecture is described in a similar way as the logical architecture by composition of elements. A class called
+"HWArchitecture" represents the complete platform. The attributes of this class represent nodes. Each node is typed with a class
+that captures the properties of this node. Each node can have a further internal structure, a hierarchical structure
+can thus be modeled.
+<p>
+
+
+<h2>Deployment model</h2>
+
+The deployment of an application consists to define the component instance, their configuration and their allocation to an
+execution node. The UML composite structure defines the roles that are played by each component of the system. The deployed
+component is always an instance of a component that has a specfied allocation to an execution resource (node or thread) and
+a specific configuration. In UML, an instance is defined by an "InstanceSpecification", the values of properties are given via
+"slots". In case that the property represents a sub-component, the associated value is a further instance specification. The
+resulting hierarchical structure is quite difficult to maintain and is automatically generated and maintained by tools.
+
+A component-based system requires a configuration. The configuration attribute of a timer for instance define its frequency. The
+values of this configuration attribute can be defined at two different levels.
+<ul>
+<li> on declaration level by associating a default value with an attribute
+<li> on instance level, by specify a corresponding slot value
+</ul>
+Once all component are instantiated and configured, they can be allocated.
+
+The allocation phase consists of defining the relation between the the instances of software components and those of the platform elements.
+The Figure below describes the deployment of the component DeviceControlMonitor and PGController on the hardware platform. The MARTE
+"Allocate" relationship is used to describe the allocation model.
+
+The allocation can be refined by introducing local resources of the platform between the application the hardware platforms -- in
+MARTE via the concept of a "SwSchedulableResource".
+
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/overview.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/overview.html
new file mode 100644
index 00000000000..be352f97a41
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/concepts/overview.html
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<img src="../img/qompass-0.33.jpg" alt="Qompass logo">
+<a href="http://www.eclipse.org/modeling/mdt/papyrus/" target="_parent"><img src="../img/logo-papyrus.png" border="0"></a>
+<a href="http://www.omgmarte.org" target="_parent"><img src="../img/logo-marte.png" alt="OMG MARTE" border="0"></a>
+
+<h1>Overview</h1>
+
+Qompass Designer is a component based modeling approach that supports the code generation from embedded
+systems. Theses systems are characterized by timing and resource constraints - sometimes also
+denoted as non-functional properties. Since these systems get more and more complex, it is important
+that the non-functional properties are not just specified in the documentation and respected by the
+implemented system, but that these are explicitly modeled and suitable code is derived from the model.
+
+Qompass Designer is part of the Qompass tool-suite integrated into Papyrus. The separation of concerns between
+the two tools is that
+<ul>
+<li>Qompass analyzer analyzes a system, in particular with respect to schedulability
+ analysis. It enables the validation of several variants to allocate software components to execution
+ resources and thus provides an architectural exploration
+<li>Qompass designer supports the code generation for a specified architecture. It enables this code
+ generation by means of a sequence of transformations steps and a final code generation step as
+ shown in the figure below.
+</ul>
+
+<center>
+<img src="../img/overview-eng.png" alt="Tool Chain overview">
+</center>
+<p>
+
+Qompass is integrated into the open source UML editor <a href="http://www.eclipse.org/modeling/mdt/papyrus/">Papyrus</a>,
+The UML profile <a href="http://www.omgmarte.org" target="_parent">MARTE</a> is used for non-functional properties.
+Parts of the component model were developed in the context of the French national project <a href="http://www.flex-eware.org">Flex-eWare</a>.
+
+In the sequel, you find information about the
+<ul>
+<li><a href="input-models.html">input models for code generation"</a>
+<li><a href="connector-container.html">The idea of using dedicated interaction components and realizing cross-cutting concerns via the container</a>
+<li><a href="input-models.html">The code generation</a>
+</ul>
+
+We also recommend the examples section in the documentation index as a starting point for using Qompass.
+
+<p>
+
+</BODY>
+</HTML>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/DefineNewPortKinds.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/DefineNewPortKinds.html
new file mode 100644
index 00000000000..44b6609371a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/DefineNewPortKinds.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="/sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>How-to create your own port-kinds</h1>
+
+A port kind characterizes a port. Simple examples of port kinds are (1) the UseInterface and
+ProvideInterface kinds which describe client/server ports and (2) PushPublisher which describe a data
+publisher port for a given data type. In the first case, the port is typed with the interface that is
+provided or required, in the second case, the port is typed with datatype.<br></br>
+Although it does not formally define its semantics, each port kind should be associated with a
+description of the intention behind it. A port kind is always associated with a <b>mapping rule</b>
+that describes which interface a port provides and/or requires when in function
+of its type (and/or additional information, e.g. coming from a MARTE stereotype).
+On the model level, a port kind is first a stereotyped class. It can be created with the Qompass palette.
+<p></p>
+The associated mapping rule is defined defined by means of Java code. You have to create a plugin
+that defines the (plug-in) extension port-mapping provided by the FCM profile plugin. The extension
+contains the (unqualified) name of the port kind and associated rules for the mapping.<br></br>
+
+The class must implement the interface FCM.util.IMappingRule, i.e. the operations getProvided,
+getRequired and needsTransaction. The former two return the provided (required) interface in function
+of the port type. The latter indicates whether the calculation of one of these (potentially) modifies
+the model by creating/or updating a derived interface and thus requires a transaction.
+Examples can be found in the plug-in org.eclipse.papyrus.qompass.designer.stdmappingRules.
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/createContainers.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/createContainers.html
new file mode 100644
index 00000000000..7c9b1ec491e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/createContainers.html
@@ -0,0 +1,44 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="/sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>Qompass container development</h1>
+
+A container encapsules a component, i.e. it encloses an existing components and delegates ports to
+it. The following figure depicts a container enclosing an component. The principal idea is that the
+container handles the treatment of non-functional properties. Therefore, the existing component can
+focus on the implementation of the business logic. It is therefore also called executor, a term
+introduced by the OMG standard CORBA component model (CCM).<br></br>
+There are two different ways how a container can influence the execution of an executor. Either via
+interception or via extension. The two variants are shown in the sequel.
+
+<h2>How to create a container interceptor</h2>
+
+A container interceptor is basically a connector between a port of the . Thus, it can be defined in the same way as a
+connector, but needs to carry the stereotype interceptor.
+
+<h2>How to create a container extension</h2>
+
+A container extension is a
+
+<h2>How to create a container rule</h2>
+
+Before you create a container rule, you typically create either a interceptor or a container
+extension (see above).
+
+There are two different kinds of rules:
+<ol>
+<li>local rules that are only visible to a component owning them
+<li>global rules that are visible for all models that import the model library. In both
+ cases, the container rule is principally a stereotyped UML class. In the first case, it is a
+ sub-class owned by the component, which is typically created by the container rule dialog available
+ for the package. In the second the container rule is a normal class owned by a package; use the Qompass
+ palette to create the rule. Then, right on the rule to edit its properties.
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/createInteractionComponents.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/createInteractionComponents.html
new file mode 100644
index 00000000000..d6a0c24d682
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/createInteractionComponents.html
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>Connector Development</h1>
+
+The definition of a connector is quite similar to that of a component. Thus, its development is
+quite similar as well. The major differences are:
+<ul>
+<li>The type of ports are typically generic, i.e. template parameters.
+<li>A connector is often distributed, i.e. the connector itself is an assembly of connector fragments
+<li>It may be required to define additional port kinds
+</ul>
+
+In the following steps, we address the issues above in addition to the normal development of a component.
+
+<h2>Integration into a package template</h2>
+
+The ports of a connector are often generic, since the connector should connect a large variety of
+components. Therefore, the type of the ports often refer to a template parameter. For instance, in
+case of ports providing or requiring an interface, the BasicCalls model library defines a package
+template with the template parameter &quot;I&quot; which denotes an arbitrary interface.
+When a new connector is defined, the developer should first verify if a suitable package template
+already exists.
+The use of a package import declares the extension of a existing package.
+It is possible to extend this package template by eds to refer to a generic port type - a port whose type adapts that refers to template parameters
+<p>
+
+In the context of a new interaction component definition, it may be necessary to define new port kinds. A port kind associates a semantics (informally) with a port. It consists of a rule for the provided and required interface in function of the port type.
+The rule is currently coded in Java and provided via an (Eclipse) extension point defined by the FCM plugin. This extension point is called fcmPortMappingRule and associates the name of a port kind with a class.&lt;br&gt;
+The class must implement the interface FCM.util.IMappingRule, i.e. the operations getProvided, getRequired and needsTransaction. The former two return the provided (required) interface in function of the port type. The latter indicates whether the calculation of one of these (potentially) modifies the model by creating/or updating a derived interface and thus requires a transaction.
+
+<p>
+An interaction component is the realization of an interaction pattern which is defined by an abstract interaction
+component. There are two cases,
+<ol>
+<li>You want to create a new implementation of an existing interaction mechanism
+<li>You want to create an additional interaction mechanism
+</ol>
+
+A particularity of a connector is that it is typically defined in a package template. In the first case, i.e.
+the creation of an existing implementation.
+Instead of creating a new package template for each new connector, an existing package template should be
+extended - provided that the formal parameters are identical. This favors reuse, e.g. the existing package
+template for method calls contains the definition of (a)synchronous connector types as well an enumeration
+over all the operation within the interface (template parameter).<br>
+
+There is no means in UML of extending an existing package. In Qompass, a package is extending an existing package
+template, if it merges with the existing package template.
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/developer.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/developer.html
new file mode 100644
index 00000000000..419936e9f52
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/developer.html
@@ -0,0 +1,57 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Main Topic</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+
+<body>
+<h1>Qompass developer guide</h1>
+
+The objective of this guide is to provide information about the architecture of Qompass designer and enable developers to
+contribute to its development, i.e. it is not intend for people that want to develop applications with Qompass designer.
+This guide is currently quite incomplete and should give a rough overview of the Qompass plug-ins.
+
+In general, there is a separation between the generic transformation mechanisms and the model libraries defining
+interaction components and container extensions. It is quite likely that a contribution only focusses on one of these two,
+for instance on a model library for a dedicated interaction mechanism.
+
+The transformation mechanisms consists of the following plug.ins:
+<ul>
+<li>org.eclipse.papyrus.qompass.designer.feature This plugin contains the definition of the Qompass feature
+<p>
+<li><a href="org.eclipse.papyrus.qompass.designer.core.html">org.eclipse.papyrus.qompass.designer.core:</a> The main Qompass plugin
+<li>org.eclipse.papyrus.qompass.designer.validation: A set of validation rules that check the well-formedness of models,
+ for instance, whether a connection betwee ports if syntactically valid.
+ The validation plug-ins defines a set of EMF validation rules in form of Java code.
+
+<li>org.eclipse.papyrus.qompass.designer.cpp: A plugin with support for C++, in particular (1) for the creation
+ and configuration of Eclipse CDT projects and (2) the interaction with the C++ code generator.
+<li>org.eclipse.papyrus.fcm.profile: A plugin container the Flex-eware component model in form of a static profile
+<li>org.eclipse.papyrus.codegen.cpp: C++ code generator and simple C++ view
+
+</ul>
+
+<p>
+In addition to the generation plugins, Qompass contains a set of model libraries that are
+dedicated for a specific domain and/or interaction mechanisms.
+
+<ul>
+<li>org.eclipse.papyrus.qompass.designer.modellibs.core: A set of basic interaction mechanisms and container rules as well
+ as port kinds along with the calculation of provided and required interface from the port type
+ and kind ("mapping rules").
+<li>org.eclipse.papyrus.qompass.designer.modellibs.marte: A modeling library for MARTE, contains a set of FCM port kinds
+ suitable for MARTE (client/server and flow ports) and model elements for RtUnit and PpUnit.
+ A model listener performs automatic synchronization between MARTE and FCM stereotypes, e.g.
+ will automatically initialize the FCM port kind attribute with the kind that corresponds to
+ the MARTE stereotype and apply container rules associated with Rtunit and Ppunit.
+<li>org.eclipse.papyrus.qompass.designer.modellibs.distribution: Distribution support via sockets
+<li>org.eclipse.papyrus.qompass.designer.modellibs.tracing: Tracing support (container rule and interceptor) for OTF
+</ul>
+
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/org.eclipse.papyrus.qompass.designer.core.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/org.eclipse.papyrus.qompass.designer.core.html
new file mode 100644
index 00000000000..2136ae652a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/developer-guide/org.eclipse.papyrus.qompass.designer.core.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Main Topic</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+
+<body>
+<h1>org.eclipse.papyrus.qompass.designer.core</h1>
+
+This is the main Qompass plugin. It contains the dialogs and model transformations code as well as a
+set of utilities classes.
+Qompass consists of a set of package (oepqd is an abbreviation for the path org.eclipse.papyrus.qompass.designer):
+<ul>
+<li>ccegc.acceleo a driver for the versoin 2.7.x of Acceleo. This driver is used to instantiate text
+templates that refer to model elements. These are primarily used for the connector instantiation (since
+the implementations given in form of Opaque behaviors need to be instantiated as well.
+
+<li>oepqd.deployment
+<li>oepqd.transformation
+ Main transformation code
+<li>oepqd.synchronization
+ A part of the utilities that synchronize derived elements, in particular the implementation of
+ a component which has for instance
+ <ul>
+ <li>implement the interfaces provided by a component port
+ </ul>
+</ul>
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/arrow.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/arrow.png
new file mode 100644
index 00000000000..1c66a6d427d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/arrow.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-after-trafo.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-after-trafo.png
new file mode 100644
index 00000000000..aae501c9e90
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-after-trafo.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-before-trafo.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-before-trafo.png
new file mode 100644
index 00000000000..04595b063cb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-before-trafo.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-selection.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-selection.png
new file mode 100644
index 00000000000..3e60881270c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/connector-selection.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-aggregation.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-aggregation.png
new file mode 100644
index 00000000000..9f98f79e705
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-aggregation.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-connector.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-connector.png
new file mode 100644
index 00000000000..73cbaea6fa4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-connector.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-interceptor.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-interceptor.png
new file mode 100644
index 00000000000..88d630ba405
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-interceptor.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-interceptor2.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-interceptor2.png
new file mode 100644
index 00000000000..82a0a5031f3
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-interceptor2.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-selection.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-selection.png
new file mode 100644
index 00000000000..0ee528ca514
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/container-selection.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/deployment.pdf b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/deployment.pdf
new file mode 100644
index 00000000000..7fd5e843362
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/deployment.pdf
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/deployment.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/deployment.png
new file mode 100644
index 00000000000..b0ae3117501
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/deployment.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-flex-eWare-small.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-flex-eWare-small.png
new file mode 100644
index 00000000000..42ad4899399
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-flex-eWare-small.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-marte.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-marte.png
new file mode 100644
index 00000000000..d33ef562b5f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-marte.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-papyrus.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-papyrus.png
new file mode 100644
index 00000000000..f85045926f3
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/logo-papyrus.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.odg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.odg
new file mode 100644
index 00000000000..a38a594fb7b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.odg
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.pdf b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.pdf
new file mode 100644
index 00000000000..a615fa7ce91
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.pdf
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.png
new file mode 100644
index 00000000000..d22ad2fb51c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.vsd b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.vsd
new file mode 100644
index 00000000000..a274050ab84
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/overview-eng.vsd
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/qompass-0.33.jpg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/qompass-0.33.jpg
new file mode 100644
index 00000000000..8c429f9dc5e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/qompass-0.33.jpg
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/qompass.jpg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/qompass.jpg
new file mode 100644
index 00000000000..26807d913e4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/qompass.jpg
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-after-trafo.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-after-trafo.png
new file mode 100644
index 00000000000..c19b14f091a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-after-trafo.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-before-trafo.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-before-trafo.png
new file mode 100644
index 00000000000..3568e8e8e08
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-before-trafo.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-selection.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-selection.png
new file mode 100644
index 00000000000..0cf9151893c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/connector-selection.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-aggregation.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-aggregation.png
new file mode 100644
index 00000000000..2f260c5498b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-aggregation.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-interceptor.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-interceptor.png
new file mode 100644
index 00000000000..43c3f8b4edf
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-interceptor.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-interceptor2.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-interceptor2.png
new file mode 100644
index 00000000000..10b73141e50
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-interceptor2.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-selection.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-selection.png
new file mode 100644
index 00000000000..b8a372f44cd
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/scaled/container-selection.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/statemachine-rule.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/statemachine-rule.png
new file mode 100644
index 00000000000..2754cb16625
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/statemachine-rule.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/toolchain.odg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/toolchain.odg
new file mode 100644
index 00000000000..c752e963472
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/toolchain.odg
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/toolchain.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/toolchain.png
new file mode 100644
index 00000000000..68442484be3
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/toolchain.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/trace2.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/trace2.png
new file mode 100644
index 00000000000..e8c9820c4c7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/img/trace2.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/component.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/component.html
new file mode 100644
index 00000000000..fb6364efedb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/component.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>Components</h1>
+
+An Qompass component is a UML class (you might also use a UML component), since classes
+contain essential properties we require of a component:
+<ul>
+<li>they own a set of ports and may interact through these ports. On the port level, a component needs to declare explicitly,
+ which services it offers and which it requires from other others. It is important that a component does not know which
+ other component will provide a required service, it only states the required services (interfaces or data-types). Thus, compared
+ to an element of a classical library, dependencies on other elements are limited and the components are loosely coupled with
+ their environment
+<li>A class may have an explicit internal structure: a set of <i>parts</i> that are typed with other components (UML classes).
+ The ports of the parts may be connected (assembly), a port of the component itself might delegate to a port of a part.
+ These components are also called assembly components.
+</ul>
+
+A component might either be a type or an implementation. The former is mainly an abstract class with a set of ports
+and no internal structure. It may inherit from other component types, but not from implementations.
+The latter has to realize at least a subset of the services that are provided at its ports (if it does not define all, it
+needs to be declared as abstract). The realization could be either done by an implementation written in a specific programming
+language or the UML action language or by a delegation to an inner part.
+
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/container.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/container.html
new file mode 100644
index 00000000000..73aaa3d3443
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/container.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>Qompass container development</h1>
+
+A container encapsules a component, i.e. it encloses an existing components and delegates ports to
+it. The following figure depicts a container enclosing an component. The principal idea is that the
+container handles the treatment of non-functional properties. Therefore, the existing component can
+focus on the implementation of the business logic. It is therefore also called executor, a term
+introduced by the OMG standard CORBA component model (CCM).<br></br>
+There are two different ways how a container can influence the execution of an executor. Either via
+interception or via extension. The two variants are shown in the sequel.
+
+<h2>How to create a container interceptor</h2>
+
+A container interceptor is basically a delegation connector between a port of the container and the
+executor. Thus, it can be defined in the same way as a connector, but needs to carry the stereotype
+interceptor.<br>
+
+<img src="../img/scaled/container-interceptor.png" alt="An example of a container interceptor">
+<img src="../img/arrow.png">
+<img src="../img/scaled/container-interceptor2.png" alt="Further expansion">
+
+<p>
+Further expansion as for a <a href="connector.html">connector</a>
+
+<h2>Container rules</h2>
+
+A container rule defines which container extensions and/or interceptors should be applied. The
+concept of a container rule has been introduced, since some aggregation/interceptor combinations
+depend on each other. Their independ selection would be error prone, instead a single container
+rule selects the combination.
+
+There are two different kinds of rules:
+<ol>
+<li>local rules that are only visible to a component owning them
+<li>global rules that are visible for all models that import the model library. In both
+ cases, the container rule is principally a stereotyped UML class. In the first case, it is a
+ sub-class owned by the component, which is typically created by the container rule dialog available
+ for the package. In the second the container rule is a normal class owned by a package; use the Qompass
+ palette to create the rule. Then, right on the rule to edit its properties.
+</ol>
+
+<img src="../img/scaled/container-selection.png" alt="container selection">
+
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/interactionComponent.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/interactionComponent.html
new file mode 100644
index 00000000000..98391302fba
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/interactionComponent.html
@@ -0,0 +1,61 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Interaction components and connectors</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>Interaction components and connectors</h1>
+
+An interaction component is a component that is responsible for realizing an interaction between two or more
+components.<br>
+
+A UML connector denotes a link between two components, or more precisely between two or more parts (or ports of parts)
+within a composition. In UML, the connector only denotes that there is a connection, it does not carry further
+annotations that characterize the interaction or how it is implemented.
+
+<br>
+In Qompass, a connector carries additional information (via the FCM profile) about a type or implementation
+used for its realization, the interaction component.<br>
+
+An interaction component is quite similar to a standard component: there is an optional separation
+between its type and its implementation, it owns ports, it may be a composition of parts typed with
+other components.
+The main difference is that it needs to be generic, since the interaction component has to adapt itself
+to the environment in which it is used, e.g. to the interfaces of ports it connectors.
+The following figure shows a connector and the referenced connector component. The tool chain
+<i>reifies</i> a connector to a connector component during deployment, as shown in the following figure:
+
+<img src="../img/scaled/connector-before-trafo.png" alt="connector before transformation">
+<img src="../img/arrow.png">
+<img src="../img/scaled/connector-after-trafo.png" alt="connector after transformation">
+
+<h2>Connector matching algorithm</h2>
+
+In order to check whether a connector can be applied, we need to find a binding of its formal template
+parameter(s) for which all ports of the connector match a port of the application components with which
+it is connected. Of course, a single binding must establish matching for all connector ports at the same
+time. A match is fulfilled, if either
+<ol>
+<li>The ports have an identical kind and type, and one of the ports is conjugated (i.e its provided and
+ required interfaces are swapped). The connector port is typically typed with the formal parameter, i.e.
+ matching is reached if the formal is bound to the same type as the application port.
+<li>The provided interface of one port has a matching required interface of the opposite port and vice versa.
+ Assuming again,that a port of the connector is typed with the formal parameter of the template, the
+ calculation is limited to the case of mapping rules that expose the formal parameter directly as
+ provided or required interface, i.e. that do not create a derived interface that depends on the
+ formal parameter. Otherwise,
+ the calculation of the formal parameter would require a reverse execution of the mapping rule
+ (calculation of port type when a provided or required interface is given). This implies in practice
+ that connectors with simple ports using ProvideInterface or UseInterface match: the rule is actually
+ less strong that the first, since it is possible to match ports that have not specifically be designed
+ for each other. For instance, the PushProducer port for a dataype DT has a required interface with an
+ operation "push(in data : DT)". A port with the generic UseInterface kind can match the PushProducer
+ port. Thus, a synchronous call connector s compatible with a PushProducer/PushConsumer port combination.
+</ol>
+
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/port.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/port.html
new file mode 100644
index 00000000000..dc0c832a6c7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/port.html
@@ -0,0 +1,26 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>Ports</h1>
+
+Ports are interaction points of components. A component may execute operation calls via a port when
+it requires a service. When a component provides a service, a operation of a port is called when the
+service is invoked. In Qompass, this abstraction is also used for data oriented ports, as calls are flexible
+and well handled by the underlying programming language. For instance, data consumption via polling might
+correspond to the call of an &quot;getData&quot; operation (component calls, required interface),
+consumption via push the call of an pushData operation (environment calls, provided interface).
+<p>
+From the user view point, the provision or use of a specific interface is an implementation aspect. Therefore,
+these two interfaces or not specified, but they are calculated or <i>derived</i> from two other port properties:
+its type and its <a href="portKind.html">kind</a>. For instance, a &quot;PullConsumer&quot; port kind could be used in
+conjunction with a data type and would define the &quot;getData&quot; operation above.
+
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/portKind.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/portKind.html
new file mode 100644
index 00000000000..983c6983f58
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/portKind.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="/sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>Port kinds</h1>
+
+A port kind characterizes a port. Simple examples of port kinds are (1) the UseInterface and
+ProvideInterface kinds which describe client/server ports and (2) PushPublisher which describe a data
+publisher port for a given data type. In the first case, the port is typed with the interface that is
+provided or required, in the second case, the port is typed with datatype.<br></br>
+Although it does not formally define its semantics, each port kind should be associated with a
+description of the intention behind it. A port kind is always associated with a <b>mapping rule</b>
+that describes which interface a port provides and/or requires when in function
+of its type (and/or additional information, e.g. coming from a MARTE stereotype).
+
+On the model level, a port kind is first a stereotyped class. In Qompass, the associated mapping rule
+is defined defined by means of Java code. but this is mainly an implementation issue.
+Examples can be found in the plug-in org.eclipse.papyrus.qompass.designer.stdmappingRules.
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/trafos.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/trafos.html
new file mode 100644
index 00000000000..27ad089bcb9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/reference/trafos.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+<h1>Transformations</h1>
+
+Before an Qompass component can be deployed, there is a set of transformations that is applied
+
+<ol>
+<li>Each port is translated into a tripel of a property, an operation returning a reference to the interface
+ provided by the port (if any) and an operation allowing to connect the port (if port has a required
+ interface).
+
+<li>Parts: if a part is typed with an abstract component implementation or a component type, it cannot
+ directly be instantiated in some programming languages, notably C++ (in Java, attributes typed
+ with a class are always implictly references). For these, there are basically two options:
+ <ul>
+ <li>Change the type of the part and replace it by a concrete implementation. Obviously, this can only
+ work, if the deployment uses always the same implementaiton for the part.
+ <li>Assure that the composite only holds a reference to the part, i.e. make the part a pointer and
+ let the bootloader instantiate the sub-parts. The advantage is that it always works, but would not
+ do something useful in the context of variable systems.
+ </ul>
+<li>
+</ol>
+
+A component might either be a type or an implementation. The former is mainly a class with a set of ports
+and no internal structure. It may inherit from other component types, but not from implementations.
+The latter has to realize at least a subset of the services that are provided at its ports (if it does not define all, it
+needs to be declared as abstract). The realization could be either done by an implementation written in a specific programming
+language or the UML action language or by a delegation to an inner part.
+
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/sitestyle.css b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/sitestyle.css
new file mode 100644
index 00000000000..4f5bb078d99
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/html/sitestyle.css
@@ -0,0 +1,13 @@
+BODY { font-family: "Helvetica", sans-serif;
+ background-color: white
+}
+
+A:link { color: #4040c0 }
+A:active { color: #909090 }
+A:visited { color: #9090f0 }
+
+TT {
+ background-color: #d0f8f0;
+ /* font-family: monospace; */
+ /* font-size: 100% */
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.di
new file mode 100644
index 00000000000..63bf1a9db4a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.di
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="ec3m-transformations.notation#_WxLIEOVlEeC9WYPftC2-Gw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ec3m-transformations.notation#_82d0IOiGEeCNXKwlBzXqfA"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="ec3m-transformations.notation#_WxLIEOVlEeC9WYPftC2-Gw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ec3m-transformations.notation#_82d0IOiGEeCNXKwlBzXqfA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.notation
new file mode 100644
index 00000000000..5c943021045
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.notation
@@ -0,0 +1,669 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML">
+ <notation:Diagram xmi:id="_WxLIEOVlEeC9WYPftC2-Gw" type="CompositeStructure" name="ConnectorTrafo" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_ZRRtUOVlEeC9WYPftC2-Gw" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZRS7cOVlEeC9WYPftC2-Gw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZRS7ceVlEeC9WYPftC2-Gw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZRTigOVlEeC9WYPftC2-Gw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZRTigeVlEeC9WYPftC2-Gw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZRTiguVlEeC9WYPftC2-Gw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZRTig-VlEeC9WYPftC2-Gw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZRTihOVlEeC9WYPftC2-Gw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZRUJkOVlEeC9WYPftC2-Gw" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_d3OkwOVlEeC9WYPftC2-Gw" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d3PL0OVlEeC9WYPftC2-Gw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d3PL0eVlEeC9WYPftC2-Gw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d3Py4OVlEeC9WYPftC2-Gw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d3Py4eVlEeC9WYPftC2-Gw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d3Py4uVlEeC9WYPftC2-Gw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d3Py4-VlEeC9WYPftC2-Gw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d3Py5OVlEeC9WYPftC2-Gw" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_d3Py5eVlEeC9WYPftC2-Gw" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_d3Py5uVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d3Py5-VlEeC9WYPftC2-Gw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kx-wYOVlEeC9WYPftC2-Gw" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kx_XcOVlEeC9WYPftC2-Gw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kx_-gOVlEeC9WYPftC2-Gw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kx_-geVlEeC9WYPftC2-Gw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kx_-guVlEeC9WYPftC2-Gw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kx_-g-VlEeC9WYPftC2-Gw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kx_-hOVlEeC9WYPftC2-Gw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kx_-heVlEeC9WYPftC2-Gw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yIuvEOVlEeC9WYPftC2-Gw" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y_KtYNJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kx_-huVlEeC9WYPftC2-Gw" x="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kyAlkOVlEeC9WYPftC2-Gw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kyAlkeVlEeC9WYPftC2-Gw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_kw0SwOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kx-wYeVlEeC9WYPftC2-Gw" x="-10" y="36" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-qK7gOiIEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-qLikOiIEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-qLikeiIEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-qMJoOiIEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-qMJoeiIEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-qMJouiIEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-qMJo-iIEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-qMJpOiIEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__2VzsOiIEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zZ6vsNJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-qMJpeiIEeCNXKwlBzXqfA" x="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-qMwsOiIEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-qMwseiIEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_-p_8YOiIEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-qK7geiIEeCNXKwlBzXqfA" x="108" y="36" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Property" href="ec3m-transformations.uml#_d2xRwOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d3OkweVlEeC9WYPftC2-Gw" x="184" y="11" width="118" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7rv9cOVlEeC9WYPftC2-Gw" type="3097" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7rxLkOVlEeC9WYPftC2-Gw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7rxLkeVlEeC9WYPftC2-Gw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7rxyoOVlEeC9WYPftC2-Gw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7rxyoeVlEeC9WYPftC2-Gw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7rxyouVlEeC9WYPftC2-Gw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7ryZsOVlEeC9WYPftC2-Gw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7ryZseVlEeC9WYPftC2-Gw" type="5150"/>
+ <element xmi:type="uml:Comment" href="ec3m-transformations.uml#_7q3zsOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7rv9ceVlEeC9WYPftC2-Gw" x="31" y="83" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DFSKAOiLEeCNXKwlBzXqfA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DFSxEOiLEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DFSxEeiLEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DFTYIOiLEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DFTYIeiLEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DFTYIuiLEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DFTYI-iLEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DFTYJOiLEeCNXKwlBzXqfA" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DFTYJeiLEeCNXKwlBzXqfA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DFT_MOiLEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DFT_MeiLEeCNXKwlBzXqfA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JDvsgOiLEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JDwTkOiLEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JDwTkeiLEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JDwTkuiLEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JDwTk-iLEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JDw6oOiLEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JDw6oeiLEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JDw6ouiLEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SB4FIOiLEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0NStYNJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JDw6o-iLEeCNXKwlBzXqfA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JDw6pOiLEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JDw6peiLEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_JDi4MOiLEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JDvsgeiLEeCNXKwlBzXqfA" x="-10" y="36" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Property" href="ec3m-transformations.uml#_DFHK4OiLEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DFSKAeiLEeCNXKwlBzXqfA" x="184" y="119" width="118" height="64"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZRUwoOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZRUwoeVlEeC9WYPftC2-Gw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_n0Sq0OVlEeC9WYPftC2-Gw" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_n0T48OVlEeC9WYPftC2-Gw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n0T48eVlEeC9WYPftC2-Gw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_n0UgAOVlEeC9WYPftC2-Gw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n0UgAeVlEeC9WYPftC2-Gw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_n0UgAuVlEeC9WYPftC2-Gw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n0UgA-VlEeC9WYPftC2-Gw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_n0UgBOVlEeC9WYPftC2-Gw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xfu1YOVlEeC9WYPftC2-Gw" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1WfKENJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_n0VHEOVlEeC9WYPftC2-Gw" x="19" y="-9"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_n0VHEeVlEeC9WYPftC2-Gw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_n0VHEuVlEeC9WYPftC2-Gw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_n0KH8OVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_n0Sq0eVlEeC9WYPftC2-Gw" x="-10" y="72" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xIwk8OiIEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xIxzEOiIEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xIxzEeiIEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xIxzEuiIEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xIxzE-iIEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xIxzFOiIEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xIyaIOiIEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xIyaIeiIEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AbcE0OiJEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zyQ-QNJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xIyaIuiIEeCNXKwlBzXqfA" x="-27" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xIyaI-iIEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xIyaJOiIEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_xHVBkOiIEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xIwk8eiIEeCNXKwlBzXqfA" x="360" y="72" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="ec3m-transformations.uml#_ZPvcQOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZRRtUeVlEeC9WYPftC2-Gw" x="324" y="36" width="370" height="226"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YY1AIOiLEeCNXKwlBzXqfA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YY2OQOiLEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YY2OQeiLEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YY2OQuiLEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YY2OQ-iLEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YY2OROiLEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YY21UOiLEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YY21UeiLEeCNXKwlBzXqfA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_YY21UuiLEeCNXKwlBzXqfA" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_YY21U-iLEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YY21VOiLEeCNXKwlBzXqfA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZiglAOiLEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZihMEOiLEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZihMEeiLEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZihMEuiLEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZihME-iLEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZihzIOiLEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZihzIeiLEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZihzIuiLEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c4aJ0OiLEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2X9OINJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZihzI-iLEeCNXKwlBzXqfA" x="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZihzJOiLEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZihzJeiLEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_kw0SwOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZiglAeiLEeCNXKwlBzXqfA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZiiaMOiLEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZijBQOiLEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZijBQeiLEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZijBQuiLEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZijoUOiLEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZijoUeiLEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZijoUuiLEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZijoU-iLEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dezbcOiLEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_17k0INJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZijoVOiLEeCNXKwlBzXqfA" x="-25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZijoVeiLEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZikPYOiLEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_-p_8YOiIEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZiiaMeiLEeCNXKwlBzXqfA" x="124" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="ec3m-transformations.uml#_ifnFIOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YY1AIeiLEeCNXKwlBzXqfA" x="90" y="81" width="134" height="68"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xHBYMOiLEeCNXKwlBzXqfA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xHCmUOiLEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xHCmUeiLEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xHCmUuiLEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xHCmU-iLEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xHCmVOiLEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xHDNYOiLEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xHDNYeiLEeCNXKwlBzXqfA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ec3m-transformations.uml#_xG0j4OiLEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xHB_QOiLEeCNXKwlBzXqfA" x="129" y="183" width="124"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_WxLIEeVlEeC9WYPftC2-Gw"/>
+ <element xmi:type="uml:Model" href="ec3m-transformations.uml#_ThOaQOVlEeC9WYPftC2-Gw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_veYosOVlEeC9WYPftC2-Gw" type="4013" source="_kx-wYOVlEeC9WYPftC2-Gw" target="_n0Sq0OVlEeC9WYPftC2-Gw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vebE8OVlEeC9WYPftC2-Gw" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vebE8eVlEeC9WYPftC2-Gw" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vebE8uVlEeC9WYPftC2-Gw" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vebE8-VlEeC9WYPftC2-Gw" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vebsAOVlEeC9WYPftC2-Gw" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vebsAeVlEeC9WYPftC2-Gw" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vebsAuVlEeC9WYPftC2-Gw" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vebsA-VlEeC9WYPftC2-Gw" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_veYoseVlEeC9WYPftC2-Gw" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ec3m-transformations.uml#_vdVf0OVlEeC9WYPftC2-Gw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_veYosuVlEeC9WYPftC2-Gw" points="[-3, -1, 162, 20]$[-163, -21, 2, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ve4X8OVlEeC9WYPftC2-Gw" id="(0.15,0.15)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ve4X8eVlEeC9WYPftC2-Gw" id="(0.9,0.55)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__hpQ8OVlEeC9WYPftC2-Gw" type="4002" source="_7rv9cOVlEeC9WYPftC2-Gw" target="_veYosOVlEeC9WYPftC2-Gw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="__hpQ8eVlEeC9WYPftC2-Gw" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__hpQ8uVlEeC9WYPftC2-Gw" points="[9, -30, 2, 17]$[9, -47, 2, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__h5voOVlEeC9WYPftC2-Gw" id="(0.5508021390374331,0.5238095238095238)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7DQNQOiKEeCNXKwlBzXqfA" type="4013" source="_xIwk8OiIEeCNXKwlBzXqfA" target="_-qK7gOiIEeCNXKwlBzXqfA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7DQ0UOiKEeCNXKwlBzXqfA" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7DQ0UeiKEeCNXKwlBzXqfA" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7DQ0UuiKEeCNXKwlBzXqfA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7DQ0U-iKEeCNXKwlBzXqfA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7DQ0VOiKEeCNXKwlBzXqfA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7DQ0VeiKEeCNXKwlBzXqfA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7DQ0VuiKEeCNXKwlBzXqfA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7DQ0V-iKEeCNXKwlBzXqfA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_7DQNQeiKEeCNXKwlBzXqfA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ec3m-transformations.uml#_7DHDUOiKEeCNXKwlBzXqfA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7DQNQuiKEeCNXKwlBzXqfA" points="[-3, 0, 109, -11]$[-109, 11, 3, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7DjIMOiKEeCNXKwlBzXqfA" id="(0.15,0.35)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7DjIMeiKEeCNXKwlBzXqfA" id="(0.85,0.55)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1bTQ0OiLEeCNXKwlBzXqfA" type="4002" source="_xHBYMOiLEeCNXKwlBzXqfA" target="_YY1AIOiLEeCNXKwlBzXqfA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_1bT34OiLEeCNXKwlBzXqfA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1bT34eiLEeCNXKwlBzXqfA" points="[-1, -1, 30, 68]$[7, -35, 38, 34]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1brEQOiLEeCNXKwlBzXqfA" id="(0.47580645161290325,0.016666666666666666)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_82d0IOiGEeCNXKwlBzXqfA" type="CompositeStructure" name="ContainerTrafo" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_RAMigOiHEeCNXKwlBzXqfA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RANJkOiHEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RANJkeiHEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RANJkuiHEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RANJk-iHEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RANJlOiHEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RANJleiHEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RANwoOiHEeCNXKwlBzXqfA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RANwoeiHEeCNXKwlBzXqfA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_SobroOiHEeCNXKwlBzXqfA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SocSsOiHEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Soc5wOiHEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Soc5weiHEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Soc5wuiHEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Soc5w-iHEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Soc5xOiHEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Soc5xeiHEeCNXKwlBzXqfA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6SHWkNJuEeGZnf36xvOG8w" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6SH9oNJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Soc5xuiHEeCNXKwlBzXqfA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Soc5x-iHEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Soc5yOiHEeCNXKwlBzXqfA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_v59PgOiIEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v592kOiIEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v592keiIEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v592kuiIEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v592k-iIEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v592lOiIEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v592leiIEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_v592luiIEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I4tzIOiJEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7J89gNJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_v592l-iIEeCNXKwlBzXqfA" x="-18" y="1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_v5-doOiIEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_v5-doeiIEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_kw0SwOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v59PgeiIEeCNXKwlBzXqfA" x="99" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ec3m-transformations.uml#_SoTIwOiHEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SobroeiHEeCNXKwlBzXqfA" x="49" y="12" width="109" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kAhjYOiIEeCNXKwlBzXqfA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kAjYkOiIEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kAjYkeiIEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kAjYkuiIEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kAjYk-iIEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kAjYlOiIEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kAjYleiIEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kAjYluiIEeCNXKwlBzXqfA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_32zKsNJuEeGZnf36xvOG8w" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_32zxwNJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kAj_oOiIEeCNXKwlBzXqfA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_kAj_oeiIEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kAj_ouiIEeCNXKwlBzXqfA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EI0VgOiJEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EI0VguiJEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EI08kOiJEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EI08keiJEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EI08kuiJEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EI08k-iJEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EI08lOiJEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EI08leiJEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JYjJwOiJEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6sHK8NJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EI08luiJEeCNXKwlBzXqfA" x="28" y="1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EI08l-iJEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EI08mOiJEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_-p_8YOiIEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EI0VgeiJEeCNXKwlBzXqfA" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ec3m-transformations.uml#_kAQdoOiIEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kAhjYeiIEeCNXKwlBzXqfA" x="301" y="12" width="114" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mHV0AOiKEeCNXKwlBzXqfA" type="3097" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mHWbEOiKEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mHXCIOiKEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mHXCIeiKEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mHXCIuiKEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mHXCI-iKEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mHXCJOiKEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mHXCJeiKEeCNXKwlBzXqfA" type="5150"/>
+ <element xmi:type="uml:Comment" href="ec3m-transformations.uml#_mGQ18OiKEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mHV0AeiKEeCNXKwlBzXqfA" x="112" y="93" width="280" height="28"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RANwouiHEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RANwo-iHEeCNXKwlBzXqfA"/>
+ </children>
+ <element xmi:type="uml:Class" href="ec3m-transformations.uml#_RAF00OiHEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RAMigeiHEeCNXKwlBzXqfA" x="198" y="107" width="487" height="155"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WFO3wOiJEeCNXKwlBzXqfA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WFPe0OiJEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WFPe0eiJEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WFPe0uiJEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WFQF4OiJEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WFQF4eiJEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WFQF4uiJEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WFQF4-iJEeCNXKwlBzXqfA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WFQF5OiJEeCNXKwlBzXqfA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_YYmokOiJEeCNXKwlBzXqfA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YYnPoOiJEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YYn2sOiJEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YYn2seiJEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YYn2suiJEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YYn2s-iJEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YYn2tOiJEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YYn2teiJEeCNXKwlBzXqfA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5h4McNJuEeGZnf36xvOG8w" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5h4zgNJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_YYodwOiJEeCNXKwlBzXqfA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_YYodweiJEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YYodwuiJEeCNXKwlBzXqfA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ig2q8OiJEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ig3SAOiJEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ig3SAeiJEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ig3SAuiJEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ig3SA-iJEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ig3SBOiJEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ig35EOiJEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ig35EeiJEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1ZMC4OiJEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1ZMC4eiJEeCNXKwlBzXqfA" key="CustomAppearance_MaskValue" value="46"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ig35EuiJEeCNXKwlBzXqfA" x="-42"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ig35E-iJEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ig35FOiJEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_kw0SwOVlEeC9WYPftC2-Gw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ig2q8eiJEeCNXKwlBzXqfA" x="96" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ec3m-transformations.uml#_YYcQgOiJEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YYmokeiJEeCNXKwlBzXqfA" x="13" y="11" width="106" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_c_hJUOiJEeCNXKwlBzXqfA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c_iXcOiJEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c_iXceiJEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c_iXcuiJEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c_iXc-iJEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c_i-gOiJEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c_i-geiJEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_c_i-guiJEeCNXKwlBzXqfA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4XbykNJuEeGZnf36xvOG8w" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4XbykdJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_c_i-g-iJEeCNXKwlBzXqfA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_c_i-hOiJEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c_i-heiJEeCNXKwlBzXqfA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jSyeMOiJEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jSyeMuiJEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jSyeM-iJEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jSzFQOiJEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jSzFQeiJEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jSzFQuiJEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jSzFQ-iJEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jSzFROiJEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_01PBQOiJEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_09ciEOiJEeCNXKwlBzXqfA" key="CustomAppearance_MaskValue" value="46"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jSzFReiJEeCNXKwlBzXqfA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jSzFRuiJEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jSzFR-iJEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_-p_8YOiIEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jSyeMeiJEeCNXKwlBzXqfA" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ec3m-transformations.uml#_c_XYUOiJEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c_hJUeiJEeCNXKwlBzXqfA" x="355" y="11" width="108" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5yKOQOiJEeCNXKwlBzXqfA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5yK1UOiJEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5yLcYOiJEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5yLcYeiJEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5yLcYuiJEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5yLcY-iJEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5yLcZOiJEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5yLcZeiJEeCNXKwlBzXqfA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_49TfwNJuEeGZnf36xvOG8w" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_49TfwdJuEeGZnf36xvOG8w" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5yMDcOiJEeCNXKwlBzXqfA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5yMDceiJEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5yMDcuiJEeCNXKwlBzXqfA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FxK98OiKEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FxLlAOiKEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FxLlAeiKEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FxMMEOiKEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FxMMEeiKEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FxMMEuiKEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FxMME-iKEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FxMMFOiKEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UUh5sOiKEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UUh5seiKEeCNXKwlBzXqfA" key="CustomAppearance_MaskValue" value="46"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FxMMFeiKEeCNXKwlBzXqfA" x="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FxMMFuiKEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FxMzIOiKEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_Fw-wsOiKEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FxK98eiKEeCNXKwlBzXqfA" x="-10" y="37" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JZZo4OiKEeCNXKwlBzXqfA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JZaP8OiKEeCNXKwlBzXqfA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JZaP8eiKEeCNXKwlBzXqfA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JZaP8uiKEeCNXKwlBzXqfA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JZaP8-iKEeCNXKwlBzXqfA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JZaP9OiKEeCNXKwlBzXqfA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JZaP9eiKEeCNXKwlBzXqfA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JZaP9uiKEeCNXKwlBzXqfA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U2jBoOiKEeCNXKwlBzXqfA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U2josOiKEeCNXKwlBzXqfA" key="CustomAppearance_MaskValue" value="46"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JZaP9-iKEeCNXKwlBzXqfA" x="-45"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JZaP-OiKEeCNXKwlBzXqfA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JZaP-eiKEeCNXKwlBzXqfA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ec3m-transformations.uml#_JZNboOiKEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JZZo4eiKEeCNXKwlBzXqfA" x="117" y="37" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Property" href="ec3m-transformations.uml#_5x_2MOiJEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5yKOQeiJEeCNXKwlBzXqfA" x="175" y="10" width="127" height="65"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WFQF5eiJEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WFQF5uiJEeCNXKwlBzXqfA"/>
+ </children>
+ <element xmi:type="uml:Class" href="ec3m-transformations.uml#_WFCqgOiJEeCNXKwlBzXqfA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WFO3weiJEeCNXKwlBzXqfA" x="198" y="297" width="487" height="118"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_82d0IeiGEeCNXKwlBzXqfA"/>
+ <element xmi:type="uml:Model" href="ec3m-transformations.uml#_ThOaQOVlEeC9WYPftC2-Gw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_P2T3YOiJEeCNXKwlBzXqfA" type="4013" source="_v59PgOiIEeCNXKwlBzXqfA" target="_EI0VgOiJEeCNXKwlBzXqfA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_P2UecOiJEeCNXKwlBzXqfA" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P2UeceiJEeCNXKwlBzXqfA" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P2UecuiJEeCNXKwlBzXqfA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P2Uec-iJEeCNXKwlBzXqfA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P2UedOiJEeCNXKwlBzXqfA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P2UedeiJEeCNXKwlBzXqfA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P2UeduiJEeCNXKwlBzXqfA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_P2Ued-iJEeCNXKwlBzXqfA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_P2T3YeiJEeCNXKwlBzXqfA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ec3m-transformations.uml#_P05iIOiJEeCNXKwlBzXqfA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_P2T3YuiJEeCNXKwlBzXqfA" points="[10, -3, -133, -2]$[138, -11, -5, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_TkarYOiKEeCNXKwlBzXqfA" type="4013" source="_ig2q8OiJEeCNXKwlBzXqfA" target="_FxK98OiKEeCNXKwlBzXqfA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TkbScOiKEeCNXKwlBzXqfA" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TkbSceiKEeCNXKwlBzXqfA" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TkbScuiKEeCNXKwlBzXqfA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TkbSc-iKEeCNXKwlBzXqfA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TkbSdOiKEeCNXKwlBzXqfA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TkbSdeiKEeCNXKwlBzXqfA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Tkb5gOiKEeCNXKwlBzXqfA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Tkb5geiKEeCNXKwlBzXqfA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_TkarYeiKEeCNXKwlBzXqfA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ec3m-transformations.uml#_TkTWoOiKEeCNXKwlBzXqfA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TkarYuiKEeCNXKwlBzXqfA" points="[3, 0, -39, 0]$[39, -1, -3, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TkwCkOiKEeCNXKwlBzXqfA" id="(0.85,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TkwCkeiKEeCNXKwlBzXqfA" id="(0.15,0.4)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_dV3XUOiKEeCNXKwlBzXqfA" type="4013" source="_JZZo4OiKEeCNXKwlBzXqfA" target="_jSyeMOiJEeCNXKwlBzXqfA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dV3-YOiKEeCNXKwlBzXqfA" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dV4lcOiKEeCNXKwlBzXqfA" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dV4lceiKEeCNXKwlBzXqfA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dV4lcuiKEeCNXKwlBzXqfA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dV4lc-iKEeCNXKwlBzXqfA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dV4ldOiKEeCNXKwlBzXqfA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dV4ldeiKEeCNXKwlBzXqfA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dV4lduiKEeCNXKwlBzXqfA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dV3XUeiKEeCNXKwlBzXqfA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ec3m-transformations.uml#_dVwpoOiKEeCNXKwlBzXqfA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dV3XUuiKEeCNXKwlBzXqfA" points="[3, -1, -34, 0]$[36, -2, -1, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dWJrMOiKEeCNXKwlBzXqfA" id="(0.85,0.45)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dWKSQOiKEeCNXKwlBzXqfA" id="(0.05,0.4)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0aKZYOiKEeCNXKwlBzXqfA" type="4002" source="_mHV0AOiKEeCNXKwlBzXqfA" target="_P2T3YOiJEeCNXKwlBzXqfA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_0aKZYeiKEeCNXKwlBzXqfA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0aKZYuiKEeCNXKwlBzXqfA" points="[0, -1, -19, 44]$[22, -45, 3, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0aaRAOiKEeCNXKwlBzXqfA" id="(0.4748201438848921,0.016666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0aaRAeiKEeCNXKwlBzXqfA" id="(0.6,0.4634146341463415)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.uml
new file mode 100644
index 00000000000..30494c484ee
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/model/ec3m-transformations.uml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML" xmi:id="_ThOaQOVlEeC9WYPftC2-Gw" name="model">
+ <ownedComment xmi:id="_xG0j4OiLEeCNXKwlBzXqfA" annotatedElement="_ifnFIOVlEeC9WYPftC2-Gw">
+ <body>Declarative information about container elements</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ZPvcQOVlEeC9WYPftC2-Gw" name="Container_C">
+ <ownedComment xmi:id="_7q3zsOVlEeC9WYPftC2-Gw" annotatedElement="_vdVf0OVlEeC9WYPftC2-Gw">
+ <body>Delegation connector: interception</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_d2xRwOVlEeC9WYPftC2-Gw" name="executor" visibility="public" type="_ifnFIOVlEeC9WYPftC2-Gw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ev-xsOVlEeC9WYPftC2-Gw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_evaxAOVlEeC9WYPftC2-Gw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ewV-EOVlEeC9WYPftC2-Gw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_n0KH8OVlEeC9WYPftC2-Gw" name="p" visibility="public" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_obo-sOVlEeC9WYPftC2-Gw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_obfNsOVlEeC9WYPftC2-Gw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_odGXQOVlEeC9WYPftC2-Gw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_xHVBkOiIEeCNXKwlBzXqfA" name="q" visibility="public" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6SdUYOiIEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6QJnQOiIEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6S6nYOiIEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_DFHK4OiLEeCNXKwlBzXqfA" name="ext" visibility="public" type="_GWHBkOiLEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F9-OYOiLEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F9BzMOiLEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_F_htkOiLEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_vdVf0OVlEeC9WYPftC2-Gw" name="Connector0">
+ <end xmi:id="_vdWt8OVlEeC9WYPftC2-Gw" role="_kw0SwOVlEeC9WYPftC2-Gw" partWithPort="_d2xRwOVlEeC9WYPftC2-Gw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vdWt8eVlEeC9WYPftC2-Gw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vdWt8uVlEeC9WYPftC2-Gw" value="1"/>
+ </end>
+ <end xmi:id="_vdX8EOVlEeC9WYPftC2-Gw" role="_n0KH8OVlEeC9WYPftC2-Gw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vdX8EeVlEeC9WYPftC2-Gw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vdX8EuVlEeC9WYPftC2-Gw" value="1"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_7DHDUOiKEeCNXKwlBzXqfA" name="Connector1">
+ <end xmi:id="_7DHqYOiKEeCNXKwlBzXqfA" role="_xHVBkOiIEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7DHqYeiKEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7DHqYuiKEeCNXKwlBzXqfA" value="1"/>
+ </end>
+ <end xmi:id="_7DHqY-iKEeCNXKwlBzXqfA" role="_-p_8YOiIEeCNXKwlBzXqfA" partWithPort="_d2xRwOVlEeC9WYPftC2-Gw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7DHqZOiKEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7DHqZeiKEeCNXKwlBzXqfA" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ifnFIOVlEeC9WYPftC2-Gw" name="C">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_kw0SwOVlEeC9WYPftC2-Gw" name="p" visibility="public" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mNCZIOVlEeC9WYPftC2-Gw" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mMrz0OVlEeC9WYPftC2-Gw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_mORIMOVlEeC9WYPftC2-Gw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_-p_8YOiIEeCNXKwlBzXqfA" name="q" visibility="public" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__EjKYOiIEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__EW9IOiIEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__E8L8OiIEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__1qwMOiGEeCNXKwlBzXqfA" name="Class0"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_RAF00OiHEeCNXKwlBzXqfA" name="Composite">
+ <ownedComment xmi:id="_mGQ18OiKEeCNXKwlBzXqfA" annotatedElement="_P05iIOiJEeCNXKwlBzXqfA">
+ <body>Additional information about interaction component</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_SoTIwOiHEeCNXKwlBzXqfA" name="c1" visibility="public" type="_ifnFIOVlEeC9WYPftC2-Gw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sMQ1wOiIEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sLsOAOiIEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sMvW4OiIEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_kAQdoOiIEeCNXKwlBzXqfA" name="c2" visibility="public" type="_ifnFIOVlEeC9WYPftC2-Gw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_towo8OiIEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_togKQOiIEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_tpqA0OiIEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_P05iIOiJEeCNXKwlBzXqfA" name="Connector0">
+ <end xmi:id="_P06JMOiJEeCNXKwlBzXqfA" role="_kw0SwOVlEeC9WYPftC2-Gw" partWithPort="_SoTIwOiHEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P06JMeiJEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P06JMuiJEeCNXKwlBzXqfA" value="1"/>
+ </end>
+ <end xmi:id="_P06wQOiJEeCNXKwlBzXqfA" role="_-p_8YOiIEeCNXKwlBzXqfA" partWithPort="_kAQdoOiIEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_P06wQeiJEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_P06wQuiJEeCNXKwlBzXqfA" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_WFCqgOiJEeCNXKwlBzXqfA" name="Composite'">
+ <ownedAttribute xmi:id="_YYcQgOiJEeCNXKwlBzXqfA" name="c1" visibility="public" type="_ifnFIOVlEeC9WYPftC2-Gw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cVVj4OiJEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cVO2MOiJEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_cWO7wOiJEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_c_XYUOiJEeCNXKwlBzXqfA" name="c2" visibility="public" type="_ifnFIOVlEeC9WYPftC2-Gw">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dM_koOiJEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dM4P4OiJEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dNQDUOiJEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_5x_2MOiJEeCNXKwlBzXqfA" name="conn" visibility="public" type="_84j-gOiJEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6AJm8OiJEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6AAdAOiJEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6Aj2oOiJEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_TkTWoOiKEeCNXKwlBzXqfA" name="Connector0">
+ <end xmi:id="_TkTWoeiKEeCNXKwlBzXqfA" role="_kw0SwOVlEeC9WYPftC2-Gw" partWithPort="_YYcQgOiJEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TkTWouiKEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TkTWo-iKEeCNXKwlBzXqfA" value="1"/>
+ </end>
+ <end xmi:id="_TkT9sOiKEeCNXKwlBzXqfA" role="_Fw-wsOiKEeCNXKwlBzXqfA" partWithPort="_5x_2MOiJEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TkT9seiKEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TkT9suiKEeCNXKwlBzXqfA" value="1"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_dVwpoOiKEeCNXKwlBzXqfA" name="Connector1">
+ <end xmi:id="_dVwpoeiKEeCNXKwlBzXqfA" role="_JZNboOiKEeCNXKwlBzXqfA" partWithPort="_5x_2MOiJEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dVwpouiKEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dVwpo-iKEeCNXKwlBzXqfA" value="1"/>
+ </end>
+ <end xmi:id="_dVwppOiKEeCNXKwlBzXqfA" role="_-p_8YOiIEeCNXKwlBzXqfA" partWithPort="_c_XYUOiJEeCNXKwlBzXqfA">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dVwppeiKEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dVwppuiKEeCNXKwlBzXqfA" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_84j-gOiJEeCNXKwlBzXqfA" name="Conn">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_Fw-wsOiKEeCNXKwlBzXqfA" name="pc" visibility="public" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_It1jYOiKEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ItsZcOiKEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IuSPUOiKEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_JZNboOiKEeCNXKwlBzXqfA" name="qc" visibility="public" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KDAmkOiKEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KC21kOiKEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_KDd5kOiKEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_GWHBkOiLEeCNXKwlBzXqfA" name="Extension">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_JDi4MOiLEeCNXKwlBzXqfA" name="r" visibility="public" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ROA_QOiLEeCNXKwlBzXqfA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RNFyMOiLEeCNXKwlBzXqfA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_RPiCMOiLEeCNXKwlBzXqfA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+</uml:Model>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/plugin.properties
new file mode 100644
index 00000000000..1fccb2ec96f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass designer documentation (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/plugin.xml
new file mode 100644
index 00000000000..860a13a3743
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension point="org.eclipse.ui.cheatsheets.cheatSheetContent">
+ <category
+ id="org.eclipse.papyrus.qompass.designer.cheatsheet.category"
+ name="Qompass cheatsheets">
+ </category>
+ <cheatsheet
+ category="org.eclipse.papyrus.qompass.designer.cheatsheet.category"
+ composite="true"
+ contentFile="cheatsheet/Main.xml"
+ id="org.eclipse.papyrus.qompass.designer.cheatsheet.application"
+ name="Create an Qompass application">
+ </cheatsheet>
+ <cheatsheet
+ category="org.eclipse.papyrus.qompass.designer.cheatsheet.category"
+ composite="true"
+ contentFile="cheatsheet/MarteMain.xml"
+ id="org.eclipse.papyrus.qompass.designer.cheatsheet.applicationMARTE"
+ name="Create an Qompass application with MARTE">
+ </cheatsheet>
+ </extension>
+ <extension point="org.eclipse.help.toc">
+ <toc file="toc.xml" primary="true"/>
+ <toc file="help/tocconcepts.xml"/>
+ <toc file="help/tocreference.xml"/>
+ <toc file="help/tocdevguide.xml"/>
+ </extension>
+</plugin>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/src/org/eclipse/papyrus/qompass/designer/doc/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/src/org/eclipse/papyrus/qompass/designer/doc/Activator.java
new file mode 100644
index 00000000000..47fc3a5cd50
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/src/org/eclipse/papyrus/qompass/designer/doc/Activator.java
@@ -0,0 +1,51 @@
+package org.eclipse.papyrus.qompass.designer.doc;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.designer.help"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/toc.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/toc.xml
new file mode 100644
index 00000000000..1f47f46e81f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.doc/toc.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Qompass Designer User Guide">
+ <topic label="Concepts">
+ <anchor id="concepts"/>
+ </topic>
+ <topic label="Reference">
+ <anchor id="reference"/>
+ </topic>
+ <topic label="Samples">
+ <anchor id="samples"/>
+ </topic>
+ <topic label="Developer Guide">
+ <anchor id="devguide"/>
+ </topic>
+ <topic label="MARTE mapping">
+ <anchor id="marte"/>
+ </topic>
+ <topic label="Qompass model libraries">
+ <anchor id="modellibs"/>
+ </topic>
+</toc>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/.project
new file mode 100644
index 00000000000..896877fb61f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.designer.validation</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..941830bcc48
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.validation;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.designer.validation.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.uml2.uml;bundle-version="3.0.1",
+ org.eclipse.emf.validation;bundle-version="1.3.0",
+ org.eclipse.papyrus.qompass.designer.core;bundle-version="0.9.2",
+ org.eclipse.papyrus.fcm.profile;bundle-version="0.9.2",
+ org.eclipse.ui
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/build.properties
new file mode 100644
index 00000000000..7e0424de989
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ .classpath,\
+ .project,\
+ .settings/,\
+ about.html,\
+ icons/,\
+ plugin.properties
+src.includes = about.html
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/icons/validate.gif b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/icons/validate.gif
new file mode 100644
index 00000000000..6efaebec95b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/icons/validate.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/plugin.properties
new file mode 100644
index 00000000000..348b2b9b363
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass designer validation rules (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/plugin.xml
new file mode 100644
index 00000000000..7b5be9faa2e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/plugin.xml
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.emf.validation.constraintProviders">
+ <category
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints"
+ name="Qompass rules">
+ </category>
+ <constraintProvider
+ mode="Batch">
+ <package
+ namespaceUri="http://www.eclipse.org/uml2/3.0.0/UML">
+ </package>
+ <package
+ namespaceUri="http://www.eclipse.org/uml2/4.0.0/UML">
+ </package>
+ <constraints
+ categories="org.eclipse.papyrus.qompass.designer.validation.constraints">
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.SystemHasNoPorts"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.SystemHasNoPorts_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.SystemHasNoPorts"
+ severity="ERROR"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ The system component (main instance within deployment plan) may not have ports.
+ </description>
+ <target
+ class="Package">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.InstanceSpecificationSlotForAllProperties"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.InstanceSpecificationSlotForAllProperties_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.InstanceSpecificationSlotForAllProperties"
+ severity="WARNING"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ Is there a slot for all properties of a component within an instance specification?
+ </description>
+ <target
+ class="InstanceSpecification">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.ConnectorCallMultiplicity"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.ConnectorCallMultiplicity_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.ConnectorCallMultiplicity"
+ severity="WARNING"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ Verify that a connection does not originate from a caller with to a server with the server multiplicity > 1
+ </description>
+ <target
+ class="Property">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.InitialEntryPoints"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.InitialEntryPoints_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.InitialEntryPoints"
+ severity="WARNING"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ Verify that at exactly one blocking start routine is defined.
+ </description>
+ <target
+ class="Package">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.UnconnectedProvPorts"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.UnconnectedProvPorts_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.UnconnectedProvPorts"
+ severity="INFO"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ unconnected provided port
+ </description>
+ <target
+ class="Property">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.UnconnectedReqPorts"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.UnconnectedReqPorts_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.UnconnectedReqPorts"
+ severity="INFO"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ unconnected provided port
+ </description>
+ <target
+ class="Property">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.OperationsAreImplemented"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.OperationsAreImplemented_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.OperationsAreImplemented"
+ severity="WARNING"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ Operation is not implemented
+ </description>
+ <target
+ class="Class">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.PortIsCorrectlyTyped"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.PortIsCorrectlyTyped_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.PortIsCorrectlyTyped"
+ severity="ERROR"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ Port is not correctly typed
+ </description>
+ <target
+ class="Port">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.BehaviorsWithoutSpecification"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.BehaviorsWithoutSpecification_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.BehaviorsWithoutSpecification"
+ severity="WARNING"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ Behavior without specification
+ </description>
+ <target
+ class="OpaqueBehavior">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.ConnectorConnectable"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.ConnectorConnectable_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.ConnectorConnectable"
+ severity="WARNING"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ Verify that a connector can be instantiated, i.e. a consistent connector binding can be found.
+ </description>
+ <target
+ class="Connector">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.AggregationKindValid"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.AggregationKindValid_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.AggregationKindValid"
+ severity="WARNING"
+ statusCode="1">
+ <message>
+ &quot;Qompass: {0}&quot;
+ </message>
+ <description>
+ Check whether aggregation kind is consistent with singleton information
+ </description>
+ <target
+ class="Property">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.ConfigurationAttributeNotSet"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.ConfigurationAttributeNotSet_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.ConfigurationAttributeNotSet"
+ severity="WARNING"
+ statusCode="1">
+ <message>
+ "Qompass: {0}"
+ </message>
+ <description>
+ Check whether configuration attributes have a value in the deployment plans
+ </description>
+ <target
+ class="Slot">
+ </target>
+ </constraint>
+ <constraint
+ class="org.eclipse.papyrus.qompass.designer.validation.constraints.OperationsWithTwoReturnValues"
+ id="org.eclipse.papyrus.qompass.designer.validation.constraints.OperationsWithTwoReturnValues_ID"
+ lang="Java"
+ mode="Batch"
+ name="org.eclipse.papyrus.qompass.designer.validation.constraints.OperationsWithTwoReturnValues"
+ severity="ERROR"
+ statusCode="1">
+ <message>
+ "Qompass: {0}"
+ </message>
+ <description>
+ Check whether an operation contains more than one return parameter
+ </description>
+ <target
+ class="Operation">
+ </target>
+ </constraint>
+ </constraints>
+ </constraintProvider>
+ </extension>
+ <extension
+ point="org.eclipse.emf.validation.constraintBindings">
+ <clientContext
+ default="false"
+ id="org.eclipse.papyrus.qompass.designer.validation.context">
+ <selector class="org.eclipse.papyrus.qompass.designer.validation.ValidationDelegateClientSelector"/>
+ </clientContext>
+ <binding
+ context="org.eclipse.papyrus.qompass.designer.validation.context">
+ <category
+ ref="org.eclipse.papyrus.qompass.designer.validation.constraints">
+ </category>
+ </binding>
+ </extension>
+</plugin>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/Activator.java
new file mode 100644
index 00000000000..4243416a9b8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.papyrus.qompass.designer.validation;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.designer.validation";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/ValidationDelegateClientSelector.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/ValidationDelegateClientSelector.java
new file mode 100644
index 00000000000..f5eadb53d96
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/ValidationDelegateClientSelector.java
@@ -0,0 +1,23 @@
+package org.eclipse.papyrus.qompass.designer.validation;
+
+import org.eclipse.emf.validation.model.IClientSelector;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.PackageImport;
+
+public class ValidationDelegateClientSelector implements IClientSelector {
+
+ /**
+ * Queries whether to select the specified object, which indicates that it
+ * belongs to this client context.
+ *
+ * @param object a model element of some kind
+ * @return <code>true</code> if the <code>object</code> matches my client
+ * context; <code>false</code>, otherwise
+ */
+ public boolean selects(Object object) {
+ if (object instanceof PackageImport) {
+ // return false;
+ }
+ return (object instanceof Element);
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/AggregationKindValid.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/AggregationKindValid.java
new file mode 100644
index 00000000000..2dc5e153f16
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/AggregationKindValid.java
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+/**
+ * Verify that aggregation kinds are used well. General rule:
+ * attributes of a components should have aggregation kind "composite" unless
+ * (1) the are singletons (implementation property), i.e. there is exactly one instance.
+ * (2) they are *shared*. In this case an enclosing component has to define a property of same type
+ * and name (open if "same name" restriction is kept, since it implies an implicit relationship
+ * that would break after name changes. But it allows for having multiple shared properties of same type)
+ * [it does not make a difference, whether "aggregation" or "none" is used as aggregation kind]
+ * Alternative? give user a fine control in the instantiation model? Fractal: no need for a single
+ * composed property?
+ *
+ * @author ansgar
+ *
+ */
+public class AggregationKindValid extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate(IValidationContext ctx)
+ {
+ Property attribute = (Property)ctx.getTarget();
+ Type type = attribute.getType();
+ if(type instanceof Class) {
+ AggregationKind aggKind = attribute.getAggregation();
+ if(aggKind != AggregationKind.COMPOSITE_LITERAL) {
+ if(Utils.isSingleton((Class)type)) {
+ // no composition, but not singleton: warn user to make up a proper deployment plan
+ return ctx.createFailureStatus("The attribute '" + attribute.getName() + "' has a non-composition aggregation kind, but the referenced type ('" + type.getName() + "') is not a singleton. The associated instance specifications have to be set-up manually");
+ }
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/BehaviorsWithoutSpecification.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/BehaviorsWithoutSpecification.java
new file mode 100644
index 00000000000..960568df750
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/BehaviorsWithoutSpecification.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+
+/**
+ * Check whether all behaviors have a specification. This happens for instance, if the user
+ * deletes a specification and "forgets" to delete the associated behavior.
+ *
+ * @author ansgar
+ *
+ */
+public class BehaviorsWithoutSpecification extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate(IValidationContext ctx) {
+
+ OpaqueBehavior behavior = (OpaqueBehavior) ctx.getTarget();
+
+ if (behavior.getSpecification () == null) {
+ Element class_ = behavior.getOwner ();
+ if (class_ instanceof NamedElement) {
+ return ctx.createFailureStatus ("The behavior '" + behavior.getName () + "' of '" +
+ ((NamedElement) class_).getQualifiedName() + "' has no specification");
+ }
+ else {
+ return ctx.createFailureStatus ("The behavior '" + behavior.getName () + "' has no specification");
+ }
+ }
+ else {
+ return ctx.createSuccessStatus();
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConfigurationAttributeNotSet.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConfigurationAttributeNotSet.java
new file mode 100644
index 00000000000..4762412fcc5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConfigurationAttributeNotSet.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Slot;
+import org.eclipse.uml2.uml.StructuralFeature;
+
+import FCM.ConfigurationProperty;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+/**
+ * Verify if all configuration attribute have a (user-provided) value.
+ * @author ansgar
+ *
+ * TODO: implementation assumes that at least the slot exists
+ */
+public class ConfigurationAttributeNotSet extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate (IValidationContext ctx)
+ {
+ Slot slot = (Slot) ctx.getTarget();
+ StructuralFeature feature = slot.getDefiningFeature ();
+ if ((feature != null) && (StUtils.isApplied (feature, ConfigurationProperty.class))) {
+ if (slot.getValues ().size () == 0) {
+ return ctx.createFailureStatus ("The attribute '" + feature.getName () + "' is tagged as a configuration property, but the associated slot has no value.");
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConnectorCallMultiplicity.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConnectorCallMultiplicity.java
new file mode 100644
index 00000000000..5b318315b15
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConnectorCallMultiplicity.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+
+/**
+ * Check whether the multiplicity of the ports (of a part) are consistent with the defined connectors, in particular whether a
+ * port with a required interface is not connected with more connectors than its own multiplicity
+ * @author ansgar
+ *
+ * TODO: does not find violation on composite side (partWithPort = null), simplify? (loop over connectors)
+ */
+public class ConnectorCallMultiplicity extends AbstractModelConstraint
+{
+ @Override
+ public IStatus validate (IValidationContext ctx)
+ {
+ String portsStr = "";
+
+ Property part = (Property) ctx.getTarget();
+ Class owner = part.getClass_ ();
+ if (owner != null) {
+ if (part.getType () instanceof Class) {
+ Class class_ = (Class) part.getType ();
+ for (Port port : class_.getOwnedPorts ()) {
+ if (port.getRequireds ().size () > 0) {
+ int connections = 0;
+ for (Connector connector : owner.getOwnedConnectors ()) {
+ if (ConnectorUtils.connectsPort (connector, port)) {
+ connections ++;
+ break;
+ }
+ }
+ if (connections > port.getUpper ()) {
+ if (portsStr.length () != 0) {
+ portsStr += ", ";
+ }
+ portsStr += port.getName ();
+ }
+ }
+ }
+ }
+ }
+ if (portsStr.length () > 0) {
+ return ctx.createFailureStatus ("The port(s) '" + portsStr + "' with a required interface of part '" + part.getName () + "' have more connections than their multiplicty within composite '" + owner.getQualifiedName () + "'");
+
+ }
+ else {
+ return ctx.createSuccessStatus();
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConnectorConnectable.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConnectorConnectable.java
new file mode 100644
index 00000000000..5259c4c23fa
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ConnectorConnectable.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Connector;
+
+import FCM.InteractionComponent;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.templates.ConnectorBinding;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+
+/**
+ * Check whether a connector is connectable, i.e. whether the ports of application parts match with those
+ * of the connector types that are chosen.
+ *
+ * @author ansgar
+ *
+ */
+public class ConnectorConnectable extends AbstractModelConstraint
+{
+
+ @Override
+ public IStatus validate(IValidationContext ctx)
+ {
+ Connector connector = (Connector)ctx.getTarget();
+ Class class_ = (Class)connector.getOwner();
+
+ FCM.Connector fcmConnector = StUtils.getApplication(connector, FCM.Connector.class);
+ if(fcmConnector != null) {
+ InteractionComponent connectorComp = fcmConnector.getIc();
+ if(connectorComp != null) {
+ try {
+ ConnectorBinding.obtainBinding(class_, connector, connectorComp.getBase_Class(), false);
+ } catch (TransformationException e) {
+ return ctx.createFailureStatus("The connector '" + connector.getName() + "' within composite '" + class_.getName() + "' cannot be instantiated: " + e.getMessage());
+ }
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java
new file mode 100644
index 00000000000..9634dcbe8ce
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * Check whether all operations are implemented
+ * TODO: change name - will serve same purpose, since operations of provided ports are automatically added
+ * TODO? further tests: check whether implementation is good for target?
+ * TODO? impossible since no history? check whether signature has changed without an update of the
+ * implementation => warning. Better: lift errors/warnings from compiler to model level, but that's a different
+ * task ...
+ * @author ansgar
+ *
+ */
+public class ExecutorIsNotUsedAsPartName extends AbstractModelConstraint
+{
+ @Override
+ public IStatus validate(IValidationContext ctx) {
+
+ Class class_ = (Class) ctx.getTarget();
+
+ for (Property attribute : class_.getOwnedAttributes ()) {
+ if (attribute.getName().equals ("_executor")) {
+ return ctx.createFailureStatus ("A property may not use the reserved name \"_executor\"");
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/InitialEntryPoints.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/InitialEntryPoints.java
new file mode 100644
index 00000000000..8538a273f17
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/InitialEntryPoints.java
@@ -0,0 +1,67 @@
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.DeploymentPlan;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.BootLoaderGen;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+
+/**
+ * Verify that at exactly one blocking start routine is defined.
+ *
+ * @author ansgar
+ *
+ */
+public class InitialEntryPoints extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate(IValidationContext ctx)
+ {
+ Package pkg = (Package)ctx.getTarget();
+
+ DeploymentPlan cdp = StUtils.getApplication(pkg, DeploymentPlan.class);
+ if(cdp != null) {
+ InstanceSpecification initIS = cdp.getMainInstance();
+ if(initIS != null) {
+ entryPoints = new BasicEList<String>();
+ validate(initIS);
+ if(entryPoints.size() > 1) {
+ String msg = "";
+ for(String entryPoint : entryPoints) {
+ if(msg.length() > 0) {
+ msg += ", ";
+ }
+ msg += entryPoint;
+ }
+ return ctx.createFailureStatus("The deployment plan '" + pkg.getName() + "' contains more than one start entry point: " + msg);
+ }
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+
+ public void validate(InstanceSpecification is) {
+ Classifier cl = DepUtils.getClassifier(is);
+ if(cl instanceof Class) {
+ Class implementation = (Class)cl;
+ if(BootLoaderGen.hasUnconnectedStartRoutine(null, implementation, null)) {
+ entryPoints.add(implementation.getName());
+ }
+ }
+ for(InstanceSpecification subIS : DepUtils.getContainedInstances(is)) {
+ validate(subIS);
+ }
+ }
+
+ private EList<String> entryPoints;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/InstanceSpecificationSlotForAllProperties.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/InstanceSpecificationSlotForAllProperties.java
new file mode 100644
index 00000000000..65ac7cfbdda
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/InstanceSpecificationSlotForAllProperties.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Slot;
+
+import FCM.ConfigurationProperty;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+public class InstanceSpecificationSlotForAllProperties extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate(IValidationContext ctx)
+ {
+ InstanceSpecification is = (InstanceSpecification) ctx.getTarget();
+
+ if (is.getClassifiers().size() > 0) {
+ Classifier cl = is.getClassifiers().get(0);
+ if (cl instanceof Class) {
+ Class class_ = (Class) cl;
+
+ for (Property attribute : class_.getOwnedAttributes ()) {
+ boolean foundAttribute = false;
+ if (StUtils.isApplied(attribute, ConfigurationProperty.class)) {
+ for (Slot slot : is.getSlots ()) {
+ if (slot.getDefiningFeature () == attribute) {
+ foundAttribute = true;
+ break;
+ }
+ }
+ if (foundAttribute == false) {
+ return ctx.createFailureStatus ("The instance specification '" + is.getName () + "' has no slot for property '" + attribute.getName () + "'");
+ }
+ }
+ }
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/OperationsAreImplemented.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/OperationsAreImplemented.java
new file mode 100644
index 00000000000..14670711930
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/OperationsAreImplemented.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Operation;
+
+/**
+ * Check whether all operations are implemented
+ * TODO? check whether signature has changed without an update of the implementation
+ * => warning (check is impossible since no history?).
+ * Better?: lift errors/warnings from compiler to model level, but that's a different task ...
+ */
+public class OperationsAreImplemented extends AbstractModelConstraint
+{
+ @Override
+ public IStatus validate(IValidationContext ctx) {
+
+ Class clazz = (Class) ctx.getTarget();
+ for (Operation operation : clazz.getOwnedOperations ()) {
+ if (!operation.isAbstract () && operation.getMethods ().size () == 0) {
+ return ctx.createFailureStatus ("The operation '" + operation.getName () + "' of class '" +
+ clazz.getName () + "' has no implementation (and is not marked as abstract)");
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/OperationsWithTwoReturnValues.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/OperationsWithTwoReturnValues.java
new file mode 100644
index 00000000000..671b93caff5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/OperationsWithTwoReturnValues.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+
+/**
+ * Verify that an operation has at most one return parameter
+ * @author ansgar
+ *
+ */
+public class OperationsWithTwoReturnValues extends AbstractModelConstraint
+{
+ @Override
+ public IStatus validate (IValidationContext ctx)
+ {
+ Operation operation = (Operation) ctx.getTarget();
+ boolean firstReturn = true;
+ for (Parameter parameter : operation.getOwnedParameters ()) {
+ if (parameter.getDirection() == ParameterDirectionKind.RETURN_LITERAL) {
+ if (firstReturn) {
+ firstReturn = false;
+ }
+ else {
+ return ctx.createFailureStatus ("The operation '" + operation.getName () + "' has more than one return parameter. It must have at most one");
+ }
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/PortIsCorrectlyTyped.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/PortIsCorrectlyTyped.java
new file mode 100644
index 00000000000..4830bb828b2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/PortIsCorrectlyTyped.java
@@ -0,0 +1,36 @@
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Port;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+/**
+ * Check whether the port is not correctly typed, e.g. the port kind ProvideInterface is used in
+ * conjunction with a data type.
+ * Technically, the criterion will be that not both, derived provided and derived required interfaces
+ * are empty.
+ * @author ansgar
+ *
+ */
+public class PortIsCorrectlyTyped extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate (IValidationContext ctx)
+ {
+ Port port = (Port) ctx.getTarget ();
+ FCM.Port fcmPort = StUtils.getApplication(port, FCM.Port.class);
+ if (fcmPort != null) {
+
+ if ((fcmPort.getProvidedInterface() == null) && (fcmPort.getRequiredInterface() == null)) {
+ Class class_ = port.getClass_ ();
+ return ctx.createFailureStatus ("The port '" + port.getName () + "' owned by class '" + class_.getQualifiedName () + "' is not correctly typed, since derived provided and required interface is null");
+ }
+ }
+ return ctx.createSuccessStatus();
+
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/PortKindUnset.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/PortKindUnset.java
new file mode 100644
index 00000000000..4ea90969bb9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/PortKindUnset.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2010 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Port;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+/**
+ * Check whether the port kind is unset
+ * @author ansgar
+ *
+ */
+public class PortKindUnset extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate (IValidationContext ctx)
+ {
+ Port port = (Port) ctx.getTarget ();
+ FCM.Port fcmPort = StUtils.getApplication(port, FCM.Port.class);
+ if (fcmPort != null) {
+
+ if (fcmPort.getKind() == null) {
+ Class class_ = port.getClass_ ();
+ return ctx.createFailureStatus ("The stereotype attribute 'portKind' of port '" + port.getName () + "' owned by class '" + class_.getQualifiedName () + "' is unset");
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/SystemHasNoPorts.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/SystemHasNoPorts.java
new file mode 100644
index 00000000000..2ea916a96c1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/SystemHasNoPorts.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2008-2009 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are property of the CEA, their use is subject to specific agreement
+ * with the CEA.
+ *
+ * Contributors:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Package;
+
+import FCM.DeploymentPlan;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+
+/**
+ * Check whether system has no port. This is a particular test, since it should be applied
+ * whenever the user selects a "system" class for creating a deployment plan.
+ * However, it is also useful to check at any time whether an mainInstance (in a deployment plan)
+ * references a class that has ports.
+ *
+ * @author ansgar
+ *
+ */
+public class SystemHasNoPorts extends AbstractModelConstraint {
+
+ @Override
+ public IStatus validate(IValidationContext ctx)
+ {
+ Package pkg = (Package) ctx.getTarget ();
+
+ DeploymentPlan cdp = StUtils.getApplication(pkg, DeploymentPlan.class);
+
+ if (cdp != null) {
+ InstanceSpecification mi = cdp.getMainInstance();
+ Class class_ = (Class) DepUtils.getClassifier (mi);
+
+ if (class_.getOwnedPorts ().size () > 0) {
+ return ctx.createFailureStatus ("The main instance (class '" + class_.getName () + "') of deployment plan '" + pkg.getName () + "' owns ports. It should not, since these ports remain unconnected.");
+ }
+ }
+ return ctx.createSuccessStatus();
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedPorts.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedPorts.java
new file mode 100644
index 00000000000..37dcfdd74b7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedPorts.java
@@ -0,0 +1,68 @@
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.AbstractModelConstraint;
+import org.eclipse.emf.validation.IValidationContext;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+
+import org.eclipse.papyrus.qompass.designer.core.ConnectorUtils;
+
+/**
+ * Check whether a port of a part remains without connection. Whereas it is typically problematic
+ * for ports with a required interface, we also raise an info for those with a provided interface
+ * [Btw. is it possible to say: "I know, don't warn me again?"]
+ *
+ *
+ * @author ansgar
+ *
+ */
+abstract public class UnconnectedPorts extends AbstractModelConstraint
+{
+ /**
+ * Call by one of the sub-classes (does not override a superclass method)
+ * @param ctx the validation context
+ * @param required if true, examine required ports, if false provided ports
+ * @return
+ */
+ public IStatus validatePorts (IValidationContext ctx, boolean required)
+ {
+ String portsStr = "";
+
+ Property attribute = (Property) ctx.getTarget();
+ Class owner = attribute.getClass_ ();
+ if (owner != null) {
+ if (attribute.getType () instanceof Class) {
+ Class class_ = (Class) attribute.getType ();
+ for (Port port : class_.getOwnedPorts ()) {
+ if (((port.getRequireds ().size () > 0) && required) ||
+ ((port.getProvideds ().size () > 0) && !required)) {{
+ boolean found = false;
+ for (Connector connector : owner.getOwnedConnectors ()) {
+ if (ConnectorUtils.connectsPort (connector, port)) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ if (portsStr.length () != 0) {
+ portsStr += ", ";
+ }
+ portsStr += port.getName ();
+ }
+ }
+ }
+ }
+ }
+ }
+ if (portsStr.length () > 0) {
+ return ctx.createFailureStatus ("The port(s) '" + portsStr + "' of part '" + attribute.getName () + "' remains unconnected within composite class '" + owner.getQualifiedName () + "'");
+
+ }
+ else {
+ return ctx.createSuccessStatus();
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedProvPorts.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedProvPorts.java
new file mode 100644
index 00000000000..5777206fdb7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedProvPorts.java
@@ -0,0 +1,13 @@
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.IValidationContext;
+
+
+public class UnconnectedProvPorts extends UnconnectedPorts {
+
+ @Override
+ public IStatus validate(IValidationContext ctx) {
+ return super.validatePorts (ctx, false);
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedReqPorts.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedReqPorts.java
new file mode 100644
index 00000000000..c6a99a7489f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/UnconnectedReqPorts.java
@@ -0,0 +1,13 @@
+package org.eclipse.papyrus.qompass.designer.validation.constraints;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.validation.IValidationContext;
+
+
+public class UnconnectedReqPorts extends UnconnectedPorts {
+
+ @Override
+ public IStatus validate(IValidationContext ctx) {
+ return super.validatePorts (ctx, false);
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.project
new file mode 100644
index 00000000000..65bf34f1f4e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.project
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.designer.vsl</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.acceleo.ide.ui.acceleoBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.acceleo.ide.ui.acceleoNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
+
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..f2e5eb24b5f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.vsl
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.designer.vsl.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.marte.vsl;bundle-version="0.9.1",
+ org.eclipse.xtext;bundle-version="1.0.1",
+ org.eclipse.papyrus.marte.static.profile;bundle-version="0.9.1"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.qompass.designer.vsl
+Bundle-Localization: plugin
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/build.acceleo b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/build.acceleo
new file mode 100644
index 00000000000..22ab5fe0cfb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/build.acceleo
@@ -0,0 +1,26 @@
+<!-- ===================================================================== -->
+<!-- Custom targets. -->
+<!-- Set customBuildCallbacks = build.acceleo in your build.properties. -->
+<!-- ===================================================================== -->
+<project name="Build Acceleo Module" default="noDefault">
+ <!-- ================================================================= -->
+ <!-- Default target -->
+ <!-- ================================================================= -->
+ <target name="noDefault">
+ <echo message="This file must be called with explicit targets" />
+ </target>
+
+ <!-- ================================================================= -->
+ <!-- This will be called automatically after the compilation of each -->
+ <!-- Bundle... in dependency order. -->
+ <!-- ================================================================= -->
+ <target name="post.compile.@dot">
+ <acceleoCompiler
+ sourceFolder="${target.folder}"
+ outputFolder="${target.folder}"
+ dependencies="${target.folder}/../../org.eclipse.papyrus.marte.vsl;${target.folder}/../../org.eclipse.uml2.uml;"
+ binaryResource="false"
+ packagesToRegister="">
+ </acceleoCompiler>
+ </target>
+</project>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/build.properties
new file mode 100644
index 00000000000..2db90a70738
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/build.properties
@@ -0,0 +1,10 @@
+#
+#Sun Dec 02 23:00:20 CET 2012
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties
+output..=bin/
+source..=src/
+customBuildCallbacks=build.acceleo
+src.includes = about.html
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/plugin.properties
new file mode 100644
index 00000000000..e8db6a299e0
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass designer VSL support (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/Activator.java
new file mode 100644
index 00000000000..2b605d14ca2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.papyrus.qompass.designer.vsl;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.designer.vsl"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/ParseVSL.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/ParseVSL.java
new file mode 100644
index 00000000000..46cdc06bfe3
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/ParseVSL.java
@@ -0,0 +1,181 @@
+package org.eclipse.papyrus.qompass.designer.vsl;
+
+import java.util.Collections;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.MARTE.utils.MarteUtils;
+import org.eclipse.papyrus.MARTE_Library.MeasurementUnits.DataSizeUnitKind;
+import org.eclipse.papyrus.MARTE_Library.MeasurementUnits.FrequencyUnitKind;
+import org.eclipse.papyrus.MARTE_Library.MeasurementUnits.TimeUnitKind;
+import org.eclipse.papyrus.marte.vsl.VSLStandaloneSetupGenerated;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.resource.IResourceFactory;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.util.StringInputStream;
+
+import com.google.inject.Injector;
+
+
+public class ParseVSL {
+
+ private Injector injector;
+
+ private static final String SYNTHETIC_SCHEME = "synthetic";
+
+
+ /**
+ * Parse a VSL expression and return an xtext resource. Users should check for parsing
+ * errors (getErrors). The resulting set of eObjects is available via the getContents
+ * operations (as usual).
+ *
+ * @param expression
+ * a VSL expression
+ * @return a resource relating to the expression.
+ */
+ public XtextResource getXtextResource(String expression) {
+ if(injector == null) {
+ VSLStandaloneSetupGenerated setup = new VSLStandaloneSetupGenerated();
+ injector = setup.createInjectorAndDoEMFRegistration();
+ };
+ IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class);
+ IGrammarAccess grammarAccess = injector.getInstance(IGrammarAccess.class);
+
+ XtextResource xtextResource = (XtextResource)resourceFactory.createResource(
+ URI.createURI(SYNTHETIC_SCHEME + ":/" + grammarAccess.getGrammar().getName() + ".vsl"));
+
+ try {
+ xtextResource.load(new StringInputStream(expression, xtextResource.getEncoding()), Collections.emptyMap());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ return xtextResource;
+ }
+
+ /**
+ * test function
+ *
+ * @param expression
+ * a VSL expression
+ */
+ public static void parseTest(String expression) {
+ ParseVSL parseVSL = new ParseVSL();
+ XtextResource xtextResource = parseVSL.getXtextResource(expression);
+ if(xtextResource.getErrors().size() > 0) {
+ for(Resource.Diagnostic error : xtextResource.getErrors()) {
+ System.err.println(error);
+ }
+ return;
+ }
+ EList<EObject> contents = xtextResource.getContents();
+ System.out.println("contents.size: " + contents.size());
+ }
+
+ public static int getSizeFromVSL(String nfpDatasize) {
+ if(nfpDatasize != null) {
+ String unit = MarteUtils.getValueFromTuple(nfpDatasize, "unit");
+ String value = MarteUtils.getValueFromTuple(nfpDatasize, "value");
+ return Float.valueOf(value).intValue() * getMultiplicatorFromSizeUnit(unit);
+ }
+ return 0;
+ }
+
+ // >>> TODO: from here: ad-hoc functions to retrieve values via simple parser
+
+ /**
+ * Get the duration in micro-seconds
+ *
+ *
+ * @param nfpDuration
+ * @return
+ */
+ public static long getDurationFromVSL(String nfpDuration) {
+ if(nfpDuration != null) {
+ String unit = MarteUtils.getValueFromTuple(nfpDuration, "unit");
+ String value = MarteUtils.getValueFromTuple(nfpDuration, "value");
+ return Float.valueOf(value).intValue() * getMultiplicatorFromTimeUnit(unit);
+ }
+ return 0;
+ }
+
+ /**
+ * Get the frequency in HZ
+ *
+ * @param
+ * @return
+ */
+ public static long getFrequencyFromVSL(String nfpFrequency) {
+ if(nfpFrequency != null) {
+ String unit = MarteUtils.getValueFromTuple(nfpFrequency, "unit");
+ String value = MarteUtils.getValueFromTuple(nfpFrequency, "value");
+ return (int)(Float.valueOf(value) * getMultiplicatorFromFrequencyUnit(unit));
+ }
+ return 0;
+ }
+
+ public static long getPeriodFromArrivalPattern(String arrivalPattern) {
+ if(arrivalPattern != null) {
+ String period = MarteUtils.getValueFromTuple(arrivalPattern, "period");
+ return getDurationFromVSL(period);
+ }
+ return 0;
+ }
+
+ public static int getMultiplicatorFromSizeUnit(String unit) {
+ DataSizeUnitKind dsuk = DataSizeUnitKind.get(unit);
+ if(dsuk == DataSizeUnitKind.BYTE) {
+ return 1;
+ } else if(dsuk == DataSizeUnitKind.KB) {
+ return 1024;
+ } else if(dsuk == DataSizeUnitKind.MB) {
+ return 1024 * 1024;
+ } else if(dsuk == DataSizeUnitKind.GB) {
+ return 1024 * 1024 * 1024;
+ } else {
+ // do not support bits here.
+ throw new RuntimeException("Error parsing VSL expression, unexpected size unit (expecting byte, kb, mb, or gb): '" + unit + "'");
+ }
+ }
+
+ /**
+ * return the time multiplicator based on micro-seconds unit
+ *
+ * @param unit
+ * @return
+ */
+ public static long getMultiplicatorFromTimeUnit(String unit) {
+ TimeUnitKind tuk = TimeUnitKind.get(unit);
+ if(tuk == TimeUnitKind.US) {
+ return 1;
+ }
+ if(tuk == TimeUnitKind.MS) {
+ return 1000;
+ } else if(tuk == TimeUnitKind.S) {
+ return 1000 * 1000;
+ } else if(tuk == TimeUnitKind.MIN) {
+ return 60 * 1000 * 1000;
+ } else {
+ throw new RuntimeException("Error parsing VSL expression, unexpected duration unit (expecting us, ms, s or min): '" + unit + "'");
+ }
+ }
+
+ public static float getMultiplicatorFromFrequencyUnit(String unit) {
+ FrequencyUnitKind fuk = FrequencyUnitKind.get(unit);
+ if(fuk == FrequencyUnitKind.HZ) {
+ return 1;
+ } else if(fuk == FrequencyUnitKind.KHZ) {
+ return 1000;
+ } else if(fuk == FrequencyUnitKind.MHZ) {
+ return 1000 * 1000;
+ } else if(fuk == FrequencyUnitKind.GHZ) {
+ return 1000 * 1000 * 1000;
+ } else if(fuk == FrequencyUnitKind.RPM) {
+ return 1 / 60;
+ } else {
+ // do not support bits here.
+ throw new RuntimeException("Error parsing VSL expression, unexpected frequency unit (expecting Hz, KHz, MHz, GHz or rpm: '" + unit + "'");
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/ParseVSL.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/ParseVSL.mtl
new file mode 100644
index 00000000000..62a27808482
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/src/org/eclipse/papyrus/qompass/designer/vsl/ParseVSL.mtl
@@ -0,0 +1,23 @@
+[module ParseVSL('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[comment Copyright (c) 2012 CEA List./]
+
+[query public getSizeFromVSL(nfpDatasize : String) : Integer =
+ invoke('org.eclipse.papyrus.qompass.designer.vsl.ParseVSL',
+ 'getSizeFromVSL(java.lang.String)',
+ Sequence{nfpDatasize}) /]
+
+[query public getDurationFromVSL(nfpDuration : String) : Integer =
+ invoke('org.eclipse.papyrus.qompass.designer.vsl.ParseVSL',
+ 'getDurationFromVSL(java.lang.String)',
+ Sequence{nfpDuration}) /]
+
+[query public implementsInterface2(operation : Operation) : Interface =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'implementsInterface(org.eclipse.uml2.uml.Operation)',
+ Sequence{operation}) /]
+
+[query public implementsInterface3(str : String) : Interface =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'implementsInterface(org.eclipse.uml2.uml.Operation)',
+ Sequence{str}) /]
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/.project
new file mode 100644
index 00000000000..e943dd85a61
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.modellibs.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.acceleo.ide.ui.acceleoBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.acceleo.ide.ui.acceleoNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..6c57914a73d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.modellibs.core;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.modellibs.core.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.ui.ide;bundle-version="3.8.0",
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.fcm.profile;bundle-version="0.9.2",
+ org.eclipse.papyrus.qompass.designer.core;bundle-version="0.9.2",
+ org.eclipse.papyrus.qompass.designer.vsl;bundle-version="0.9.2",
+ org.eclipse.uml2.uml;bundle-version="4.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.papyrus.qompass.modellibs.core
+Bundle-Localization: plugin
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/build.acceleo b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/build.acceleo
new file mode 100644
index 00000000000..af1c3a74db1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/build.acceleo
@@ -0,0 +1,26 @@
+<!-- ===================================================================== -->
+<!-- Custom targets. -->
+<!-- Set customBuildCallbacks = build.acceleo in your build.properties. -->
+<!-- ===================================================================== -->
+<project name="Build Acceleo Module" default="noDefault">
+ <!-- ================================================================= -->
+ <!-- Default target -->
+ <!-- ================================================================= -->
+ <target name="noDefault">
+ <echo message="This file must be called with explicit targets" />
+ </target>
+
+ <!-- ================================================================= -->
+ <!-- This will be called automatically after the compilation of each -->
+ <!-- Bundle... in dependency order. -->
+ <!-- ================================================================= -->
+ <target name="post.compile.@dot">
+ <acceleoCompiler
+ sourceFolder="${target.folder}"
+ outputFolder="${target.folder}"
+ dependencies="${target.folder}/../../org.eclipse.papyrus.fcm.profile;${target.folder}/../../org.eclipse.uml2.uml;${target.folder}/../../org.eclipse.papyrus.qompass.designer.core;${target.folder}/../../org.eclipse.papyrus.qompass.designer.vsl;${target.folder}/../../org.eclipse.papyrus.marte.vsl;${target.folder}/../../org.eclipse.papyrus.cpp.profile;"
+ binaryResource="false"
+ packagesToRegister="">
+ </acceleoCompiler>
+ </target>
+</project>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/build.properties
new file mode 100644
index 00000000000..d269a78a0bb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/build.properties
@@ -0,0 +1,17 @@
+#
+#Thu Jun 28 15:46:18 CEST 2012
+bin.includes = META-INF/,\
+ .,\
+ models/,\
+ plugin.xml,\
+ .classpath,\
+ .project,\
+ html/,\
+ help/,\
+ about.html,\
+ plugin.properties
+output..=bin/
+src.includes = models/,\
+ about.html
+source..=src/
+customBuildCallbacks = build.acceleo
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/help/modellibs-core-examples.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/help/modellibs-core-examples.xml
new file mode 100644
index 00000000000..8e2820fd43f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/help/modellibs-core-examples.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="modellibs.core.examples" link_to="../org.eclipse.papyrus.qompass.designer.doc/toc.xml#samples">
+ <topic
+ label="Getting started: a hello world example"
+ href="html/examples/hello-world.html">
+ </topic>
+ <topic
+ label="A simple producer consumer example"
+ href="html/examples/producer-consumer.html">
+ </topic>
+</toc>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/help/modellibs-core-library.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/help/modellibs-core-library.xml
new file mode 100644
index 00000000000..78e5563a605
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/help/modellibs-core-library.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="modellibs.core" link_to="../org.eclipse.papyrus.qompass.designer.doc/toc.xml#modellibs">
+ <topic label="Core model library" href="html/library/core.html">
+ </topic>
+ <topic label="CORBA basic types" href="html/library/corba">
+ </topic>
+ <topic label="FIFO interaction components" href="html/library/fifo.html">
+ </topic>
+ <topic label="OS abstraction layer" href="html/osal.html">
+ </topic>
+ <topic label="State machine execution support" href="html/library/statemachine.html">
+ </topic>
+</toc>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/hello-world.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/hello-world.html
new file mode 100644
index 00000000000..babf443f906
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/hello-world.html
@@ -0,0 +1,130 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Hello world example with Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+
+<h1>Hello world example with Qompass</h1>
+
+In the sequel, we outline a simple hello world example using qompass designer. Please note that the example
+can be found via File->New->Example in the category Qompass examples. There are also two cheat-sheets that explain how
+to create your own example from scratch.
+<p>
+
+As for all Qompass examples, there are three different parts that needs to be modeled
+<ol>
+<li>The software components
+<li>An abstraction of the hardware platform
+<li>A so-called deployment plan, i.e. a set of component instance definitions along with their configuration and
+ allocation of software components to hardware nodes
+</ol>
+
+In the sequel, we will go through all of these items with a focus on the the definition of the software components.
+
+<h2>Definition of software components</h2>
+
+The example consists of two components, detailed below
+
+<h3>The hello-world component</h3>
+
+The hello-world component is shown in the following screen shot.
+
+<center>
+<img src="screenshots/hw/hello-world.png" alt="The Hello World component">
+</center>
+<br>
+The hello world component inherits from a component called <em>CStart</em>. This is an abstract component defined in the
+Qompass core model library. It owns a port (called start) that provides the pre-defined interface <em>IStart</em>. This
+interface has a single operation <em>run</em>. Components that provide an interface via a port need to implement this
+interface. This include ports that are inherited. In our case, the hello world component needs to implement the <em>IStart</em>
+interface, i.e. contain an operation "run" as well as a behavior for this operation.<br>
+Qompass supports the user by automatically creating derived operations for interfaceS provided via a port, i.e. the operation
+signature is copied (and synchronized on demand) from the interface. The developer needs to provide behavior. In UML, behavior
+can be specified either via activities or by embedding code in a programming language (opaque behavior) into the model.
+Currently, Qompass focuses on the latter,in particular in form of embedded C++ code. A simple C/C++ view allows to enter
+the code, as shown in the following screenshot (there is ongoing work concerning a CDT editor integration)
+
+<p>
+<center>
+<img src="screenshots/hw/c-cpp-view.png" alt="C/C++ view">
+</center>
+<p>
+
+The code outputs "Hello World" and an additional message that is an attribute of the hello world component. The attribute <em>message</em>
+is declared as a UML String, but it does not have a particular contents on the level of the component definition. We will
+see in the section explaining deployment plans how this contents can be defined.
+<p>
+The specific start port enables a component to get the initial control. Its <em>run</em> operation is called at system
+start-up by a generated boot-loader.
+
+<h3>A system component</h3>
+
+All Qompass applications need to define a top-level component, typically called <em>System</em> that aggregates its components,
+in our case the hello-world component. It is defined by means of a composite class, contained components are
+modeled via attributes (use composite aggregation for these) typed by the contained components. Note that we define a role (or part)
+within a composition, the hello world component declaration is not part of the system class. This role corresponds to an
+instance of a class in the deployment plan below.<br>
+In our simple hello world example, there is a single component only. Thus, there are no connections between components (so called <em>assembly</em>). take a look at the
+<a href="producer-consumer.html">producer-consumer</a> example to see how the assembly can be done.
+<p>
+<center>
+<img src="screenshots/hw/system.png" alt="The System component">
+</center>
+
+
+<h2>Definition of an abstract hardware platform</h2>
+
+In parallel to the software component, the hardware platform or merely an abstraction thereof can be defined. The main objective
+of this step is to define computational nodes on which the software can be allocated. A node isa stereotyped class that defines
+for the moment only quite basic information about a computational node, such as the provided memory and operating system.
+
+<p>
+
+The following screenshot defines a platform for the Hello World component. The <em>HWArchitecture</em> class has a similar
+function for the platform as the <em>System</em> class has for the software: it represents the used notes and their interconnections.
+In this simple example, the hardware architecture contains a single node.<br>
+<center>
+<img src="screenshots/hw/platform.png" alt="A platform for the Hello World component">
+</center>
+
+<h2>Definition of a deployment plan</h2>
+
+A deployment plan is a collection of instance specifications, stored within a UML package. It has two objectives. The first is
+to configure an <em>instance</em> of a component, i.e. to provide values for configuration attributes. The second is to allocate
+instance to processing resources such as threads or directly to a node of the platform definition.
+
+In case of the hello world component, the message that should be written is a configuration attribute. Qompass provides a
+dialog that simplifies the configuration of this attribute. The dialog lists instances and their configuration attributes and
+enables the user to provide a value in a text field. On the model level, a corresponding slot and a value specification are
+produced.<br>
+
+<center>
+<img src="screenshots/hw/configure-instance.png" alt="configure instance dialog">
+</center>
+
+The allocation is also simplified by means of a custom dialog. The instances of a system are shown by means of a tree structure
+and the user can either allocate leafs or a parent node. In our case, the whole system should be allocated to node "monoNode", as
+shown in the screenshot below. On the model level, allocation is a MARTE relationship.<br>
+<center>
+<img src="screenshots/hw/allocate.png" alt="allocation dialog">
+</center>
+
+The last screenshot shows the resulting deployment plan, the package containing two instance specifications and the slots along
+with the configured values. You also see the allocation of the system component. Note, that the visualization of all instances
+in a diagram is often not useful for larger applications, since the graphical visualization does not provide additional
+information compared to the tree structure depicted by the dedicated dialog.<br>
+
+<center>
+<img src="screenshots/hw/deployment-plan.png" alt="resulting deployment plan">
+</center>
+
+The last step is the code generation which can be executed via the context menu of a deployment plan. The code generation creates an CDT project
+which can be compiled and executed.
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/producer-consumer.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/producer-consumer.html
new file mode 100644
index 00000000000..c7a619f5516
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/producer-consumer.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Producer-consumer example with Qompass</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+
+<h1>A simple producer-consumer example</h1>
+
+In the sequel, we outline a simple producer consumer example using Qompass designer. Please note that the example
+can be found via File->New->Example in the category Qompass examples. It follows the same principles as the
+<a href="hello-world.html">Hello World</a> example, i.e. a separation between components, platform and deployment plan.
+<p>
+
+<h2>Definition of software components</h2>
+
+The example consists of three components, a producer, a consumer and the enclosing system component. These components are outlined
+in the sequel.
+
+<h3>The producer</h3>
+
+A data producer needs flow port of type "out" to communicate the data to other components. The following screenshot shows its
+definition.
+
+<center>
+<img src="screenshots/pc/push-producer.png" alt="The push producer">
+</center>
+
+The producer is the main active component in our system. Therefore, it inherits (as the hello world component) from
+the CStart component within the Qompass "core" modeling library and gets an initial execution thread. This thread executes the
+component's "run" method is shown below. It executes 20 periods with a length of 200ms (we use only the simple POSIX call usleep
+instead of the OS abstraction library to ensure that this example runs on most machines). In each period, an instance of type
+PubData is send to the port q.
+<p>
+<code><pre>
+cout << "publish a value via port q;" << endl;
+ComponentModel::interfaces::PubData data;
+data.x = 2;
+data.y = 3;
+for (int i = 0; i<20; i++) {
+ q->push(data);
+ cout << "." << flush;
+ // wait 200ms
+ usleep(200*1000);
+}
+</pre></code>
+
+<h3>The consumer</h3>
+
+There are (at least) two different variants to consume data. The first is to actively pull for new data, the second is being notified (pushed)
+whenever new data arrives. Although both consumers have a flow-port of type in, the mapping towards provided and required
+interfaces is quite different. Whereas the pull consumer calls a pull operation, the push consumer is called from the outside.
+This also implies that the pull consumer has its own thread of control, which typically performs the poll with a certain period.
+
+The following screenshot shows the push variant of the consumer. Since the component is inactive, no additional thread is required.
+Data consumption at an "push-in" flow ports corresponds to the implementation of an interface with a push method. This interface
+is automatically calculated and a derived (calculated) attribute of the port stereotyped with the FCM profile.
+
+<center>
+<img src="screenshots/pc/push-consumer.png" alt="The push consumer">
+</center>
+<p>
+
+The next screenshot shows the pull variant of the consumer. This components inherits from the abstract LifeCycle component that
+provides the lifecycle port. The interface associated with this port contains the two operations activate and deactivate. The
+lifecycle operations are called after creation, but -- unlike the start call -- should return the control immediately (or after
+a very short time).<br>
+Since we want that the consumer executes a periodic pull operation, we need to launch a new thread in the activation call and let
+this thread execute the pull loop. One way to achieve this Qompass is to use a <em>container service</em> that intercepts the
+activation call. This service is call runStartThread and is visible in the context menu of the class.
+
+<center>
+<img src="screenshots/pc/pull-consumer.png" alt="The pull consumer">
+</center>
+<p>
+
+<h3>The system</h3>
+
+Since we use two different variants of a consumer, we need to have two different variants of the system component.
+The first variant uses a push consumer. In this case, producer and consumer can be connected directly, since the producer
+calls the push operation that is provided by the consumer.
+
+<center>
+<img src="screenshots/pc/system-push.png" alt="The System component with a push consumer">
+</center>
+
+The variant with a pull consumer is a bit more complicated. In this case, both producer and consumer call operations (push and
+pull respectively) and we need a mediator between this. A suitable choice is the use of a FIFO queue. The producer pushes data
+into the FIFO and the consumer polls for data "at the other end". Instead of explicitly introducing an additional part for the
+queue in the system, Qompass supports annotating UML connectors. In this case, we add the information to the connector between
+producer and consumer that a FIFO connector should be used. When the code for this system is generated, Qompass replaces the
+connection by a reified connector, as shown in the
+<a href="../../../org.eclipse.papyrus.qompass.designer.doc/html/reference/interactionComponent.html">reference guide</a>
+
+<center>
+<img src="screenshots/pc/system-pull.png" alt="The System component with a pull consumer">
+</center>
+
+
+<h2>Definition of an abstract hardware platform</h2>
+
+The hardware platform is the same monolithic platform as for the hello world example
+
+<center>
+<img src="screenshots/hw/platform.png" alt="The push consumer">
+</center>
+
+<h2>Definition of a deployment plan</h2>
+
+There are two deployment plans corresponding to the two variants to consume data. The screenshots below shows both plans
+without detailing the contained instance specifications.<br>
+In addition to the two plans, there are two <em>Configurations</em> that enable activation of container extension. For
+instance, the tracing rules are only active in a trace configuration. A configuration refers to a set of configuration
+options and a deployment plan, as shown in screenshots.
+
+<center>
+<img src="screenshots/pc/dep-plans.png" alt="The push consumer">
+</center>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/allocate.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/allocate.png
new file mode 100644
index 00000000000..43f70204412
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/allocate.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/c-cpp-view.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/c-cpp-view.png
new file mode 100644
index 00000000000..c4cc6730243
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/c-cpp-view.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/configure-instance.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/configure-instance.png
new file mode 100644
index 00000000000..a77b9c3cbcf
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/configure-instance.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/deployment-plan.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/deployment-plan.png
new file mode 100644
index 00000000000..969c3b0d62c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/deployment-plan.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/hello-world.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/hello-world.png
new file mode 100644
index 00000000000..78d176b6fa7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/hello-world.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/platform.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/platform.png
new file mode 100644
index 00000000000..93f8f332b2a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/platform.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/system.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/system.png
new file mode 100644
index 00000000000..10446c73b5c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/hw/system.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/dep-plans.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/dep-plans.png
new file mode 100644
index 00000000000..9d5c201fd60
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/dep-plans.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/generated-container.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/generated-container.png
new file mode 100644
index 00000000000..4eb00727977
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/generated-container.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/pull-consumer.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/pull-consumer.png
new file mode 100644
index 00000000000..950ad42d68c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/pull-consumer.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/push-consumer.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/push-consumer.png
new file mode 100644
index 00000000000..83065ace195
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/push-consumer.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/push-producer.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/push-producer.png
new file mode 100644
index 00000000000..580db31e964
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/push-producer.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/system-pull.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/system-pull.png
new file mode 100644
index 00000000000..08d5286e66a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/system-pull.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/system-push.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/system-push.png
new file mode 100644
index 00000000000..1c3ce96ad33
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/examples/screenshots/pc/system-push.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/corba.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/corba.html
new file mode 100644
index 00000000000..266c64ef4d2
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/corba.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>CORBA basic types (model library)</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+
+<h1>A collection of CORBA base types</h1>
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/core.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/core.html
new file mode 100644
index 00000000000..038fd213f27
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/core.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Core model library</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+
+<h1>A simple producer-consumer example</h1>
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/osal.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/osal.html
new file mode 100644
index 00000000000..038fd213f27
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/osal.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Core model library</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+
+<h1>A simple producer-consumer example</h1>
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/statemachine.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/statemachine.html
new file mode 100644
index 00000000000..038fd213f27
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/html/library/statemachine.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
+ <title>Core model library</title>
+ <link rel="StyleSheet"
+ href="../sitestyle.css"
+ type="text/css">
+</head>
+<body>
+
+<h1>A simple producer-consumer example</h1>
+
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.di
new file mode 100644
index 00000000000..f5c99e36d80
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.di
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmi:id="_M_WAwPcXEd-KM6l7lmIPkw">
+ <pageList xmi:id="_M_WAwfcXEd-KM6l7lmIPkw">
+ <availablePage xmi:id="_M_WAwvcXEd-KM6l7lmIPkw"/>
+ <availablePage xmi:id="_M_WAxPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="HelloWorld.notation#_7kc7YM__Ed-TP80eVS-2Rg"/>
+ </availablePage>
+ <availablePage xmi:id="_M_WAxfcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="HelloWorld.notation#_o6ZisNCREd-hqYHBJe17_Q"/>
+ </availablePage>
+ <availablePage xmi:id="_U1docPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="HelloWorld.notation#_U1UegPcXEd-KM6l7lmIPkw"/>
+ </availablePage>
+ <availablePage xmi:id="_V5fVYP8nEd-hWJO6cv3VJA"/>
+ <availablePage>
+ <emfPageIdentifier href="HelloWorld.notation#_0rwpYDefEeGPyrZ5I3hMlA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="HelloWorld.notation#_ovKvYFWjEeKOivupHOJ8Ew"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_M_WAxvcXEd-KM6l7lmIPkw" currentSelection="_M_WAyPcXEd-KM6l7lmIPkw">
+ <windows xmi:id="_M_WAx_cXEd-KM6l7lmIPkw">
+ <children xsi:type="di:TabFolder" xmi:id="_M_WAyPcXEd-KM6l7lmIPkw">
+ <children xmi:id="_M_WAy_cXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="HelloWorld.notation#_7kc7YM__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:id="_M_WAzPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="HelloWorld.notation#_o6ZisNCREd-hqYHBJe17_Q"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="HelloWorld.notation#_U1UegPcXEd-KM6l7lmIPkw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="HelloWorld.notation#_0rwpYDefEeGPyrZ5I3hMlA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation
new file mode 100644
index 00000000000..2ae10c2d2bc
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation
@@ -0,0 +1,528 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_7kc7YM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="HelloWorldComponent" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_8LSR4M__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LSR4s__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LSR48__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LS48M__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LS48c__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LS48s__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LS488__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HIdDoJZ9EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MJZ9EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MZZ9EeCiU5xXzp1cKQ" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MpZ9EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--M5Z9EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--NJZ9EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8LS49M__Ed-TP80eVS-2Rg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8LS49c__Ed-TP80eVS-2Rg" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_8rDfAFTzEeKvFeqt5Q_lqw" type="3070" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8rGiUFTzEeKvFeqt5Q_lqw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8rGiUVTzEeKvFeqt5Q_lqw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8rGiUlTzEeKvFeqt5Q_lqw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8rGiU1TzEeKvFeqt5Q_lqw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8rGiVFTzEeKvFeqt5Q_lqw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8rGiVVTzEeKvFeqt5Q_lqw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KU4xwFT0EeKvFeqt5Q_lqw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KU4xwVT0EeKvFeqt5Q_lqw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KU5Y0FT0EeKvFeqt5Q_lqw" key="StereotypeList" value="FCM::ConfigurationProperty"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KU5Y0VT0EeKvFeqt5Q_lqw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KU5Y0lT0EeKvFeqt5Q_lqw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KU5Y01T0EeKvFeqt5Q_lqw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8rHJYFTzEeKvFeqt5Q_lqw" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CBQusFT0EeKvFeqt5Q_lqw" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CGsoUFT0EeKvFeqt5Q_lqw" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8rHJYVTzEeKvFeqt5Q_lqw" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_8rHJYlTzEeKvFeqt5Q_lqw" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8rHJY1TzEeKvFeqt5Q_lqw"/>
+ </children>
+ <element xmi:type="uml:Property" href="HelloWorld.uml#_8pupUFTzEeKvFeqt5Q_lqw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8rDfAVTzEeKvFeqt5Q_lqw" x="40" y="30" width="163"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LS49s__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_O7kMQFWUEeKdxoQIVxFNNg" visible="false" type="AppliedStereotypeCompartement">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_O7kMQVWUEeKdxoQIVxFNNg" showTitle="true"/>
+ <element xmi:type="Cpp:CppInclude" href="HelloWorld.uml#_11OtwPcaEd-KM6l7lmIPkw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7kMQlWUEeKdxoQIVxFNNg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6UeXAFWUEeKdxoQIVxFNNg" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ue-EFWUEeKdxoQIVxFNNg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6Ue-EVWUEeKdxoQIVxFNNg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ue-ElWUEeKdxoQIVxFNNg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6Ue-E1WUEeKdxoQIVxFNNg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6Ue-FFWUEeKdxoQIVxFNNg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6UflIFWUEeKdxoQIVxFNNg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9gHMkFWUEeKdxoQIVxFNNg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90BnEFWUEeKdxoQIVxFNNg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90COIFWUEeKdxoQIVxFNNg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90COIVWUEeKdxoQIVxFNNg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90COIlWUEeKdxoQIVxFNNg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90COI1WUEeKdxoQIVxFNNg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6UflIVWUEeKdxoQIVxFNNg" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6UflIlWUEeKdxoQIVxFNNg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6UflI1WUEeKdxoQIVxFNNg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6UflJFWUEeKdxoQIVxFNNg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6UeXAVWUEeKdxoQIVxFNNg" x="-10" y="27"/>
+ </children>
+ <element xmi:type="uml:Class" href="HelloWorld.uml#_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LSR4c__Ed-TP80eVS-2Rg" x="90" y="135" width="254" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-HlK8DecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyADecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyATecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyAjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyAzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyBDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyBTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-HlyBjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="HelloWorld.uml#_-Hd2MDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HlK8TecEeGPyrZ5I3hMlA" x="423" y="135" width="295" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0EFQQDedEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UDedEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3UTedEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UjedEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3UzedEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3VDedEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3VTedEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0EF3VjedEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="HelloWorld.uml#_0D64MDedEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0EFQQTedEeGPyrZ5I3hMlA" x="423" y="18" width="295"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SypoQFT0EeKvFeqt5Q_lqw" type="2109" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SyqPUFT0EeKvFeqt5Q_lqw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SyqPUVT0EeKvFeqt5Q_lqw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SyqPUlT0EeKvFeqt5Q_lqw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SyqPU1T0EeKvFeqt5Q_lqw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SyqPVFT0EeKvFeqt5Q_lqw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SyqPVVT0EeKvFeqt5Q_lqw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SyqPVlT0EeKvFeqt5Q_lqw" type="5192"/>
+ <element xmi:type="uml:Comment" href="HelloWorld.uml#_SxvpUFT0EeKvFeqt5Q_lqw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SypoQVT0EeKvFeqt5Q_lqw" x="422" y="198" width="290" height="45"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rjTBsFWUEeKdxoQIVxFNNg" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rjTowFWUEeKdxoQIVxFNNg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rjTowVWUEeKdxoQIVxFNNg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rjTowlWUEeKdxoQIVxFNNg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rjTow1WUEeKdxoQIVxFNNg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rjToxFWUEeKdxoQIVxFNNg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rjUP0FWUEeKdxoQIVxFNNg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rjUP0VWUEeKdxoQIVxFNNg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rjUP0lWUEeKdxoQIVxFNNg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rjUP01WUEeKdxoQIVxFNNg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rjUP1FWUEeKdxoQIVxFNNg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wd8WwFWUEeKdxoQIVxFNNg" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wd890FWUEeKdxoQIVxFNNg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wd890VWUEeKdxoQIVxFNNg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wd890lWUEeKdxoQIVxFNNg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wd8901WUEeKdxoQIVxFNNg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wd891FWUEeKdxoQIVxFNNg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wd891VWUEeKdxoQIVxFNNg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__0Ah0FWUEeKdxoQIVxFNNg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWUksFWVEeKdxoQIVxFNNg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWUksVWVEeKdxoQIVxFNNg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWUkslWVEeKdxoQIVxFNNg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWUks1WVEeKdxoQIVxFNNg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWVLwFWVEeKdxoQIVxFNNg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wd891lWUEeKdxoQIVxFNNg" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wd9k4FWUEeKdxoQIVxFNNg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wd9k4VWUEeKdxoQIVxFNNg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wd9k4lWUEeKdxoQIVxFNNg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wd8WwVWUEeKdxoQIVxFNNg" x="-10" y="27"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rjTBsVWUEeKdxoQIVxFNNg" x="90" y="18" width="253" height="73"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_7kc7Yc__Ed-TP80eVS-2Rg"/>
+ <element xmi:type="uml:Package" href="HelloWorld.uml#_LOqIEDLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_uHz6kP8nEd-hWJO6cv3VJA" type="4015" source="_8LSR4M__Ed-TP80eVS-2Rg" target="_rjTBsFWUEeKdxoQIVxFNNg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uH0hoP8nEd-hWJO6cv3VJA" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uH0hof8nEd-hWJO6cv3VJA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uHz6kf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="HelloWorld.uml#_tyiqss__Ed-TP80eVS-2Rg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uHz6kv8nEd-hWJO6cv3VJA" points="[-103, -45, 204, 90]$[-307, -135, 0, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpY_EFWUEeKdxoQIVxFNNg" id="(0.4782608695652174,0.8571428571428571)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FOfGwDeeEeGPyrZ5I3hMlA" type="4002" source="_0EFQQDedEeGPyrZ5I3hMlA" target="_rjTBsFWUEeKdxoQIVxFNNg" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_FOfGwTeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FOfGwjeeEeGPyrZ5I3hMlA" points="[-6, -3, 83, 0]$[-62, -3, 27, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgDeeEeGPyrZ5I3hMlA" id="(0.020338983050847456,0.4027777777777778)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgTeeEeGPyrZ5I3hMlA" id="(0.9644268774703557,0.32142857142857145)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_F4Ju0DeeEeGPyrZ5I3hMlA" type="4002" source="_-HlK8DecEeGPyrZ5I3hMlA" target="_8LSR4M__Ed-TP80eVS-2Rg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_F4Ju0TeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F4Ju0jeeEeGPyrZ5I3hMlA" points="[-25, 3, 78, 0]$[-80, -2, 23, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kDeeEeGPyrZ5I3hMlA" id="(0.006779661016949152,0.509090909090909)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kTeeEeGPyrZ5I3hMlA" id="(0.9921259842519685,0.26605504587155965)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YapykFT0EeKvFeqt5Q_lqw" type="4002" source="_SypoQFT0EeKvFeqt5Q_lqw" target="_8rDfAFTzEeKvFeqt5Q_lqw" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_YapykVT0EeKvFeqt5Q_lqw" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YapyklT0EeKvFeqt5Q_lqw" points="[-19, -3, 177, 20]$[-188, -24, 8, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ya7fYFT0EeKvFeqt5Q_lqw" id="(0.06551724137931035,0.38333333333333336)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ya7fYVT0EeKvFeqt5Q_lqw" id="(0.9693251533742331,0.65)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_o6ZisNCREd-hqYHBJe17_Q" type="CompositeStructure" name="System" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VSa6YNHtEd-A1oPfP47IaQ" type="2073" fontName="" fontHeight="10" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScIgNHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvkNHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScvkdHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvktHtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScvk9HtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvlNHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VScvldHtEd-A1oPfP47IaQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VScvltHtEd-A1oPfP47IaQ" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_XsS70NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi4NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi4dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi4tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi49HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi5NHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi5dHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XsTi5tHtEd-A1oPfP47IaQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yonwwFTzEeKvFeqt5Q_lqw" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yzIXoFTzEeKvFeqt5Q_lqw" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XsTi59HtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsUJ8NHtEd-A1oPfP47IaQ"/>
+ </children>
+ <element xmi:type="uml:Property" href="HelloWorld.uml#_gV1cgDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsS70dHtEd-A1oPfP47IaQ" x="40" y="20" width="193" height="85"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VScvl9HtEd-A1oPfP47IaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="HelloWorld.uml#_bYJagDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSa6YdHtEd-A1oPfP47IaQ" x="18" y="18" width="280" height="172"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_o6ZisdCREd-hqYHBJe17_Q"/>
+ <element xmi:type="uml:Package" href="HelloWorld.uml#_LOqIEDLaEd2qeKRLMdIx_A"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_U1UegPcXEd-KM6l7lmIPkw" type="PapyrusUMLClassDiagram" name="deployment" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_FGfloCghEeCw56aD7XrQhw" type="2016" element="_7kc7YM__Ed-TP80eVS-2Rg" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGgMsCghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGgMsSghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGgMsighEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGgMsyghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGlsQCghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGmTUCghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FGmTUSghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FGmTUighEeCw56aD7XrQhw" x="54" y="3"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FGfloSghEeCw56aD7XrQhw" x="54" y="24" width="34" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gdmuADefEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdmuAjefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdmuAzefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdmuBDefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdmuBTefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdnVEDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdnVETefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gdnVEjefEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="HelloWorld.uml#_gdeyMDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gdmuATefEeGPyrZ5I3hMlA" x="315" y="18" width="226" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-4h4YFWREeKdxoQIVxFNNg" type="2007" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-4k7sFWREeKdxoQIVxFNNg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-4k7sVWREeKdxoQIVxFNNg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-4k7slWREeKdxoQIVxFNNg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-4k7s1WREeKdxoQIVxFNNg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-4liwFWREeKdxoQIVxFNNg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-4liwVWREeKdxoQIVxFNNg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-4liwlWREeKdxoQIVxFNNg" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-4liw1WREeKdxoQIVxFNNg" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_ZQjFQFWjEeKOivupHOJ8Ew" type="3020" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZQjsUFWjEeKOivupHOJ8Ew" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZQjsUVWjEeKOivupHOJ8Ew" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZQjsUlWjEeKOivupHOJ8Ew" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZQkTYFWjEeKOivupHOJ8Ew" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZQkTYVWjEeKOivupHOJ8Ew" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZQkTYlWjEeKOivupHOJ8Ew" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZQkTY1WjEeKOivupHOJ8Ew" type="5040"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZQkTZFWjEeKOivupHOJ8Ew" type="7035">
+ <children xmi:type="notation:Shape" xmi:id="_ET2zcFWkEeKOivupHOJ8Ew" type="3030" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Slot" href="HelloWorld.uml#_ymQ48FT2EeKvFeqt5Q_lqw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ET2zcVWkEeKOivupHOJ8Ew" x="58" y="15"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZQkTZVWjEeKOivupHOJ8Ew"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ZQkTZlWjEeKOivupHOJ8Ew"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ZQkTZ1WjEeKOivupHOJ8Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZQkTaFWjEeKOivupHOJ8Ew"/>
+ </children>
+ <element xmi:type="uml:InstanceSpecification" href="HelloWorld.uml#_ymErsFT2EeKvFeqt5Q_lqw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZQjFQVWjEeKOivupHOJ8Ew" x="10" y="12" width="235" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Z7T5gFWjEeKOivupHOJ8Ew" type="3020" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z7UgkFWjEeKOivupHOJ8Ew" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z7UgkVWjEeKOivupHOJ8Ew" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z7UgklWjEeKOivupHOJ8Ew" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z7Ugk1WjEeKOivupHOJ8Ew" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z7UglFWjEeKOivupHOJ8Ew" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z7UglVWjEeKOivupHOJ8Ew" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z7UgllWjEeKOivupHOJ8Ew" type="5040"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Z7Ugl1WjEeKOivupHOJ8Ew" type="7035">
+ <children xmi:type="notation:Shape" xmi:id="_6VXKAFWjEeKOivupHOJ8Ew" type="3030" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Slot" href="HelloWorld.uml#_tfj4gFUwEeKdxoQIVxFNNg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6VXKAVWjEeKOivupHOJ8Ew" x="26" y="15"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z7UgmFWjEeKOivupHOJ8Ew"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Z7UgmVWjEeKOivupHOJ8Ew"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Z7UgmlWjEeKOivupHOJ8Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z7Ugm1WjEeKOivupHOJ8Ew"/>
+ </children>
+ <element xmi:type="uml:InstanceSpecification" href="HelloWorld.uml#_ymQR4FT2EeKvFeqt5Q_lqw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z7T5gVWjEeKOivupHOJ8Ew" x="10" y="102" width="235" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_85kMIFWjEeKOivupHOJ8Ew" type="3020" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_85kzMFWjEeKOivupHOJ8Ew" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_85kzMVWjEeKOivupHOJ8Ew" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_85kzMlWjEeKOivupHOJ8Ew" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_85kzM1WjEeKOivupHOJ8Ew" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_85kzNFWjEeKOivupHOJ8Ew" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_85kzNVWjEeKOivupHOJ8Ew" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_85kzNlWjEeKOivupHOJ8Ew" type="5040"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_85kzN1WjEeKOivupHOJ8Ew" visible="false" type="7035">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_85laQFWjEeKOivupHOJ8Ew"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_85laQVWjEeKOivupHOJ8Ew"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_85laQlWjEeKOivupHOJ8Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_85laQ1WjEeKOivupHOJ8Ew"/>
+ </children>
+ <element xmi:type="uml:InstanceSpecification" href="HelloWorld.uml#_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_85kMIVWjEeKOivupHOJ8Ew" x="343" y="12" width="145" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wCUSAFZVEeKKZs15rvNNjA" type="3028" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wCX8YFZVEeKKZs15rvNNjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wCX8YVZVEeKKZs15rvNNjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wCX8YlZVEeKKZs15rvNNjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wCYjcFZVEeKKZs15rvNNjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wCYjcVZVEeKKZs15rvNNjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wCYjclZVEeKKZs15rvNNjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wCYjc1ZVEeKKZs15rvNNjA" type="5063"/>
+ <element xmi:type="uml:Comment" href="HelloWorld.uml#_wAbboFZVEeKKZs15rvNNjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wCUSAVZVEeKKZs15rvNNjA" x="298" y="94" width="188" height="83"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-4lixFWREeKdxoQIVxFNNg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-4lixVWREeKdxoQIVxFNNg"/>
+ </children>
+ <element xmi:type="uml:Package" href="HelloWorld.uml#_yl9-AFT2EeKvFeqt5Q_lqw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-4h4YVWREeKdxoQIVxFNNg" x="30" y="160" width="511" height="219"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_obNuEFWiEeKOivupHOJ8Ew" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_obQxYFWiEeKOivupHOJ8Ew" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_obQxYVWiEeKOivupHOJ8Ew" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_obQxYlWiEeKOivupHOJ8Ew" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_obQxY1WiEeKOivupHOJ8Ew" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_obRYcFWiEeKOivupHOJ8Ew" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_obRYcVWiEeKOivupHOJ8Ew" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_obRYclWiEeKOivupHOJ8Ew" type="5038"/>
+ <element xmi:type="uml:Comment" href="HelloWorld.uml#_oZw8kFWiEeKOivupHOJ8Ew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_obNuEVWiEeKOivupHOJ8Ew" x="315" y="90" width="226" height="55"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_U1UegfcXEd-KM6l7lmIPkw"/>
+ <element xmi:type="uml:Package" href="HelloWorld.uml#_234GEDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_86CtQFWjEeKOivupHOJ8Ew" type="4006" source="_ZQjFQFWjEeKOivupHOJ8Ew" target="_85kMIFWjEeKOivupHOJ8Ew" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_86D7YFWjEeKOivupHOJ8Ew" type="6014">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_86D7YVWjEeKOivupHOJ8Ew" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_86D7YlWjEeKOivupHOJ8Ew" type="6015">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_86D7Y1WjEeKOivupHOJ8Ew" x="-4" y="-9"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_86CtQVWjEeKOivupHOJ8Ew" fontName="Sans Serif"/>
+ <element xmi:type="uml:Abstraction" href="HelloWorld.uml#_UPx34FWUEeKdxoQIVxFNNg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_86CtQlWjEeKOivupHOJ8Ew" points="[-81, -23, 28, 8]$[-109, -31, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Sqs9MFWkEeKOivupHOJ8Ew" type="4013" source="_obNuEFWiEeKOivupHOJ8Ew" target="_-4h4YFWREeKdxoQIVxFNNg" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Sqs9MVWkEeKOivupHOJ8Ew" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Sqs9MlWkEeKOivupHOJ8Ew" points="[-3, 8, 0, -33]$[20, 29, 23, -12]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SrQW0FWkEeKOivupHOJ8Ew" id="(0.5913461538461539,0.8666666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SrQW0VWkEeKOivupHOJ8Ew" id="(0.7925636007827789,0.1461187214611872)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7O5fMFZVEeKKZs15rvNNjA" type="4013" source="_wCUSAFZVEeKKZs15rvNNjA" target="_ZQjFQFWjEeKOivupHOJ8Ew" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_7O5fMVZVEeKKZs15rvNNjA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7O5fMlZVEeKKZs15rvNNjA" points="[-12, 19, 179, 93]$[-56, 19, 135, 93]$[-56, -16, 135, 58]$[-245, -16, -54, 58]$[-245, -51, -54, 23]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7PO2YFZVEeKKZs15rvNNjA" id="(0.06382978723404255,0.18333333333333332)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_71Q7oFZVEeKKZs15rvNNjA" type="4013" source="_wCUSAFZVEeKKZs15rvNNjA" target="_Z7T5gFWjEeKOivupHOJ8Ew" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_71Q7oVZVEeKKZs15rvNNjA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_71Q7olZVEeKKZs15rvNNjA" points="[-12, 8, 82, 0]$[-73, 9, 21, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71iBYFZVEeKKZs15rvNNjA" id="(0.06382978723404255,0.6166666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71iBYVZVEeKKZs15rvNNjA" id="(0.9106382978723404,0.640625)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_0rwpYDefEeGPyrZ5I3hMlA" type="CompositeStructure" name="HWArchitecture" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_1w2CIDefEeGPyrZ5I3hMlA" type="2073" fontName="" fontHeight="10" fillColor="10011046" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pMTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pMjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pMzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pNDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pNTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTZS4DegEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAM_QBMqEeK_iPOWsxJHwg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAM_QRMqEeK_iPOWsxJHwg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmUBMqEeK_iPOWsxJHwg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmURMqEeK_iPOWsxJHwg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmUhMqEeK_iPOWsxJHwg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w2pNjefEeGPyrZ5I3hMlA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1w2pNzefEeGPyrZ5I3hMlA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_4HLnYDefEeGPyrZ5I3hMlA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOcDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOcTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOcjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOczefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOdDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOdTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4HMOdjefEeGPyrZ5I3hMlA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ENwn8FWjEeKOivupHOJ8Ew" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EUBoAFWjEeKOivupHOJ8Ew" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4HMOdzefEeGPyrZ5I3hMlA" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4HMOeDefEeGPyrZ5I3hMlA" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HMOeTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Property" href="HelloWorld.uml#_4HAoQDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HLnYTefEeGPyrZ5I3hMlA" x="61" y="22" width="162"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1w2pODefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2pOTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Class" href="HelloWorld.uml#_tZvNQDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2CITefEeGPyrZ5I3hMlA" x="81" y="63" width="300" height="154"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7qMbIDefEeGPyrZ5I3hMlA" type="2072" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCMTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCMzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCNDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCNTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_85ECADefEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B_VokFWjEeKOivupHOJ8Ew" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B_WPoFWjEeKOivupHOJ8Ew" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B_WPoVWjEeKOivupHOJ8Ew" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B_WPolWjEeKOivupHOJ8Ew" key="PropStereoDisplay" value="FCM::Target.targetArch,FCM::Target.usedOS"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B_WPo1WjEeKOivupHOJ8Ew" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7qNCNjefEeGPyrZ5I3hMlA" type="5124"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7qNCNzefEeGPyrZ5I3hMlA" visible="false" type="7072">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7qNCODefEeGPyrZ5I3hMlA" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qNCOTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Node" href="HelloWorld.uml#_zY9vMDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qMbITefEeGPyrZ5I3hMlA" x="441" y="63" width="154" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jhQ20DegEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ20jegEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ20zegEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ21DegEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ21TegEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ21jegEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ21zegEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jhRd4DegEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="HelloWorld.uml#_jhF3sDegEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jhQ20TegEeGPyrZ5I3hMlA" x="435" y="183" width="277"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_0rwpYTefEeGPyrZ5I3hMlA"/>
+ <element xmi:type="uml:Package" href="HelloWorld.uml#_v3fMgDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ugb6IDegEeGPyrZ5I3hMlA" type="4002" source="_jhQ20DegEeGPyrZ5I3hMlA" target="_7qMbIDefEeGPyrZ5I3hMlA" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ugb6ITegEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ugb6IjegEeGPyrZ5I3hMlA" points="[-3, -6, 22, 58]$[-30, -51, -5, 13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugs_4DegEeGPyrZ5I3hMlA" id="(0.2815884476534296,0.05)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugs_4TegEeGPyrZ5I3hMlA" id="(0.4420289855072464,0.8266666666666667)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_ovKvYFWjEeKOivupHOJ8Ew" type="PapyrusUMLDeploymentDiagram" name="NewDeploymentDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_ovKvYVWjEeKOivupHOJ8Ew"/>
+ <element xmi:type="uml:Package" href="HelloWorld.uml#_234GEDLiEd2RVeNawwNNzg"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml
new file mode 100644
index 00000000000..a9843438e54
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/Alloc/1 http://www.eclipse.org/papyrus/MARTE/1#//Alloc">
+ <uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="HelloWorld">
+ <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_LOqIEDLaEd2qeKRLMdIx_A" name="components">
+ <ownedComment xmi:id="_-Hd2MDecEeGPyrZ5I3hMlA" annotatedElement="_tyiqsc__Ed-TP80eVS-2Rg">
+ <body>Simple HelloWorld component that prints a message in its &quot;run&quot; operation that is provided via the &quot;start&quot; port
+</body>
+ </ownedComment>
+ <ownedComment xmi:id="_0D64MDedEeGPyrZ5I3hMlA">
+ <annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <body>Part of the Qompass core model library. Provides the specific port &quot;start&quot;. The &quot;run&quot; operation (defined within interface IStart) of this port is called by generated boot-code after instantiation and configuration of a component. </body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tyiqsc__Ed-TP80eVS-2Rg" clientDependency="_Us15gFTzEeKvFeqt5Q_lqw" name="HelloWorld">
+ <ownedComment xmi:id="_SxvpUFT0EeKvFeqt5Q_lqw" annotatedElement="_8pupUFTzEeKvFeqt5Q_lqw">
+ <body>Configuration attribute within the Hello World component. Its value is configured on the instance level.</body>
+ </ownedComment>
+ <generalization xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ </generalization>
+ <ownedAttribute xmi:id="_8pupUFTzEeKvFeqt5Q_lqw" name="message" visibility="public" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__HwK8FTzEeKvFeqt5Q_lqw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__HwyAFTzEeKvFeqt5Q_lqw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__HynMFTzEeKvFeqt5Q_lqw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Us15gFTzEeKvFeqt5Q_lqw" name="derived realization of IStart" client="_tyiqsc__Ed-TP80eVS-2Rg">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tyjRwc__Ed-TP80eVS-2Rg" name="run" specification="_UtCt0FTzEeKvFeqt5Q_lqw">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;Hello world: &quot; &lt;&lt; message &lt;&lt; endl;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_UtCt0FTzEeKvFeqt5Q_lqw" name="run" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="System">
+ <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="hello" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCT24G6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCUd8G6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dCWTIG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_v3fMgDLiEd2RVeNawwNNzg" name="platform">
+ <ownedComment xmi:id="_jhF3sDegEeGPyrZ5I3hMlA" annotatedElement="_zY9vMDLiEd2RVeNawwNNzg">
+ <body>Simple single node configuration. TargetOS is set to Linux, but will work on any OS, since this simple example does not use the OS abstraction layer</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Node" xmi:id="_zY9vMDLiEd2RVeNawwNNzg" name="MonoNode"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tZvNQDefEeGPyrZ5I3hMlA" name="Platform">
+ <ownedAttribute xmi:id="_4HAoQDefEeGPyrZ5I3hMlA" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6WEg0DefEeGPyrZ5I3hMlA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6WFu8DefEeGPyrZ5I3hMlA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6WHkIDefEeGPyrZ5I3hMlA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_YxI8IDegEeGPyrZ5I3hMlA" name="HWArchitecturePlatform">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_GQ1ekKwHEeCQX8uv_p0Q4A" name="monoNode" classifier="_zY9vMDLiEd2RVeNawwNNzg"/>
+ </packagedElement>
+ <profileApplication xmi:id="_aOAnkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_aen2cKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_234GEDLiEd2RVeNawwNNzg" name="deployment">
+ <ownedComment xmi:id="_VMRFgDOJEeC7y-fR3OSnFw">
+ <body>This configuration requires the installation of the OTF trace library.&lt;br /></body>
+ </ownedComment>
+ <ownedComment xmi:id="_gdeyMDefEeGPyrZ5I3hMlA">
+ <body>Cross references to composite diagram</body>
+ </ownedComment>
+ <ownedComment xmi:id="_oZw8kFWiEeKOivupHOJ8Ew" annotatedElement="_yl9-AFT2EeKvFeqt5Q_lqw">
+ <body>Deployment plan for system, i.e. set of instance specification along with configuration and allocation</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Package" xmi:id="_yl9-AFT2EeKvFeqt5Q_lqw" name="SystemDepPlan">
+ <ownedComment xmi:id="_wAbboFZVEeKKZs15rvNNjA" annotatedElement="_ymErsFT2EeKvFeqt5Q_lqw _ymQR4FT2EeKvFeqt5Q_lqw">
+ <body>Value mainInstance.hello is a UML instance-value, i.e. a reference to the instance specification on the left.
+&quot;Test message&quot; is a StringValue initializing the message attribute</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_ymErsFT2EeKvFeqt5Q_lqw" clientDependency="_UPx34FWUEeKdxoQIVxFNNg" name="mainInstance" classifier="_bYJagDLiEd2RVeNawwNNzg">
+ <slot xmi:id="_ymQ48FT2EeKvFeqt5Q_lqw" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_ymRgAFT2EeKvFeqt5Q_lqw" instance="_ymQR4FT2EeKvFeqt5Q_lqw"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_ymQR4FT2EeKvFeqt5Q_lqw" name="mainInstance.hello" classifier="_tyiqsc__Ed-TP80eVS-2Rg">
+ <slot xmi:id="_tfj4gFUwEeKdxoQIVxFNNg" definingFeature="_8pupUFTzEeKvFeqt5Q_lqw">
+ <value xmi:type="uml:LiteralString" xmi:id="_tfni4FUwEeKdxoQIVxFNNg" name="value for message" value="&quot;Test message&quot;">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_UPx34FWUEeKdxoQIVxFNNg" name="allocate mainInstance to monoNode" client="_ymErsFT2EeKvFeqt5Q_lqw" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr9WwKwJEeCgusK7cm6qjQ" name="derivedInterfaces">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr_L8KwJEeCgusK7cm6qjQ" name="ProducerConsumer">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr_zAKwJEeCgusK7cm6qjQ" name="components">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lsBBIKwJEeCgusK7cm6qjQ" name="interfaces">
+ <packagedElement xmi:type="uml:Interface" xmi:id="_lsBoMKwJEeCgusK7cm6qjQ" name="D_Push_PubData">
+ <ownedOperation xmi:id="_lsKLEKwJEeCgusK7cm6qjQ" name="push">
+ <ownedParameter xmi:id="_lsMAQKwJEeCgusK7cm6qjQ" name="data"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AaULULGSEeCfWNndpgPDWA" name="D_PullConsumer_PubData">
+ <ownedOperation xmi:id="_Aa-SoLGSEeCfWNndpgPDWA" name="pull">
+ <ownedParameter xmi:id="_AbXUMLGSEeCfWNndpgPDWA" name="ret" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AbZwcLGSEeCfWNndpgPDWA" name="hasData">
+ <ownedParameter xmi:id="_Aba-kLGSEeCfWNndpgPDWA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_O6TiIjLUEd26WNosUASSSw">
+ <eAnnotations xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
+ <eAnnotations xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
+ <eAnnotations xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_sfyAwEbjEd-l4NeVOJZDkA">
+ <eAnnotations xmi:id="_siunEEbjEd-l4NeVOJZDkA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//GCM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_SPVg0KmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_Se6N4KmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_b9oZ5rG3Ed-tmN4hwNCxXQ"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_3VS0wAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_SfbyUKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_SuJjwKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_ResourceCore"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_-1fcUBJdEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_f2hIMKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_gEtVMKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_popJkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_p1PbIKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//HLAM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_yzqusKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_zCWq8KmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Brokering"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_Cf874BJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_6xYMIKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_6_6-cKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Interaction"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_EIfnABJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_tZuBwE0tEeG4IqgA7gSE6w">
+ <eAnnotations xmi:id="_tisXkE0tEeG4IqgA7gSE6w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:DerivedElement xmi:id="_RwGb8P6_Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_RxVyEP6_Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_RoIMoP94Ed6628OhKk_dpg"/>
+ <FCM:DerivedElement xmi:id="_IFlIEARJEd--t-uhRn9OBA"/>
+ <FCM:ContainerRule xmi:id="_b-TmAARJEd--t-uhRn9OBA">
+ <portSet href="pathmap://QML_CORE/core.uml#__SL-kNtxEd6nqsBVkgJEEA"/>
+ </FCM:ContainerRule>
+ <FCM:DerivedElement xmi:id="_bmwhUARMEd-OidZzGKCpzg"/>
+ <FCM:DerivedElement xmi:id="_xjNC4ATuEd-Zc_RSu20WjA"/>
+ <FCM:DerivedElement xmi:id="_LZoQ4AVIEd-rcKh6R_xjRQ"/>
+ <FCM:DerivedElement xmi:id="_oMpYkAWxEd-jrvNV_WQOlA"/>
+ <FCM:DerivedElement xmi:id="_Fd6d0AnREd-co_m_wv4b6A"/>
+ <FCM:DerivedElement xmi:id="_uLARMBGVEd-rfYlCjUOxJQ"/>
+ <FCM:DerivedElement xmi:id="_qdjxQBGkEd-Jq_XWT8Mhpg"/>
+ <FCM:DerivedElement xmi:id="_VOzfEBGlEd-Jq_XWT8Mhpg"/>
+ <FCM:DerivedElement xmi:id="_N8BrMBI4Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_jIS30BI8Ed-XjYZ05V-9-Q"/>
+ <FCM:DerivedElement xmi:id="_E5UhUBJIEd-XjYZ05V-9-Q"/>
+ <FCM:DerivedElement xmi:id="_THoRwBJWEd-QgZm_R1AKbA"/>
+ <FCM:DerivedElement xmi:id="_z0CVcBQ2Ed-_dI0JopJMvQ"/>
+ <FCM:DerivedElement xmi:id="_Ke_UsBb7Ed-u0pMEAnvpEQ"/>
+ <FCM:DerivedElement xmi:id="_uOkD4D15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_a4LokD16Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <Cpp:CppInclude xmi:id="_11OtwPcaEd-KM6l7lmIPkw" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <FCM:Target xmi:id="_LD_uICr7EeCfcI_SvPT4lw" base_Node="_zY9vMDLiEd2RVeNawwNNzg">
+ <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ </FCM:Target>
+ <FCM:DerivedElement xmi:id="_lsJkAKwJEeCgusK7cm6qjQ" base_Element="_lsBoMKwJEeCgusK7cm6qjQ"/>
+ <FCM:DerivedElement xmi:id="_AawQMLGSEeCfWNndpgPDWA" base_Element="_AaULULGSEeCfWNndpgPDWA"/>
+ <FCM:Connector xmi:id="_iADdkE2rEeGl8qrc8BM7vA">
+ <ic href="pathmap://QML_CORE/fifo.uml#_xQ_ccHUuEd6R5tffIPrlPg"/>
+ </FCM:Connector>
+ <FCM:DerivedElement xmi:id="_UtTMgFTzEeKvFeqt5Q_lqw" base_Element="_UtCt0FTzEeKvFeqt5Q_lqw">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:ConfigurationProperty xmi:id="_KTwJUFT0EeKvFeqt5Q_lqw" base_Property="_8pupUFTzEeKvFeqt5Q_lqw"/>
+ <FCM:DeploymentPlan xmi:id="_ymC2gFT2EeKvFeqt5Q_lqw" mainInstance="_ymErsFT2EeKvFeqt5Q_lqw" base_Package="_yl9-AFT2EeKvFeqt5Q_lqw"/>
+ <Alloc:Allocate xmi:id="_UP7B0FWUEeKdxoQIVxFNNg" base_Abstraction="_UPx34FWUEeKdxoQIVxFNNg"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.di
new file mode 100644
index 00000000000..8ead0589857
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.di
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmi:id="_M_WAwPcXEd-KM6l7lmIPkw">
+ <pageList xmi:id="_M_WAwfcXEd-KM6l7lmIPkw">
+ <availablePage xmi:id="_M_WAwvcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_UstOsM__Ed-TP80eVS-2Rg"/>
+ </availablePage>
+ <availablePage xmi:id="_M_WAxPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_7kc7YM__Ed-TP80eVS-2Rg"/>
+ </availablePage>
+ <availablePage xmi:id="_M_WAxfcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_o6ZisNCREd-hqYHBJe17_Q"/>
+ </availablePage>
+ <availablePage xmi:id="_U1docPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_U1UegPcXEd-KM6l7lmIPkw"/>
+ </availablePage>
+ <availablePage xmi:id="_V5fVYP8nEd-hWJO6cv3VJA">
+ <emfPageIdentifier href="ProducerConsumer.notation#_V5euUP8nEd-hWJO6cv3VJA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ProducerConsumer.notation#_0rwpYDefEeGPyrZ5I3hMlA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ProducerConsumer.notation#_HvdK0FZYEeKKZs15rvNNjA"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_M_WAxvcXEd-KM6l7lmIPkw" currentSelection="_M_WAyPcXEd-KM6l7lmIPkw">
+ <windows xmi:id="_M_WAx_cXEd-KM6l7lmIPkw">
+ <children xsi:type="di:TabFolder" xmi:id="_M_WAyPcXEd-KM6l7lmIPkw">
+ <children xmi:id="_M_WAyfcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_UstOsM__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:id="_M_WAy_cXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_7kc7YM__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerConsumer.notation#_U1UegPcXEd-KM6l7lmIPkw"/>
+ </children>
+ <children xmi:id="_V5fVYf8nEd-hWJO6cv3VJA">
+ <emfPageIdentifier href="ProducerConsumer.notation#_V5euUP8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerConsumer.notation#_0rwpYDefEeGPyrZ5I3hMlA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerConsumer.notation#_o6ZisNCREd-hqYHBJe17_Q"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerConsumer.notation#_HvdK0FZYEeKKZs15rvNNjA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation
new file mode 100644
index 00000000000..be02b60d88e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation
@@ -0,0 +1,1010 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_UstOsM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="PushConsumer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VT2HMM__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2HMs__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uQM__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2uQc__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uQs__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2uQ8__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uRM__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VT2uRc__Ed-TP80eVS-2Rg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VT2uRs__Ed-TP80eVS-2Rg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VT2uR8__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XgvckM__Ed-TP80eVS-2Rg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwDoM__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XgwDoc__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwDos__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XgwDo8__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwqsM__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgwqsc__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Dym0EJZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDcT4FZ3EeK5f41mmHszag" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDc68FZ3EeK5f41mmHszag" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort,FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDc68VZ3EeK5f41mmHszag" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDc68lZ3EeK5f41mmHszag" key="PropStereoDisplay" value="FCM::Port.kind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDc681Z3EeK5f41mmHszag" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xgwqss__Ed-TP80eVS-2Rg" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Xgwqs8__Ed-TP80eVS-2Rg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XgwqtM__Ed-TP80eVS-2Rg" type="6029">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fex2IFZ0EeK5f41mmHszag" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzMFZ3EeK5f41mmHszag" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzMVZ3EeK5f41mmHszag" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzMlZ3EeK5f41mmHszag" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzM1Z3EeK5f41mmHszag" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzNFZ3EeK5f41mmHszag" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Xgwqtc__Ed-TP80eVS-2Rg" x="-62" y="-65"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xgvckc__Ed-TP80eVS-2Rg" x="-10" y="38"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VT2HMc__Ed-TP80eVS-2Rg" x="144" y="36" width="172" height="87"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XfxXsDecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5gDecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5gTecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5gjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5gzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5hDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5hTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xgz5hjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_XfnmsDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XfxXsTecEeGPyrZ5I3hMlA" x="351" y="36" width="163" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gpzeUDecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FYDecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FYTecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FYjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FYzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FZDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FZTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gp0FZjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_gpptUDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gpzeUTecEeGPyrZ5I3hMlA" x="63" y="144" width="451"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_UstOsc__Ed-TP80eVS-2Rg"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_OGM88DLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_fsWXkDecEeGPyrZ5I3hMlA" type="4002" source="_XfxXsDecEeGPyrZ5I3hMlA" target="_VT2HMM__Ed-TP80eVS-2Rg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_fsWXkTecEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fsWXkjecEeGPyrZ5I3hMlA" points="[-1, -3, 19, 74]$[4, -33, 24, 44]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fsndUDecEeGPyrZ5I3hMlA" id="(0.3893805309734513,0.05)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_l-KT4DecEeGPyrZ5I3hMlA" type="4002" source="_gpzeUDecEeGPyrZ5I3hMlA" target="_XgvckM__Ed-TP80eVS-2Rg" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_l-KT4TecEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l-KT4jecEeGPyrZ5I3hMlA" points="[-17, -2, -29, 63]$[-17, -62, -29, 3]$[9, -62, -3, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsDecEeGPyrZ5I3hMlA" id="(0.14832535885167464,0.03333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsTecEeGPyrZ5I3hMlA" id="(0.15,0.35)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_7kc7YM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="PullConsumer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_8LSR4M__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LSR4s__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LSR48__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LS48M__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LS48c__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LS48s__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LS488__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HIdDoJZ9EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MJZ9EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MZZ9EeCiU5xXzp1cKQ" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MpZ9EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--M5Z9EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--NJZ9EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8LS49M__Ed-TP80eVS-2Rg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8LS49c__Ed-TP80eVS-2Rg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LS49s__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ytK8IP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" gradient="8421504, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytLjMP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytLjMf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytLjMv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytLjM_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytMKQP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytMKQf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sZ6LcFZWEeKKZs15rvNNjA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sogoIFZWEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sogoIVZWEeKKZs15rvNNjA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sogoIlZWEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sogoI1ZWEeKKZs15rvNNjA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sohPMFZWEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ytMKQv8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-iwEgFZ0EeK5f41mmHszag" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-o9aMFZ0EeK5f41mmHszag" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKQ_8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ytMKRP8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKRf8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ytK8If8nEd-hWJO6cv3VJA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_t6X3UJaMEeCbgbUO5qahhA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZFcJaMEeCbgbUO5qahhA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6ZFcZaMEeCbgbUO5qahhA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZsgJaMEeCbgbUO5qahhA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6ZsgZaMEeCbgbUO5qahhA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZsgpaMEeCbgbUO5qahhA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6Zsg5aMEeCbgbUO5qahhA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wOa9kJaMEeCbgbUO5qahhA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_KQFZ0EeK5f41mmHszag" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_xUFZ0EeK5f41mmHszag" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort,FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_xUVZ0EeK5f41mmHszag" key="PropStereoDisplay" value="FCM::Port.kind,FCM::Port.requiredInterface"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_xUlZ0EeK5f41mmHszag" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_xU1Z0EeK5f41mmHszag" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t6ZshJaMEeCbgbUO5qahhA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__Cf7kFZ0EeK5f41mmHszag" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__K9UAFZ0EeK5f41mmHszag" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t6ZshZaMEeCbgbUO5qahhA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t6aTkJaMEeCbgbUO5qahhA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t6aTkZaMEeCbgbUO5qahhA" x="-8" y="45"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t6X3UZaMEeCbgbUO5qahhA" x="-10" y="72"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JxylQFZ0EeK5f41mmHszag" visible="false" type="AppliedStereotypeCompartement">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JxylQVZ0EeK5f41mmHszag" showTitle="true"/>
+ <element xmi:type="Cpp:CppInclude" href="ProducerConsumer.uml#_11OtwPcaEd-KM6l7lmIPkw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JxylQlZ0EeK5f41mmHszag"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JxzMUFZ0EeK5f41mmHszag" visible="false" type="AppliedStereotypeCompartement">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JxzMUVZ0EeK5f41mmHszag" showTitle="true"/>
+ <element xmi:type="FCM:RuleApplication" href="ProducerConsumer.uml#_FeS3AF7zEeGA7qTe7UD05A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JxzMUlZ0EeK5f41mmHszag"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LSR4c__Ed-TP80eVS-2Rg" x="162" y="162" width="254" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uHcuMP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVQP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVQf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVQv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVQ_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVRP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVRf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uHdVRv8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uHdVR_8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHd8UP8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xVmsQP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTUP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVnTUf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTUv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVnTU_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTVP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVn6YP8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qnfyoFZWEeKKZs15rvNNjA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YBsFZWEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YBsVZWEeKKZs15rvNNjA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowFZWEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowVZWEeKKZs15rvNNjA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowlZWEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVn6Yf8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__hZeEFZ0EeK5f41mmHszag" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nGdcFZ0EeK5f41mmHszag" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6Yv8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVn6Y_8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6ZP8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xVmsQf8nEd-hWJO6cv3VJA" x="-10" y="29"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHcuMf8nEd-hWJO6cv3VJA" x="162" y="36" width="253" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-HlK8DecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyADecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyATecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyAjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyAzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyBDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyBTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-HlyBjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_-Hd2MDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HlK8TecEeGPyrZ5I3hMlA" x="468" y="135" width="295"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0EFQQDedEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UDedEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3UTedEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UjedEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3UzedEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3VDedEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3VTedEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0EF3VjedEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_0D64MDedEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0EFQQTedEeGPyrZ5I3hMlA" x="468" y="36" width="295"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_7kc7Yc__Ed-TP80eVS-2Rg"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_tyiqsM__Ed-TP80eVS-2Rg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_uHz6kP8nEd-hWJO6cv3VJA" type="4015" source="_8LSR4M__Ed-TP80eVS-2Rg" target="_uHcuMP8nEd-hWJO6cv3VJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uH0hoP8nEd-hWJO6cv3VJA" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uH0hof8nEd-hWJO6cv3VJA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uHz6kf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="ProducerConsumer.uml#_tyiqss__Ed-TP80eVS-2Rg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uHz6kv8nEd-hWJO6cv3VJA" points="[-103, -45, 204, 90]$[-307, -135, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FOfGwDeeEeGPyrZ5I3hMlA" type="4002" source="_0EFQQDedEeGPyrZ5I3hMlA" target="_uHcuMP8nEd-hWJO6cv3VJA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_FOfGwTeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FOfGwjeeEeGPyrZ5I3hMlA" points="[-6, -3, 83, 0]$[-62, -3, 27, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgDeeEeGPyrZ5I3hMlA" id="(0.020338983050847456,0.4027777777777778)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgTeeEeGPyrZ5I3hMlA" id="(0.8932806324110671,0.5205479452054794)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_F4Ju0DeeEeGPyrZ5I3hMlA" type="4002" source="_-HlK8DecEeGPyrZ5I3hMlA" target="_8LSR4M__Ed-TP80eVS-2Rg" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_F4Ju0TeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F4Ju0jeeEeGPyrZ5I3hMlA" points="[-25, 21, 78, 0]$[-80, 21, 23, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kDeeEeGPyrZ5I3hMlA" id="(0.01694915254237288,0.5681818181818182)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kTeeEeGPyrZ5I3hMlA" id="(0.9724409448818898,0.42201834862385323)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_o6ZisNCREd-hqYHBJe17_Q" type="CompositeStructure" name="System Pull" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VSa6YNHtEd-A1oPfP47IaQ" type="2073" fontName="" fontHeight="10" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScIgNHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvkNHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScvkdHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvktHtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScvk9HtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvlNHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VScvldHtEd-A1oPfP47IaQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VScvltHtEd-A1oPfP47IaQ" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_XsS70NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi4NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi4dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi4tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi49HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi5NHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi5dHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XsTi5tHtEd-A1oPfP47IaQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5r3JsFZWEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6tdJkFZWEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XsTi59HtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsUJ8NHtEd-A1oPfP47IaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0XlXwDF1EeCpQdhNuFCtew" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM8DF1EeCpQdhNuFCtew" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM8TF1EeCpQdhNuFCtew" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM8jF1EeCpQdhNuFCtew" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM8zF1EeCpQdhNuFCtew" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM9DF1EeCpQdhNuFCtew" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM9TF1EeCpQdhNuFCtew" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t7uK4JZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9AJZ7EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9AZZ7EeCiU5xXzp1cKQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9ApZ7EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9A5Z7EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueikEJZ7EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Xn0ADF1EeCpQdhNuFCtew" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4jWCcFZWEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4qOGgFZWEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Xn0ATF1EeCpQdhNuFCtew" x="31" y="-1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Xn0AjF1EeCpQdhNuFCtew" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Xn0AzF1EeCpQdhNuFCtew" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0XlXwTF1EeCpQdhNuFCtew" x="-10" y="50"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_gV1cgDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsS70dHtEd-A1oPfP47IaQ" x="361" y="18" width="193" height="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YNar4NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS8NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS8dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS8tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS89HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS9NHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS9dHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YNbS9tHtEd-A1oPfP47IaQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7rNyUFZWEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7ztnAFZWEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_YNbS99HtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YNbS-NHtEd-A1oPfP47IaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zmq8ANHtEd-A1oPfP47IaQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKINHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKIdHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKItHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKI9HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKJNHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKJdHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ow9WMJZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgJZ7EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgZZ7EeCiU5xXzp1cKQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgpZ7EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlcLkJZ7EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlcLkZZ7EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zmsKJtHtEd-A1oPfP47IaQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_34a2IFZWEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4ARKkFZWEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zmsxMNHtEd-A1oPfP47IaQ" x="-84" y="1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zmsxMdHtEd-A1oPfP47IaQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zmsxMtHtEd-A1oPfP47IaQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zmq8AdHtEd-A1oPfP47IaQ" x="159" y="48"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_i-I7gDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YNar4dHtEd-A1oPfP47IaQ" x="22" y="18" width="169" height="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JusbQDbdEeGdqp2YT1LwWw" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCUDbdEeGdqp2YT1LwWw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCUTbdEeGdqp2YT1LwWw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCUjbdEeGdqp2YT1LwWw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCUzbdEeGdqp2YT1LwWw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCVDbdEeGdqp2YT1LwWw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCVTbdEeGdqp2YT1LwWw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JutCVjbdEeGdqp2YT1LwWw" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_JuaHYDbdEeGdqp2YT1LwWw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JusbQTbdEeGdqp2YT1LwWw" x="355" y="121" width="199" height="44"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lM7ZUDeeEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lM7ZUjeeEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lM7ZUzeeEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lM8AYDeeEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lM8AYTeeEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lM8AYjeeEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lM8AYzeeEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lM8AZDeeEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_lMxBQDeeEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lM7ZUTeeEeGPyrZ5I3hMlA" x="4" y="121" width="343"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VScvl9HtEd-A1oPfP47IaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_bYJagDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSa6YdHtEd-A1oPfP47IaQ" x="18" y="18" width="604" height="244"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_o6ZisdCREd-hqYHBJe17_Q"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_XLQjUDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_fPo0MDbdEeGdqp2YT1LwWw" type="4002" source="_JusbQDbdEeGdqp2YT1LwWw" target="_XsS70NHtEd-A1oPfP47IaQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_fPo0MTbdEeGdqp2YT1LwWw" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fPo0MjbdEeGdqp2YT1LwWw" points="[2, -6, -18, 35]$[17, -24, -3, 17]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fQJKgDbdEeGdqp2YT1LwWw" id="(0.5121951219512195,0.125)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fQJKgTbdEeGdqp2YT1LwWw" id="(0.48186528497409326,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_efaBUE2rEeGl8qrc8BM7vA" type="4013" source="_zmq8ANHtEd-A1oPfP47IaQ" target="_0XlXwDF1EeCpQdhNuFCtew" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iqb3UE2rEeGl8qrc8BM7vA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bRlQFZXEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bRlQVZXEeKKZs15rvNNjA" key="StereotypeList" value="FCM::Connector"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bRlQlZXEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bSMUFZXEeKKZs15rvNNjA" key="PropStereoDisplay" value="FCM::Connector.ic"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bSMUVZXEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="With brace"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efaoYE2rEeGl8qrc8BM7vA" type="6025">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j_ovsE2rEeGl8qrc8BM7vA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIE2rEeGl8qrc8BM7vA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIU2rEeGl8qrc8BM7vA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIk2rEeGl8qrc8BM7vA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZII02rEeGl8qrc8BM7vA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIJE2rEeGl8qrc8BM7vA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efaoYU2rEeGl8qrc8BM7vA" x="-4" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efaoYk2rEeGl8qrc8BM7vA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efaoY02rEeGl8qrc8BM7vA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efbPcE2rEeGl8qrc8BM7vA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efbPcU2rEeGl8qrc8BM7vA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efbPck2rEeGl8qrc8BM7vA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efbPc02rEeGl8qrc8BM7vA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_efaBUU2rEeGl8qrc8BM7vA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ProducerConsumer.uml#_efVI0E2rEeGl8qrc8BM7vA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efaBUk2rEeGl8qrc8BM7vA" points="[3, 1, -160, -2]$[160, -7, -3, -10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efmOkE2rEeGl8qrc8BM7vA" id="(0.85,0.45)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_g2IoIE2rEeGl8qrc8BM7vA" type="4002" source="_lM7ZUDeeEeGPyrZ5I3hMlA" target="_efaBUE2rEeGl8qrc8BM7vA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_g2JPME2rEeGl8qrc8BM7vA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g2JPMU2rEeGl8qrc8BM7vA" points="[1, -5, 0, 43]$[1, -48, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g2TAME2rEeGl8qrc8BM7vA" id="(0.7755102040816326,0.06944444444444445)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g2TAMU2rEeGl8qrc8BM7vA" id="(0.4689265536723164,0.48148148148148145)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_U1UegPcXEd-KM6l7lmIPkw" type="PapyrusUMLClassDiagram" name="deployment" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_FGfloCghEeCw56aD7XrQhw" type="2016" element="_7kc7YM__Ed-TP80eVS-2Rg" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGgMsCghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGgMsSghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGgMsighEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGgMsyghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGlsQCghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGmTUCghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FGmTUSghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FGmTUighEeCw56aD7XrQhw" y="5"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FGfloSghEeCw56aD7XrQhw" x="48" y="24" width="34" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GQM_sCghEeCw56aD7XrQhw" type="2016" element="_UstOsM__Ed-TP80eVS-2Rg" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmwSghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmwighEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmwyghEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmxCghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmxSghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmxighEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GQON0CghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GQON0SghEeCw56aD7XrQhw" x="-20" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQNmwCghEeCw56aD7XrQhw" x="145" y="24" width="34" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JhfKQCghEeCw56aD7XrQhw" type="2016" element="_V5euUP8nEd-hWJO6cv3VJA" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfKQighEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxUCghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfxUSghEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxUighEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfxUyghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxVCghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JhfxVSghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JhfxVighEeCw56aD7XrQhw" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhfKQSghEeCw56aD7XrQhw" x="266" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LGTzACghEeCw56aD7XrQhw" type="2016" element="_o6ZisNCREd-hqYHBJe17_Q" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaECghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGUaESghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaEighEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGUaEyghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaFCghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGVBICghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LGVBISghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LGVBIighEeCw56aD7XrQhw" x="9" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LGTzASghEeCw56aD7XrQhw" x="371" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_91n2kDOFEeCldqx_51Yicg" type="2007" fontName="Sans Serif" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91prwDOFEeCldqx_51Yicg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91prwTOFEeCldqx_51Yicg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91prwjOFEeCldqx_51Yicg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91prwzOFEeCldqx_51Yicg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91qS0DOFEeCldqx_51Yicg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91qS0TOFEeCldqx_51Yicg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_91qS0jOFEeCldqx_51Yicg" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_91qS0zOFEeCldqx_51Yicg" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_91qS1DOFEeCldqx_51Yicg"/>
+ </children>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_xBxwoDOFEeCldqx_51Yicg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_91n2kTOFEeCldqx_51Yicg" x="36" y="144" width="199" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1GDBwLGREeCfWNndpgPDWA" type="2007" fontName="Sans Serif" fillColor="8047085" transparency="100" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOA4LGREeCfWNndpgPDWA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOA4bGREeCfWNndpgPDWA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOA4rGREeCfWNndpgPDWA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOA47GREeCfWNndpgPDWA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOn8LGREeCfWNndpgPDWA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOn8bGREeCfWNndpgPDWA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1GOn8rGREeCfWNndpgPDWA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1GOn87GREeCfWNndpgPDWA" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GOn9LGREeCfWNndpgPDWA"/>
+ </children>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_zwMLcLF4EeC9yscvWqW-eg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GDBwbGREeCfWNndpgPDWA" x="306" y="144" width="198" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gdmuADefEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdmuAjefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdmuAzefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdmuBDefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdmuBTefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdnVEDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdnVETefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gdnVEjefEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_gdeyMDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gdmuATefEeGPyrZ5I3hMlA" x="498" y="18" width="115" height="46"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_U1UegfcXEd-KM6l7lmIPkw"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_234GEDLiEd2RVeNawwNNzg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_V5euUP8nEd-hWJO6cv3VJA" type="CompositeStructure" name="Publisher" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Wky8MP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KUP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KUf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KUv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KU_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KVP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KVf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wk0xYP8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wk0xYf8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wk0xYv8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eCjHMP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCjuQP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCjuQf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCkVUP8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCkVUf8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCkVUv8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCkVU_8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LFYVIFWlEeKOivupHOJ8Ew" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMMFWlEeKOivupHOJ8Ew" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMMVWlEeKOivupHOJ8Ew" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMMlWlEeKOivupHOJ8Ew" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMM1WlEeKOivupHOJ8Ew" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMNFWlEeKOivupHOJ8Ew" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eCkVVP8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Dz37gFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D7CTcFZXEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eCkVVf8nEd-hWJO6cv3VJA" x="-89"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eCkVVv8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eCkVV_8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eCjHMf8nEd-hWJO6cv3VJA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fwpAsP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpAsv8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpAs_8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpnwP8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpnwf8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpnwv8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpnw_8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Nkol0FWlEeKOivupHOJ8Ew" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zQFZ0EeK5f41mmHszag" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zQVZ0EeK5f41mmHszag" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort,FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zQlZ0EeK5f41mmHszag" key="PropStereoDisplay" value="FCM::Port.kind,FCM::Port.requiredInterface"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zQ1Z0EeK5f41mmHszag" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zRFZ0EeK5f41mmHszag" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fwpnxP8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EVFyMFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EhugAFZXEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fwpnxf8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fwpnxv8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fwpnx_8nEd-hWJO6cv3VJA" x="27" y="-18"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fwpAsf8nEd-hWJO6cv3VJA" x="117" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_IfjoETLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wky8Mf8nEd-hWJO6cv3VJA" x="144" y="108" width="136" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XKXHYP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXHYv8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXucP8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXucf8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXucv8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXuc_8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXudP8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XKXudf8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XKXudv8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XKXud_8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_euJo8P8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euKQAP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euKQAf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euKQAv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euK3EP8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euK3Ef8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euK3Ev8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JVivMFWlEeKOivupHOJ8Ew" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jve5MFWlEeKOivupHOJ8Ew" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQFWlEeKOivupHOJ8Ew" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQVWlEeKOivupHOJ8Ew" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQlWlEeKOivupHOJ8Ew" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQ1WlEeKOivupHOJ8Ew" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_euK3E_8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DRgOQFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DYoxAFZXEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_euK3FP8nEd-hWJO6cv3VJA" x="-89" y="-2"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_euK3Ff8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_euK3Fv8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_euJo8f8nEd-hWJO6cv3VJA" x="-10" y="27"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XKXHYf8nEd-hWJO6cv3VJA" x="144" y="18" width="136" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Gz7TMDehEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA4DehEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0CA4TehEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA4jehEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0CA4zehEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA5DehEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0Cn8DehEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G0Cn8TehEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_GzyJQDehEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gz7TMTehEeGPyrZ5I3hMlA" x="342" y="18" width="344"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_V5euUf8nEd-hWJO6cv3VJA"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_etOZkDLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_XKqpYP8nEd-hWJO6cv3VJA" type="4015" source="_Wky8MP8nEd-hWJO6cv3VJA" target="_XKXHYP8nEd-hWJO6cv3VJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XKrQcP8nEd-hWJO6cv3VJA" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XKrQcf8nEd-hWJO6cv3VJA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XKqpYf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="ProducerConsumer.uml#_34FjAPx3Ed6O2oOTPfeAMA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XKqpYv8nEd-hWJO6cv3VJA" points="[-19, -23, 140, 174]$[-159, -197, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aJG_MDehEeGPyrZ5I3hMlA" type="4002" source="_Gz7TMDehEeGPyrZ5I3hMlA" target="_XKXHYP8nEd-hWJO6cv3VJA" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_aJG_MTehEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aJG_MjehEeGPyrZ5I3hMlA" points="[-12, -5, 80, 30]$[-82, -36, 10, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aJdkgDehEeGPyrZ5I3hMlA" id="(0.02823529411764706,0.4166666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aJeLkDehEeGPyrZ5I3hMlA" id="(0.9212598425196851,0.4909090909090909)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_0rwpYDefEeGPyrZ5I3hMlA" type="CompositeStructure" name="HWArchitecture" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_1w2CIDefEeGPyrZ5I3hMlA" type="2073" fontName="" fontHeight="10" fillColor="10011046" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pMTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pMjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pMzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pNDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pNTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTZS4DegEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAM_QBMqEeK_iPOWsxJHwg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAM_QRMqEeK_iPOWsxJHwg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmUBMqEeK_iPOWsxJHwg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmURMqEeK_iPOWsxJHwg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmUhMqEeK_iPOWsxJHwg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w2pNjefEeGPyrZ5I3hMlA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1w2pNzefEeGPyrZ5I3hMlA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_4HLnYDefEeGPyrZ5I3hMlA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOcDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOcTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOcjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOczefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOdDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOdTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4HMOdjefEeGPyrZ5I3hMlA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UodTAFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UsmzMFZXEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4HMOdzefEeGPyrZ5I3hMlA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4HMOeDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HMOeTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_4HAoQDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HLnYTefEeGPyrZ5I3hMlA" x="61" y="22" width="162"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1w2pODefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2pOTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_tZvNQDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2CITefEeGPyrZ5I3hMlA" x="81" y="63" width="300" height="154"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7qMbIDefEeGPyrZ5I3hMlA" type="2072" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCMTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCMzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCNDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCNTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_85ECADefEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVYFZXEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVYVZXEeKKZs15rvNNjA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVYlZXEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVY1ZXEeKKZs15rvNNjA" key="PropStereoDisplay" value="FCM::Target.targetArch,FCM::Target.usedOS"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVZFZXEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7qNCNjefEeGPyrZ5I3hMlA" type="5124"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7qNCNzefEeGPyrZ5I3hMlA" visible="false" type="7072">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7qNCODefEeGPyrZ5I3hMlA" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qNCOTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Node" href="ProducerConsumer.uml#_zY9vMDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qMbITefEeGPyrZ5I3hMlA" x="441" y="63" width="154" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jhQ20DegEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ20jegEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ20zegEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ21DegEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ21TegEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ21jegEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ21zegEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jhRd4DegEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_jhF3sDegEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jhQ20TegEeGPyrZ5I3hMlA" x="435" y="183" width="277"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_0rwpYTefEeGPyrZ5I3hMlA"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_v3fMgDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ugb6IDegEeGPyrZ5I3hMlA" type="4002" source="_jhQ20DegEeGPyrZ5I3hMlA" target="_7qMbIDefEeGPyrZ5I3hMlA" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ugb6ITegEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ugb6IjegEeGPyrZ5I3hMlA" points="[-11, -6, 7, 38]$[-11, -26, 7, 18]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugs_4DegEeGPyrZ5I3hMlA" id="(0.33212996389891697,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugs_4TegEeGPyrZ5I3hMlA" id="(0.4420289855072464,0.8266666666666667)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_HvdK0FZYEeKKZs15rvNNjA" type="CompositeStructure" name="System Push" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_U0B0YFZYEeKKZs15rvNNjA" type="2073" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U0CbcFZYEeKKZs15rvNNjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U0CbcVZYEeKKZs15rvNNjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U0DCgFZYEeKKZs15rvNNjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U0DCgVZYEeKKZs15rvNNjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U0DCglZYEeKKZs15rvNNjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U0DCg1ZYEeKKZs15rvNNjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U0DChFZYEeKKZs15rvNNjA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_U0DChVZYEeKKZs15rvNNjA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_Zgd44FZZEeKb1bjLi8P_oQ" type="3070" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zgg8MFZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zgg8MVZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zgg8MlZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZghjQFZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZghjQVZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZghjQlZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZghjQ1ZZEeKb1bjLi8P_oQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dtKi0FZZEeKb1bjLi8P_oQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d00qAFZZEeKb1bjLi8P_oQ" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZghjRFZZEeKb1bjLi8P_oQ" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZghjRVZZEeKb1bjLi8P_oQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZghjRlZZEeKb1bjLi8P_oQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kzTfEFZZEeKb1bjLi8P_oQ" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kzUGIFZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kzUGIVZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kzUGIlZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kzUGI1ZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kzUGJFZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kzUGJVZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nsJUcFZZEeKb1bjLi8P_oQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXswFZZEeKb1bjLi8P_oQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXswVZZEeKb1bjLi8P_oQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXswlZZEeKb1bjLi8P_oQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXsw1ZZEeKb1bjLi8P_oQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXsxFZZEeKb1bjLi8P_oQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kzUGJlZZEeKb1bjLi8P_oQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qpl9AFZZEeKb1bjLi8P_oQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qw77IVZZEeKb1bjLi8P_oQ" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kzUGJ1ZZEeKb1bjLi8P_oQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kzUGKFZZEeKb1bjLi8P_oQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kzUGKVZZEeKb1bjLi8P_oQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kzTfEVZZEeKb1bjLi8P_oQ" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_iP8c4dCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zgef8FZZEeKb1bjLi8P_oQ" x="370" y="21" width="177" height="78"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aKa00FZZEeKb1bjLi8P_oQ" type="3070" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aKbb4FZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aKbb4VZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aKbb4lZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aKbb41ZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aKbb5FZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aKbb5VZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aKbb5lZZEeKb1bjLi8P_oQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cojEIFZZEeKb1bjLi8P_oQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cu9OIFZZEeKb1bjLi8P_oQ" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aKcC8FZZEeKb1bjLi8P_oQ" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aKcC8VZZEeKb1bjLi8P_oQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aKcC8lZZEeKb1bjLi8P_oQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iJQToFZZEeKb1bjLi8P_oQ" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iJQ6sFZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iJQ6sVZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iJQ6slZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iJQ6s1ZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iJQ6tFZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iJQ6tVZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pe8u0FZZEeKb1bjLi8P_oQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHMFZZEeKb1bjLi8P_oQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHMVZZEeKb1bjLi8P_oQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHMlZZEeKb1bjLi8P_oQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHM1ZZEeKb1bjLi8P_oQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHNFZZEeKb1bjLi8P_oQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iJQ6tlZZEeKb1bjLi8P_oQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qplV8FZZEeKb1bjLi8P_oQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qw77IFZZEeKb1bjLi8P_oQ" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJQ6t1ZZEeKb1bjLi8P_oQ" x="-71" y="4"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iJRhwFZZEeKb1bjLi8P_oQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJRhwVZZEeKb1bjLi8P_oQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJQToVZZEeKb1bjLi8P_oQ" x="134" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_iP8c4tCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aKa00VZZEeKb1bjLi8P_oQ" x="37" y="21" width="144" height="78"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a6zv8FZZEeKb1bjLi8P_oQ" type="3097" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a60XAFZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a60XAVZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a60-EFZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a60-EVZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a60-ElZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a60-E1ZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a60-FFZZEeKb1bjLi8P_oQ" type="5150"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_KOEwwDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a6zv8VZZEeKb1bjLi8P_oQ" x="244" y="129" width="290" height="55"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_U0DChlZYEeKKZs15rvNNjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U0DCh1ZYEeKKZs15rvNNjA"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_iP8c4NCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U0B0YVZYEeKKZs15rvNNjA" x="36" y="27" width="604" height="226"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_HvdK0VZYEeKKZs15rvNNjA"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_XLQjUDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_wxMNYFZZEeKb1bjLi8P_oQ" type="4013" source="_iJQToFZZEeKb1bjLi8P_oQ" target="_kzTfEFZZEeKb1bjLi8P_oQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wxNbgFZZEeKb1bjLi8P_oQ" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wxNbgVZZEeKb1bjLi8P_oQ" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wxNbglZZEeKb1bjLi8P_oQ" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wxNbg1ZZEeKb1bjLi8P_oQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wxNbhFZZEeKb1bjLi8P_oQ" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wxNbhVZZEeKb1bjLi8P_oQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wxNbhlZZEeKb1bjLi8P_oQ" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wxNbh1ZZEeKb1bjLi8P_oQ" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wxMNYVZZEeKb1bjLi8P_oQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Connector" href="ProducerConsumer.uml#_iP8c49CREd-hqYHBJe17_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wxMNYlZZEeKb1bjLi8P_oQ" points="[10, 5, -179, 0]$[179, 0, -10, -5]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Nr2l4FZaEeKb1bjLi8P_oQ" type="4002" source="_a6zv8FZZEeKb1bjLi8P_oQ" target="_wxMNYFZZEeKb1bjLi8P_oQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Nr2l4VZaEeKb1bjLi8P_oQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nr2l4lZaEeKb1bjLi8P_oQ" points="[-7, -6, 3, 62]$[-7, -68, 3, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NsRcoFZaEeKb1bjLi8P_oQ" id="(0.20689655172413793,0.10909090909090909)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NsRcoVZaEeKb1bjLi8P_oQ" id="(0.6071428571428571,0.7407407407407407)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml
new file mode 100644
index 00000000000..c1c6fbaf59c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:GCM="http://www.eclipse.org/papyrus/GCM/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/Alloc/1 http://www.eclipse.org/papyrus/MARTE/1#//Alloc http://www.eclipse.org/papyrus/GCM/1 http://www.eclipse.org/papyrus/MARTE/1#//GCM">
+ <uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="ProducerConsumer">
+ <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packageImport xmi:id="_R8d6YP93Ed6628OhKk_dpg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/fifo.uml#_ePwqkHLmEd6R5tffIPrlPg"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_LOqIEDLaEd2qeKRLMdIx_A" name="ComponentModel">
+ <packagedElement xmi:type="uml:Package" xmi:id="_tyiqsM__Ed-TP80eVS-2Rg" name="PullConsumer">
+ <ownedComment xmi:id="_-Hd2MDecEeGPyrZ5I3hMlA" annotatedElement="_tyiqsc__Ed-TP80eVS-2Rg">
+ <body>Variant of the consumper component that uses a &quot;pull style&quot;, i.e. actively demands whether new data is available. Since the component is active, it needs to have its own thread. This is realized by the combination of the lifecycle port with a container rule that intercepts the lifecycle operations and executes the activation operation in its own thread.
+Use the context menu to find out that the PullConsumer supports the &quot;runStartThread&quot; interceptor which intercepts the lifecycle port.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_0D64MDedEeGPyrZ5I3hMlA">
+ <annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <body>Part of the Qompass model library. Provides the specific port &quot;lc&quot; (short for lifecycle). The &quot;activate&quot; operation of this port is called by generated boot-code after instantiation and configuration of a component. The deactivation is called before disposing a component</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tyiqsc__Ed-TP80eVS-2Rg" clientDependency="_DHTiQDF7EeCpQdhNuFCtew" name="PullConsumer_impl">
+ <generalization xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_tyiqs8__Ed-TP80eVS-2Rg" name="" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
+ <interfaceRealization xmi:id="_DHTiQDF7EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_tyiqsc__Ed-TP80eVS-2Rg">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tyjRwc__Ed-TP80eVS-2Rg" name="activate" specification="_tyjRy8__Ed-TP80eVS-2Rg">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;wait for data on port p&quot; &lt;&lt; endl;
+for (int i = 0; i&lt;25; i++) {
+ if (p->hasData ()) {
+ ComponentModel::interfaces::PubData data = p->pull ();
+ cout &lt;&lt; &quot;received data: x = &quot; &lt;&lt; data.x &lt;&lt; &quot; y = &quot; &lt;&lt; data.y &lt;&lt; endl;
+ }
+ usleep (100*1000);
+}
+cout &lt;&lt; &quot;finished waiting&quot; &lt;&lt; endl;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_tyjRy8__Ed-TP80eVS-2Rg" name="activate" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
+ <ownedOperation xmi:id="_tyjRzM__Ed-TP80eVS-2Rg" name="deactivate"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_OGM88DLaEd2qeKRLMdIx_A" name="PushConsumer">
+ <ownedComment xmi:id="_XfnmsDecEeGPyrZ5I3hMlA" annotatedElement="_oqZNUDLaEd2qeKRLMdIx_A">
+ <body>Push variant of a consumer, i.e. the consumer is called whenever new data is availble. It is not itself active.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_gpptUDecEeGPyrZ5I3hMlA" annotatedElement="_4KiE8DLbEd2qeKRLMdIx_A">
+ <body>A MARTE flow port. The synchronisation between MARTE and FCM stereotype is automatic, yet it is possible to refine on FCM level, whether the port uses a push or pull style. In this case, the port uses a push style by setting the port kind to &quot;PushConsumer&quot;.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_oqZNUDLaEd2qeKRLMdIx_A" clientDependency="_Z16ywDF8EeCpQdhNuFCtew _T7BgIAcsEeGYWLReZHFIwA" name="PushConsumer_impl">
+ <generalization xmi:id="_NItbAP94Ed6628OhKk_dpg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_4KiE8DLbEd2qeKRLMdIx_A" name="p" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
+ <interfaceRealization xmi:id="_Z16ywDF8EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_oqZNUDLaEd2qeKRLMdIx_A">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <interfaceRealization xmi:id="_T7BgIAcsEeGYWLReZHFIwA" name="derived realization of D_Push_PubData" client="_oqZNUDLaEd2qeKRLMdIx_A" supplier="_lsBoMKwJEeCgusK7cm6qjQ" contract="_lsBoMKwJEeCgusK7cm6qjQ"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RoXdMP94Ed6628OhKk_dpg" name="activate" specification="_uOmgID15Ed-qiK1VZWszhA">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;initialization of push consumer&quot; &lt;&lt; endl;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qUSHYPdMEd-KM6l7lmIPkw" name="push" specification="_T7D8YAcsEeGYWLReZHFIwA">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;received data: x = &quot; &lt;&lt; data.x &lt;&lt; &quot; y = &quot; &lt;&lt; data.y &lt;&lt; endl;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_uOmgID15Ed-qiK1VZWszhA" name="activate" method="_RoXdMP94Ed6628OhKk_dpg"/>
+ <ownedOperation xmi:id="_uOtN0D15Ed-qiK1VZWszhA" name="deactivate"/>
+ <ownedOperation xmi:id="_T7D8YAcsEeGYWLReZHFIwA" name="push" method="_qUSHYPdMEd-KM6l7lmIPkw">
+ <ownedParameter xmi:id="_T7G_sAcsEeGYWLReZHFIwA" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T7KDAAcsEeGYWLReZHFIwA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T7KqEAcsEeGYWLReZHFIwA" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_Tp4n8DLaEd2qeKRLMdIx_A" name="interfaces">
+ <packagedElement xmi:type="uml:DataType" xmi:id="_wFJ3IP91Ed6Jt8e-UqrRdQ" name="PubData">
+ <ownedAttribute xmi:id="_yywF0P91Ed6Jt8e-UqrRdQ" name="y" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zUgvEP91Ed6Jt8e-UqrRdQ" name="x" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_etOZkDLaEd2qeKRLMdIx_A" name="Producer">
+ <ownedComment xmi:id="_GzyJQDehEeGPyrZ5I3hMlA">
+ <annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <body>Let the producer instance execute by the main thread by realising the specific port &quot;start&quot;, inherited from CStart (part of the Qompass &quot;core&quot; model library).
+</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IfjoETLbEd2qeKRLMdIx_A" clientDependency="_jkNdADF8EeCpQdhNuFCtew" name="Producer_impl">
+ <generalization xmi:id="_34FjAPx3Ed6O2oOTPfeAMA">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_DtWn4DLcEd2qeKRLMdIx_A" name="q" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
+ <interfaceRealization xmi:id="_jkNdADF8EeCpQdhNuFCtew" name="derived realization of IStart" client="_IfjoETLbEd2qeKRLMdIx_A">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yXNVoKF4Ed6FqJCjEUrkqQ" name="run" specification="_dH4RIKF4Ed6FqJCjEUrkqQ">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;publish a value via port q;&quot; &lt;&lt; endl;
+ComponentModel::interfaces::PubData data;
+data.x = 2;
+data.y = 3;
+for (int i = 0; i&lt;20; i++) {
+ q->push (data);
+ cout &lt;&lt; &quot;.&quot; &lt;&lt; flush;
+ // wait 200ms
+ usleep (200*1000);
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_dH4RIKF4Ed6FqJCjEUrkqQ" name="run" method="_yXNVoKF4Ed6FqJCjEUrkqQ"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_XLQjUDLiEd2RVeNawwNNzg" name="System">
+ <packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="SystemPull_impl">
+ <ownedComment xmi:id="_JuaHYDbdEeGdqp2YT1LwWw" annotatedElement="_gV1cgDLiEd2RVeNawwNNzg">
+ <body>Pull consumer is executed by its own thread. This is specified via a container service (runStartThread)</body>
+ </ownedComment>
+ <ownedComment xmi:id="_lMxBQDeeEeGPyrZ5I3hMlA" annotatedElement="_efVI0E2rEeGl8qrc8BM7vA">
+ <body>Since producer and consumer call operations (the latter to actively retrieve data), the two ports would be incompatible without using a specific interaction component, in this case. a FIFO.
+Use the context menu on a selected connector to specify the interaction component.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="con" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCT24G6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCUd8G6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dCWTIG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_i-I7gDLiEd2RVeNawwNNzg" name="prod" visibility="public" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_esReUG6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_esSscG6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_esUhoG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_efVI0E2rEeGl8qrc8BM7vA" name="fifoconnector">
+ <end xmi:id="_efVv4E2rEeGl8qrc8BM7vA" partWithPort="_i-I7gDLiEd2RVeNawwNNzg" role="_DtWn4DLcEd2qeKRLMdIx_A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efVv4k2rEeGl8qrc8BM7vA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_efVv4U2rEeGl8qrc8BM7vA" value="1"/>
+ </end>
+ <end xmi:id="_efWW8E2rEeGl8qrc8BM7vA" partWithPort="_gV1cgDLiEd2RVeNawwNNzg" role="_tyiqs8__Ed-TP80eVS-2Rg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efWW8k2rEeGl8qrc8BM7vA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_efWW8U2rEeGl8qrc8BM7vA" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iP8c4NCREd-hqYHBJe17_Q" name="SystemPush_impl">
+ <ownedComment xmi:id="_KOEwwDefEeGPyrZ5I3hMlA" annotatedElement="_iP8c49CREd-hqYHBJe17_Q">
+ <body>The push consumer provides the interface that the producer uses (requires), no specific connector is required</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_iP8c4dCREd-hqYHBJe17_Q" name="con" visibility="public" type="_oqZNUDLaEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d0HHQG6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d0HuUG6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_d0I8cG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iP8c4tCREd-hqYHBJe17_Q" name="prod" visibility="public" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fbEeAG6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fbFFEG6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_fbGTMG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_iP8c49CREd-hqYHBJe17_Q" name="qpconnector">
+ <end xmi:id="_iP8c5NCREd-hqYHBJe17_Q" partWithPort="_iP8c4tCREd-hqYHBJe17_Q" role="_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <end xmi:id="_iP8c5dCREd-hqYHBJe17_Q" partWithPort="_iP8c4dCREd-hqYHBJe17_Q" role="_4KiE8DLbEd2qeKRLMdIx_A"/>
+ </ownedConnector>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_v3fMgDLiEd2RVeNawwNNzg" name="PlatformModel">
+ <ownedComment xmi:id="_jhF3sDegEeGPyrZ5I3hMlA" annotatedElement="_zY9vMDLiEd2RVeNawwNNzg">
+ <body>Simple single node configuration. TargetOS is set to Linux, but will work on other OS (supporting POSIX threads)</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Node" xmi:id="_zY9vMDLiEd2RVeNawwNNzg" name="MonoNode"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tZvNQDefEeGPyrZ5I3hMlA" name="Platform">
+ <ownedAttribute xmi:id="_4HAoQDefEeGPyrZ5I3hMlA" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6WEg0DefEeGPyrZ5I3hMlA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6WFu8DefEeGPyrZ5I3hMlA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6WHkIDefEeGPyrZ5I3hMlA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_YxI8IDegEeGPyrZ5I3hMlA" name="HWArchitecturePlatform">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_GQ1ekKwHEeCQX8uv_p0Q4A" name="monoNode" classifier="_zY9vMDLiEd2RVeNawwNNzg"/>
+ </packagedElement>
+ <profileApplication xmi:id="_aOAnkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_aen2cKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_234GEDLiEd2RVeNawwNNzg" name="DeploymentPlans">
+ <ownedComment xmi:id="_VMRFgDOJEeC7y-fR3OSnFw">
+ <body>This configuration requires the installation of the OTF trace library.&lt;br /></body>
+ </ownedComment>
+ <ownedComment xmi:id="_gdeyMDefEeGPyrZ5I3hMlA">
+ <body>Cross references to diagrams</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Package" xmi:id="_xBxwoDOFEeCldqx_51Yicg" name="monoPush">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB3QMDOFEeCldqx_51Yicg" clientDependency="_cmk8EKwIEeCza-cLDL1uzQ _oZjTgE0tEeG4IqgA7gSE6w _wqyJ4E0tEeG4IqgA7gSE6w" name="mainInstance" classifier="_iP8c4NCREd-hqYHBJe17_Q">
+ <slot xmi:id="_xB6TgDOFEeCldqx_51Yicg" definingFeature="_iP8c4dCREd-hqYHBJe17_Q">
+ <value xmi:type="uml:InstanceValue" xmi:id="_xB66kDOFEeCldqx_51Yicg" instance="_xB5scDOFEeCldqx_51Yicg"/>
+ </slot>
+ <slot xmi:id="_xB8IsDOFEeCldqx_51Yicg" definingFeature="_iP8c4tCREd-hqYHBJe17_Q">
+ <value xmi:type="uml:InstanceValue" xmi:id="_xB8IsTOFEeCldqx_51Yicg" instance="_xB7hoDOFEeCldqx_51Yicg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB5scDOFEeCldqx_51Yicg" name="mainInstance.con" classifier="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB7hoDOFEeCldqx_51Yicg" name="mainInstance.prod" classifier="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_cmk8EKwIEeCza-cLDL1uzQ" name="allocate to monoNode" client="_xB3QMDOFEeCldqx_51Yicg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_oZjTgE0tEeG4IqgA7gSE6w" name="allocate to monoNode" client="_xB3QMDOFEeCldqx_51Yicg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_wqyJ4E0tEeG4IqgA7gSE6w" name="allocate to monoNode" client="_xB3QMDOFEeCldqx_51Yicg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_zwMLcLF4EeC9yscvWqW-eg" name="monoPull">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwQc4bF4EeC9yscvWqW-eg" clientDependency="_DQUvILGSEeCfWNndpgPDWA _vcX2AE0tEeG4IqgA7gSE6w" name="mainInstance" classifier="_bYJagDLiEd2RVeNawwNNzg">
+ <slot xmi:id="_zwY_wLF4EeC9yscvWqW-eg" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_zwZm0LF4EeC9yscvWqW-eg" instance="_zwUuUbF4EeC9yscvWqW-eg"/>
+ </slot>
+ <slot xmi:id="_zwaN4LF4EeC9yscvWqW-eg" definingFeature="_i-I7gDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_zwaN4bF4EeC9yscvWqW-eg" instance="_zwZm0bF4EeC9yscvWqW-eg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwUHQLF4EeC9yscvWqW-eg" name="mainInstance.fifoconnector">
+ <classifier xmi:type="uml:Class" href="pathmap://QML_CORE/fifo.uml#_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <slot xmi:id="_zwUHQbF4EeC9yscvWqW-eg">
+ <definingFeature xmi:type="uml:Property" href="pathmap://QML_CORE/fifo.uml#_XDRnoHUIEd6R5tffIPrlPg"/>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_zwUuULF4EeC9yscvWqW-eg" name="value for m_size" value="30">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </value>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwUuUbF4EeC9yscvWqW-eg" name="mainInstance.con">
+ <classifier xmi:type="uml:Class" href="#_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <classifier xmi:type="uml:Class" href="pathmap://QML_CORE//core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
+ <slot xmi:id="_zwVVYLF4EeC9yscvWqW-eg">
+ <definingFeature xmi:type="uml:Property" href="pathmap://QML_CORE//core.uml#_rVfYoMGJEd-Mveea1W_olA"/>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_zwV8cLF4EeC9yscvWqW-eg" name="value for priority">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </value>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwZm0bF4EeC9yscvWqW-eg" name="mainInstance.prod" classifier="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_DQUvILGSEeCfWNndpgPDWA" name="allocate to monoNode" client="_zwQc4bF4EeC9yscvWqW-eg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_vcX2AE0tEeG4IqgA7gSE6w" name="allocate to monoNode" client="_zwQc4bF4EeC9yscvWqW-eg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr9WwKwJEeCgusK7cm6qjQ" name="derivedInterfaces">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr_L8KwJEeCgusK7cm6qjQ" name="ProducerConsumer">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr_zAKwJEeCgusK7cm6qjQ" name="ComponentModel">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lsBBIKwJEeCgusK7cm6qjQ" name="interfaces">
+ <packagedElement xmi:type="uml:Interface" xmi:id="_lsBoMKwJEeCgusK7cm6qjQ" name="D_Push_PubData">
+ <ownedOperation xmi:id="_lsKLEKwJEeCgusK7cm6qjQ" name="push">
+ <ownedParameter xmi:id="_lsMAQKwJEeCgusK7cm6qjQ" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AaULULGSEeCfWNndpgPDWA" name="D_PullConsumer_PubData">
+ <ownedOperation xmi:id="_Aa-SoLGSEeCfWNndpgPDWA" name="pull">
+ <ownedParameter xmi:id="_AbXUMLGSEeCfWNndpgPDWA" name="ret" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AbZwcLGSEeCfWNndpgPDWA" name="hasData">
+ <ownedParameter xmi:id="_Aba-kLGSEeCfWNndpgPDWA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_O6TiIjLUEd26WNosUASSSw">
+ <eAnnotations xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
+ <eAnnotations xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
+ <eAnnotations xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_sfyAwEbjEd-l4NeVOJZDkA">
+ <eAnnotations xmi:id="_siunEEbjEd-l4NeVOJZDkA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//GCM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_SPVg0KmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_Se6N4KmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_b9oZ5rG3Ed-tmN4hwNCxXQ"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_3VS0wAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_SfbyUKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_SuJjwKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_ResourceCore"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_-1fcUBJdEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_f2hIMKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_gEtVMKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_popJkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_p1PbIKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//HLAM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_yzqusKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_zCWq8KmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Brokering"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_Cf874BJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_6xYMIKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_6_6-cKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Interaction"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_EIfnABJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_tZuBwE0tEeG4IqgA7gSE6w">
+ <eAnnotations xmi:id="_tisXkE0tEeG4IqgA7gSE6w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:DerivedElement xmi:id="_B9o7sP6yEd6Ie_kieu_3CQ" base_Element="_dH4RIKF4Ed6FqJCjEUrkqQ">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:Port xmi:id="_GofhQP6yEd6Ie_kieu_3CQ" base_Port="_4KiE8DLbEd2qeKRLMdIx_A">
+ <kind href="pathmap://QML_CORE/core.uml#_pE6GUFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Port xmi:id="_IWQqoP6yEd6Ie_kieu_3CQ" base_Port="_DtWn4DLcEd2qeKRLMdIx_A">
+ <kind href="pathmap://QML_CORE/core.uml#_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:DerivedElement xmi:id="_RwGb8P6_Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_RxVyEP6_Ed6Zw96O-tCw7A"/>
+ <Cpp:CppInclude xmi:id="_7SAnAP76Ed6Zw96O-tCw7A" body="#include &lt;unistd.h>&#xA;#include &lt;iostream>&#xA;using namespace std;" base_class="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <Cpp:CppInclude xmi:id="_Sa4nEP77Ed6Zw96O-tCw7A" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <FCM:DerivedElement xmi:id="_RoIMoP94Ed6628OhKk_dpg"/>
+ <FCM:DerivedElement xmi:id="_IFlIEARJEd--t-uhRn9OBA"/>
+ <FCM:ContainerRule xmi:id="_b-TmAARJEd--t-uhRn9OBA">
+ <portSet href="pathmap://QML_CORE/core.uml#__SL-kNtxEd6nqsBVkgJEEA"/>
+ </FCM:ContainerRule>
+ <FCM:DerivedElement xmi:id="_bmwhUARMEd-OidZzGKCpzg"/>
+ <FCM:DerivedElement xmi:id="_xjNC4ATuEd-Zc_RSu20WjA"/>
+ <FCM:DerivedElement xmi:id="_LZoQ4AVIEd-rcKh6R_xjRQ"/>
+ <FCM:DerivedElement xmi:id="_oMpYkAWxEd-jrvNV_WQOlA"/>
+ <FCM:DerivedElement xmi:id="_Fd6d0AnREd-co_m_wv4b6A"/>
+ <FCM:DerivedElement xmi:id="_uLARMBGVEd-rfYlCjUOxJQ"/>
+ <FCM:DerivedElement xmi:id="_qdjxQBGkEd-Jq_XWT8Mhpg"/>
+ <FCM:DerivedElement xmi:id="_VOzfEBGlEd-Jq_XWT8Mhpg"/>
+ <FCM:DerivedElement xmi:id="_N8BrMBI4Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_jIS30BI8Ed-XjYZ05V-9-Q"/>
+ <FCM:DerivedElement xmi:id="_E5UhUBJIEd-XjYZ05V-9-Q"/>
+ <FCM:DerivedElement xmi:id="_THoRwBJWEd-QgZm_R1AKbA"/>
+ <FCM:DerivedElement xmi:id="_z0CVcBQ2Ed-_dI0JopJMvQ"/>
+ <FCM:DerivedElement xmi:id="_Ke_UsBb7Ed-u0pMEAnvpEQ"/>
+ <FCM:DerivedElement xmi:id="_uOkD4D15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_uOqKgD15Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_uOz7gD15Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppVisibility xmi:id="_0VnhsD15Ed-qiK1VZWszhA" value="public" base_generalization="_NItbAP94Ed6628OhKk_dpg"/>
+ <FCM:DerivedElement xmi:id="_a4LokD16Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_a4RvMD16Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_a4VZkD16Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_cdXBMD17Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_cdaEgD17Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_C3YKUEbjEd-l4NeVOJZDkA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_C3pQEEbjEd-l4NeVOJZDkA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_igKiENAAEd-TP80eVS-2Rg" base_Element="_tyjRy8__Ed-TP80eVS-2Rg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_igVhMNAAEd-TP80eVS-2Rg" base_Element="_tyjRzM__Ed-TP80eVS-2Rg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppInclude xmi:id="_11OtwPcaEd-KM6l7lmIPkw" body="#include &lt;unistd.h>&#xA;#include &lt;iostream>&#xA;using namespace std;" base_class="_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <FCM:Target xmi:id="_LD_uICr7EeCfcI_SvPT4lw" base_Node="_zY9vMDLiEd2RVeNawwNNzg">
+ <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ </FCM:Target>
+ <FCM:DeploymentPlan xmi:id="_xB2CEDOFEeCldqx_51Yicg" mainInstance="_xB3QMDOFEeCldqx_51Yicg" base_Package="_xBxwoDOFEeCldqx_51Yicg"/>
+ <GCM:FlowPort xmi:id="_DwpFMJZ7EeCiU5xXzp1cKQ" direction="in" base_Port="_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <GCM:FlowPort xmi:id="_NWXCQJZ7EeCiU5xXzp1cKQ" direction="in" base_Port="_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <FCM:Port xmi:id="_tyjRzc__Ed-TP80eVS-2Rg" base_Port="_tyiqs8__Ed-TP80eVS-2Rg">
+ <kind href="pathmap://QML_CORE/core.uml#_x5mL4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <GCM:FlowPort xmi:id="_ow3PkJZ7EeCiU5xXzp1cKQ" direction="out" base_Port="_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <FCM:DerivedElement xmi:id="_lsJkAKwJEeCgusK7cm6qjQ" base_Element="_lsBoMKwJEeCgusK7cm6qjQ" source="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ <FCM:DeploymentPlan xmi:id="_zwQc4LF4EeC9yscvWqW-eg" mainInstance="_zwQc4bF4EeC9yscvWqW-eg" base_Package="_zwMLcLF4EeC9yscvWqW-eg"/>
+ <FCM:DerivedElement xmi:id="_AawQMLGSEeCfWNndpgPDWA" base_Element="_AaULULGSEeCfWNndpgPDWA" source="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ <FCM:DerivedElement xmi:id="_T7RXwAcsEeGYWLReZHFIwA" base_Element="_T7D8YAcsEeGYWLReZHFIwA" source="_lsKLEKwJEeCgusK7cm6qjQ"/>
+ <Alloc:Allocate xmi:id="_vccHcE0tEeG4IqgA7gSE6w" base_Abstraction="_vcX2AE0tEeG4IqgA7gSE6w"/>
+ <Alloc:Allocate xmi:id="_wq1NME0tEeG4IqgA7gSE6w" base_Abstraction="_wqyJ4E0tEeG4IqgA7gSE6w"/>
+ <FCM:Connector xmi:id="_iADdkE2rEeGl8qrc8BM7vA" base_Connector="_efVI0E2rEeGl8qrc8BM7vA">
+ <ic href="pathmap://QML_CORE/fifo.uml#_xQ_ccHUuEd6R5tffIPrlPg"/>
+ </FCM:Connector>
+ <FCM:RuleApplication xmi:id="_FeS3AF7zEeGA7qTe7UD05A" base_Class="_tyiqsc__Ed-TP80eVS-2Rg">
+ <containerRule href="pathmap://QML_CORE/core.uml#_3Jq5MARLEd-OidZzGKCpzg"/>
+ </FCM:RuleApplication>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.di
new file mode 100644
index 00000000000..e4ab4094248
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.di
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmi:id="_M_WAwPcXEd-KM6l7lmIPkw">
+ <pageList xmi:id="_M_WAwfcXEd-KM6l7lmIPkw">
+ <availablePage xmi:id="_M_WAwvcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_UstOsM__Ed-TP80eVS-2Rg"/>
+ </availablePage>
+ <availablePage xmi:id="_M_WAxPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_7kc7YM__Ed-TP80eVS-2Rg"/>
+ </availablePage>
+ <availablePage xmi:id="_M_WAxfcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_o6ZisNCREd-hqYHBJe17_Q"/>
+ </availablePage>
+ <availablePage xmi:id="_U1docPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_U1UegPcXEd-KM6l7lmIPkw"/>
+ </availablePage>
+ <availablePage xmi:id="_V5fVYP8nEd-hWJO6cv3VJA">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_V5euUP8nEd-hWJO6cv3VJA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_0rwpYDefEeGPyrZ5I3hMlA"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_M_WAxvcXEd-KM6l7lmIPkw" currentSelection="_M_WAyPcXEd-KM6l7lmIPkw">
+ <windows xmi:id="_M_WAx_cXEd-KM6l7lmIPkw">
+ <children xsi:type="di:TabFolder" xmi:id="_M_WAyPcXEd-KM6l7lmIPkw">
+ <children xmi:id="_M_WAyfcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_UstOsM__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:id="_M_WAy_cXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_7kc7YM__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:id="_M_WAzPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_o6ZisNCREd-hqYHBJe17_Q"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_U1UegPcXEd-KM6l7lmIPkw"/>
+ </children>
+ <children xmi:id="_V5fVYf8nEd-hWJO6cv3VJA">
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_V5euUP8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerTwoConsumers.notation#_0rwpYDefEeGPyrZ5I3hMlA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.notation
new file mode 100644
index 00000000000..28d5d0b2a12
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.notation
@@ -0,0 +1,1235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML">
+ <notation:Diagram xmi:id="_UstOsM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="PushConsumer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VT2HMM__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2HMs__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uQM__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2uQc__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uQs__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2uQ8__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uRM__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VT2uRc__Ed-TP80eVS-2Rg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VT2uRs__Ed-TP80eVS-2Rg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VT2uR8__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XgvckM__Ed-TP80eVS-2Rg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwDoM__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XgwDoc__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwDos__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XgwDo8__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwqsM__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgwqsc__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Dym0EJZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQdmcDeeEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQdmcTeeEeGPyrZ5I3hMlA" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort,FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQdmcjeeEeGPyrZ5I3hMlA" key="PropStereoDisplay" value="FCM::Port.kind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQdmczeeEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQdmdDeeEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xgwqss__Ed-TP80eVS-2Rg" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Xgwqs8__Ed-TP80eVS-2Rg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XgwqtM__Ed-TP80eVS-2Rg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Xgwqtc__Ed-TP80eVS-2Rg" x="-116" y="-20"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xgvckc__Ed-TP80eVS-2Rg" x="-10" y="38"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerTwoConsumers.uml#_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VT2HMc__Ed-TP80eVS-2Rg" x="144" y="36" width="190" height="87"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XfxXsDecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5gDecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5gTecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5gjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5gzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5hDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5hTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xgz5hjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_XfnmsDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XfxXsTecEeGPyrZ5I3hMlA" x="144" y="153" width="226"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gpzeUDecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FYDecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FYTecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FYjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FYzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FZDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FZTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gp0FZjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_gpptUDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gpzeUTecEeGPyrZ5I3hMlA" x="69" y="235" width="418"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_UstOsc__Ed-TP80eVS-2Rg"/>
+ <element xmi:type="uml:Package" href="ProducerTwoConsumers.uml#_OGM88DLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_fsWXkDecEeGPyrZ5I3hMlA" type="4002" source="_XfxXsDecEeGPyrZ5I3hMlA" target="_VT2HMM__Ed-TP80eVS-2Rg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_fsWXkTecEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fsWXkjecEeGPyrZ5I3hMlA" points="[-1, -3, 19, 74]$[4, -33, 24, 44]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fsndUDecEeGPyrZ5I3hMlA" id="(0.3893805309734513,0.05)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_l-KT4DecEeGPyrZ5I3hMlA" type="4002" source="_gpzeUDecEeGPyrZ5I3hMlA" target="_XgvckM__Ed-TP80eVS-2Rg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_l-KT4TecEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l-KT4jecEeGPyrZ5I3hMlA" points="[0, -4, -19, 154]$[16, -160, -3, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsDecEeGPyrZ5I3hMlA" id="(0.14832535885167464,0.03333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsTecEeGPyrZ5I3hMlA" id="(0.15,0.35)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_7kc7YM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="PullConsumer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_8LSR4M__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LSR4s__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LSR48__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LS48M__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LS48c__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LS48s__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LS488__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HIdDoJZ9EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MJZ9EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MZZ9EeCiU5xXzp1cKQ" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MpZ9EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--M5Z9EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--NJZ9EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8LS49M__Ed-TP80eVS-2Rg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8LS49c__Ed-TP80eVS-2Rg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LS49s__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ytK8IP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytLjMP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytLjMf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytLjMv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytLjM_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytMKQP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytMKQf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ytMKQv8nEd-hWJO6cv3VJA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKQ_8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ytMKRP8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKRf8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ytK8If8nEd-hWJO6cv3VJA" x="-10" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_t6X3UJaMEeCbgbUO5qahhA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZFcJaMEeCbgbUO5qahhA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6ZFcZaMEeCbgbUO5qahhA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZsgJaMEeCbgbUO5qahhA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6ZsgZaMEeCbgbUO5qahhA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZsgpaMEeCbgbUO5qahhA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6Zsg5aMEeCbgbUO5qahhA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wOa9kJaMEeCbgbUO5qahhA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MioCwDeeEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MioCwTeeEeGPyrZ5I3hMlA" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort,FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MioCwjeeEeGPyrZ5I3hMlA" key="PropStereoDisplay" value="FCM::Port.kind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MioCwzeeEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MioCxDeeEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t6ZshJaMEeCbgbUO5qahhA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t6ZshZaMEeCbgbUO5qahhA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t6aTkJaMEeCbgbUO5qahhA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t6aTkZaMEeCbgbUO5qahhA" x="-116"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t6X3UZaMEeCbgbUO5qahhA" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerTwoConsumers.uml#_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LSR4c__Ed-TP80eVS-2Rg" x="180" y="90" width="254" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uHcuMP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVQP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVQf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVQv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVQ_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVRP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVRf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uHdVRv8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uHdVR_8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHd8UP8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xVmsQP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTUP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVnTUf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTUv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVnTU_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTVP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVn6YP8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVn6Yf8nEd-hWJO6cv3VJA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6Yv8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVn6Y_8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6ZP8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xVmsQf8nEd-hWJO6cv3VJA" x="-10" y="29"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHcuMf8nEd-hWJO6cv3VJA" x="180" y="-36" width="253" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-HlK8DecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyADecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyATecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyAjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyAzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyBDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyBTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-HlyBjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_-Hd2MDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HlK8TecEeGPyrZ5I3hMlA" x="489" y="90" width="295"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0EFQQDedEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UDedEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3UTedEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UjedEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3UzedEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3VDedEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3VTedEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0EF3VjedEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_0D64MDedEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0EFQQTedEeGPyrZ5I3hMlA" x="489" y="-24" width="295"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_7kc7Yc__Ed-TP80eVS-2Rg"/>
+ <element xmi:type="uml:Package" href="ProducerTwoConsumers.uml#_tyiqsM__Ed-TP80eVS-2Rg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_uHz6kP8nEd-hWJO6cv3VJA" type="4015" source="_8LSR4M__Ed-TP80eVS-2Rg" target="_uHcuMP8nEd-hWJO6cv3VJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uH0hoP8nEd-hWJO6cv3VJA" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uH0hof8nEd-hWJO6cv3VJA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uHz6kf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="ProducerTwoConsumers.uml#_tyiqss__Ed-TP80eVS-2Rg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uHz6kv8nEd-hWJO6cv3VJA" points="[-103, -45, 204, 90]$[-307, -135, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FOfGwDeeEeGPyrZ5I3hMlA" type="4002" source="_0EFQQDedEeGPyrZ5I3hMlA" target="_uHcuMP8nEd-hWJO6cv3VJA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_FOfGwTeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FOfGwjeeEeGPyrZ5I3hMlA" points="[-6, -3, 83, 0]$[-62, -3, 27, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgDeeEeGPyrZ5I3hMlA" id="(0.020338983050847456,0.4027777777777778)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgTeeEeGPyrZ5I3hMlA" id="(0.8932806324110671,0.5205479452054794)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_F4Ju0DeeEeGPyrZ5I3hMlA" type="4002" source="_-HlK8DecEeGPyrZ5I3hMlA" target="_8LSR4M__Ed-TP80eVS-2Rg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_F4Ju0TeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F4Ju0jeeEeGPyrZ5I3hMlA" points="[-25, 3, 78, 0]$[-80, -2, 23, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kDeeEeGPyrZ5I3hMlA" id="(0.0847457627118644,0.25)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kTeeEeGPyrZ5I3hMlA" id="(0.9094488188976378,0.3302752293577982)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_o6ZisNCREd-hqYHBJe17_Q" type="CompositeStructure" name="System" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VSa6YNHtEd-A1oPfP47IaQ" type="2073" fontName="" fontHeight="10" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScIgNHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvkNHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScvkdHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvktHtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScvk9HtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvlNHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VScvldHtEd-A1oPfP47IaQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VScvltHtEd-A1oPfP47IaQ" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_XsS70NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi4NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi4dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi4tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi49HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi5NHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi5dHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XsTi5tHtEd-A1oPfP47IaQ" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XsTi59HtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsUJ8NHtEd-A1oPfP47IaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0XlXwDF1EeCpQdhNuFCtew" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM8DF1EeCpQdhNuFCtew" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM8TF1EeCpQdhNuFCtew" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM8jF1EeCpQdhNuFCtew" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM8zF1EeCpQdhNuFCtew" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM9DF1EeCpQdhNuFCtew" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM9TF1EeCpQdhNuFCtew" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t7uK4JZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9AJZ7EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9AZZ7EeCiU5xXzp1cKQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9ApZ7EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9A5Z7EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueikEJZ7EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Xn0ADF1EeCpQdhNuFCtew" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Xn0ATF1EeCpQdhNuFCtew" x="31" y="-1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Xn0AjF1EeCpQdhNuFCtew" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Xn0AzF1EeCpQdhNuFCtew" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0XlXwTF1EeCpQdhNuFCtew" x="-10" y="50"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_gV1cgDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsS70dHtEd-A1oPfP47IaQ" x="388" y="18" width="202" height="75"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YNar4NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS8NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS8dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS8tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS89HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS9NHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS9dHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YNbS9tHtEd-A1oPfP47IaQ" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_YNbS99HtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YNbS-NHtEd-A1oPfP47IaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zmq8ANHtEd-A1oPfP47IaQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKINHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKIdHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKItHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKI9HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKJNHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKJdHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ow9WMJZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgJZ7EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgZZ7EeCiU5xXzp1cKQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgpZ7EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlcLkJZ7EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlcLkZZ7EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zmsKJtHtEd-A1oPfP47IaQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jHcyYF7hEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jHiR8F7hEeGEmrrwB1vhPg" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zmsxMNHtEd-A1oPfP47IaQ" x="-81" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zmsxMdHtEd-A1oPfP47IaQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zmsxMtHtEd-A1oPfP47IaQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zmq8AdHtEd-A1oPfP47IaQ" x="90" y="66"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_i-I7gDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YNar4dHtEd-A1oPfP47IaQ" x="22" y="11" width="163" height="76"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JusbQDbdEeGdqp2YT1LwWw" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCUDbdEeGdqp2YT1LwWw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCUTbdEeGdqp2YT1LwWw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCUjbdEeGdqp2YT1LwWw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCUzbdEeGdqp2YT1LwWw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCVDbdEeGdqp2YT1LwWw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCVTbdEeGdqp2YT1LwWw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JutCVjbdEeGdqp2YT1LwWw" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_JuaHYDbdEeGdqp2YT1LwWw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JusbQTbdEeGdqp2YT1LwWw" x="364" y="236" width="199" height="44"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-uXn8FuoEeGjjMeADLT5-g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-uYPAFuoEeGjjMeADLT5-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-uYPAVuoEeGjjMeADLT5-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-uYPAluoEeGjjMeADLT5-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-uYPA1uoEeGjjMeADLT5-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-uYPBFuoEeGjjMeADLT5-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-uYPBVuoEeGjjMeADLT5-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-uYPBluoEeGjjMeADLT5-g" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-uYPB1uoEeGjjMeADLT5-g" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-uYPCFuoEeGjjMeADLT5-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-uYPCVuoEeGjjMeADLT5-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__e67IFuoEeGjjMeADLT5-g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__e7iMFuoEeGjjMeADLT5-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__e7iMVuoEeGjjMeADLT5-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__e7iMluoEeGjjMeADLT5-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__e7iM1uoEeGjjMeADLT5-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__e7iNFuoEeGjjMeADLT5-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__e7iNVuoEeGjjMeADLT5-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BNeHoFupEeGjjMeADLT5-g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BpKlIFupEeGjjMeADLT5-g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BpKlIVupEeGjjMeADLT5-g" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BpLMMFupEeGjjMeADLT5-g" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BpLMMVupEeGjjMeADLT5-g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BpLMMlupEeGjjMeADLT5-g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__e8JQFuoEeGjjMeADLT5-g" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__e8JQVuoEeGjjMeADLT5-g" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__e8JQluoEeGjjMeADLT5-g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__e8JQ1uoEeGjjMeADLT5-g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__e67IVuoEeGjjMeADLT5-g" x="-10" y="29"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_-uMo0FuoEeGjjMeADLT5-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-uXn8VuoEeGjjMeADLT5-g" x="391" y="137" width="199" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ENAa4FupEeGjjMeADLT5-g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ENBB8FupEeGjjMeADLT5-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ENBB8VupEeGjjMeADLT5-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ENBB8lupEeGjjMeADLT5-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ENBB81upEeGjjMeADLT5-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ENBB9FupEeGjjMeADLT5-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ENBB9VupEeGjjMeADLT5-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Kg0iUFupEeGjjMeADLT5-g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28QqUGbcEeGmReIfEqYGAQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28RRYGbcEeGmReIfEqYGAQ" key="StereotypeList" value="FCM::Connector"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28RRYWbcEeGmReIfEqYGAQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28RRYmbcEeGmReIfEqYGAQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_28RRY2bcEeGmReIfEqYGAQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ENBB9lupEeGjjMeADLT5-g" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ENBpAFupEeGjjMeADLT5-g" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ENBpAVupEeGjjMeADLT5-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ENBpAlupEeGjjMeADLT5-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_N1-gQFupEeGjjMeADLT5-g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N1_HUFupEeGjjMeADLT5-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N1_HUVupEeGjjMeADLT5-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N1_HUlupEeGjjMeADLT5-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N1_HU1upEeGjjMeADLT5-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N1_HVFupEeGjjMeADLT5-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N1_uYFupEeGjjMeADLT5-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ppkk0FupEeGjjMeADLT5-g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QEowMFupEeGjjMeADLT5-g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QEowMVupEeGjjMeADLT5-g" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QEpXQFupEeGjjMeADLT5-g" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QEpXQVupEeGjjMeADLT5-g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QEpXQlupEeGjjMeADLT5-g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_N1_uYVupEeGjjMeADLT5-g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_493zgFupEeGjjMeADLT5-g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5PrVMFupEeGjjMeADLT5-g" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_N1_uYlupEeGjjMeADLT5-g" x="25" y="1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_N1_uY1upEeGjjMeADLT5-g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_N1_uZFupEeGjjMeADLT5-g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N1-gQVupEeGjjMeADLT5-g" x="-10" y="45"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_N2AVcFupEeGjjMeADLT5-g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N2AVclupEeGjjMeADLT5-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N2AVc1upEeGjjMeADLT5-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N2AVdFupEeGjjMeADLT5-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N2AVdVupEeGjjMeADLT5-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N2A8gFupEeGjjMeADLT5-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N2A8gVupEeGjjMeADLT5-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q5XYwFupEeGjjMeADLT5-g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RQjwwFupEeGjjMeADLT5-g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RQjwwVupEeGjjMeADLT5-g" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RQjwwlupEeGjjMeADLT5-g" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RQjww1upEeGjjMeADLT5-g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RQjwxFupEeGjjMeADLT5-g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_N2A8glupEeGjjMeADLT5-g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5y6lIFupEeGjjMeADLT5-g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_57RP4FupEeGjjMeADLT5-g" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_N2A8g1upEeGjjMeADLT5-g" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_N2A8hFupEeGjjMeADLT5-g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_N2A8hVupEeGjjMeADLT5-g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_N2AVcVupEeGjjMeADLT5-g" x="127" y="45"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_EM2p4FupEeGjjMeADLT5-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ENAa4VupEeGjjMeADLT5-g" x="211" y="74" width="137" height="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_s7WAUFuqEeGjjMeADLT5-g" type="3097" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s7a40FuqEeGjjMeADLT5-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s7a40VuqEeGjjMeADLT5-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s7bf4FuqEeGjjMeADLT5-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s7bf4VuqEeGjjMeADLT5-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s7bf4luqEeGjjMeADLT5-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s7bf41uqEeGjjMeADLT5-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_s7bf5FuqEeGjjMeADLT5-g" type="5150"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_s6SQYFuqEeGjjMeADLT5-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s7WAUVuqEeGjjMeADLT5-g" x="94" y="193" width="199"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VScvl9HtEd-A1oPfP47IaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerTwoConsumers.uml#_bYJagDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSa6YdHtEd-A1oPfP47IaQ" x="63" y="26" width="631" height="325"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WGvTQNHtEd-A1oPfP47IaQ" type="2073" fontName="" fontHeight="10" fillColor="8047085" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WGv6UNHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WGv6UdHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WGv6UtHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WGv6U9HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WGwhYNHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WGwhYdHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WGwhYtHtEd-A1oPfP47IaQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WGwhY9HtEd-A1oPfP47IaQ" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_ZT6Z4NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZT7A8NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZT7A8dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZT7A8tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZT7A89HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZT7A9NHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZT7oANHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZT7oAdHtEd-A1oPfP47IaQ" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZT7oAtHtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZT7oA9HtEd-A1oPfP47IaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_v8PRoNHtEd-A1oPfP47IaQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v8P4sNHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v8P4sdHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v8P4stHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v8P4s9HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_v8P4tNHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v8P4tdHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_swCa4JZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tEqAAJZ7EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tEqAAZZ7EeCiU5xXzp1cKQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tEqAApZ7EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tEqAA5Z7EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tEqnEJZ7EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_v8QfwNHtEd-A1oPfP47IaQ" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_v8QfwdHtEd-A1oPfP47IaQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_v8QfwtHtEd-A1oPfP47IaQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_v8Qfw9HtEd-A1oPfP47IaQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v8PRodHtEd-A1oPfP47IaQ" x="-10" y="33"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_iP8c4dCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZT6Z4dHtEd-A1oPfP47IaQ" x="387" y="20" width="203" height="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZtFu4NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZtGV8NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZtGV8dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZtGV8tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZtG9ANHtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZtG9AdHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZtG9AtHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZtG9A9HtEd-A1oPfP47IaQ" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZtG9BNHtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZtG9BdHtEd-A1oPfP47IaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xUgsINHtEd-A1oPfP47IaQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xUhTMNHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xUhTMdHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xUhTMtHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xUhTM9HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xUhTNNHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xUhTNdHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rbhfAJZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r_dSgJZ7EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r_dSgZZ7EeCiU5xXzp1cKQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r_dSgpZ7EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r_dSg5Z7EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r_dShJZ7EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xUhTNtHtEd-A1oPfP47IaQ" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xUhTN9HtEd-A1oPfP47IaQ" x="13" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xUhTONHtEd-A1oPfP47IaQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xUhTOdHtEd-A1oPfP47IaQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xUgsIdHtEd-A1oPfP47IaQ" x="9" y="63"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_iP8c4tCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZtFu4dHtEd-A1oPfP47IaQ" x="31" y="12" width="181" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KPj-gDefEeGPyrZ5I3hMlA" type="3097" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KPklkDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KPklkTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KPklkjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KPklkzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KPkllDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KPlMoDefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KPlMoTefEeGPyrZ5I3hMlA" type="5150"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_KOEwwDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KPj-gTefEeGPyrZ5I3hMlA" x="301" y="102" width="280" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cNnmIFunEeGjjMeADLT5-g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cNpbUFunEeGjjMeADLT5-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cNpbUVunEeGjjMeADLT5-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cNpbUlunEeGjjMeADLT5-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cNpbU1unEeGjjMeADLT5-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cNqCYFunEeGjjMeADLT5-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cNqCYVunEeGjjMeADLT5-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cNqCYlunEeGjjMeADLT5-g" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cNqpcFunEeGjjMeADLT5-g" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cNqpcVunEeGjjMeADLT5-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cNqpclunEeGjjMeADLT5-g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jrBL0FunEeGjjMeADLT5-g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jrBy4FunEeGjjMeADLT5-g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jrBy4VunEeGjjMeADLT5-g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jrBy4lunEeGjjMeADLT5-g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jrBy41unEeGjjMeADLT5-g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jrBy5FunEeGjjMeADLT5-g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jrBy5VunEeGjjMeADLT5-g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lvK04FunEeGjjMeADLT5-g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mHZHoFunEeGjjMeADLT5-g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mHZHoVunEeGjjMeADLT5-g" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mHZHolunEeGjjMeADLT5-g" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mHZHo1unEeGjjMeADLT5-g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mHZHpFunEeGjjMeADLT5-g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jrBy5lunEeGjjMeADLT5-g" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jrCZ8FunEeGjjMeADLT5-g" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jrCZ8VunEeGjjMeADLT5-g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jrCZ8lunEeGjjMeADLT5-g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jrBL0VunEeGjjMeADLT5-g" x="-10" y="40"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_cLW8UFunEeGjjMeADLT5-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cNnmIVunEeGjjMeADLT5-g" x="391" y="161" width="199" height="77"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_wJrmsF7uEeGA7qTe7UD05A" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wJtb4F7uEeGA7qTe7UD05A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wJtb4V7uEeGA7qTe7UD05A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wJuC8F7uEeGA7qTe7UD05A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wJuC8V7uEeGA7qTe7UD05A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wJuC8l7uEeGA7qTe7UD05A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wJuC817uEeGA7qTe7UD05A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CO48IGkBEeGgxNn3NWRjCQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D-5hMGkBEeGgxNn3NWRjCQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D-5hMWkBEeGgxNn3NWRjCQ" key="StereotypeList" value="FCM::Connector"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D-5hMmkBEeGgxNn3NWRjCQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D-6IQGkBEeGgxNn3NWRjCQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D-6IQWkBEeGgxNn3NWRjCQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wJuC9F7uEeGA7qTe7UD05A" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_wJuqAF7uEeGA7qTe7UD05A" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_wJuqAV7uEeGA7qTe7UD05A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wJuqAl7uEeGA7qTe7UD05A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_11IGkF7uEeGA7qTe7UD05A" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_11MYAF7uEeGA7qTe7UD05A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_11M_EF7uEeGA7qTe7UD05A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_11M_EV7uEeGA7qTe7UD05A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_11M_El7uEeGA7qTe7UD05A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_11M_E17uEeGA7qTe7UD05A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_11M_FF7uEeGA7qTe7UD05A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N8kAoF7vEeGA7qTe7UD05A" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ORYaEF7vEeGA7qTe7UD05A" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ORYaEV7vEeGA7qTe7UD05A" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ORYaEl7vEeGA7qTe7UD05A" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ORYaE17vEeGA7qTe7UD05A" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ORYaFF7vEeGA7qTe7UD05A" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_11M_FV7uEeGA7qTe7UD05A" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1A0YUGkAEeGgxNn3NWRjCQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4Ug9sGkAEeGgxNn3NWRjCQ" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_11M_Fl7uEeGA7qTe7UD05A" x="-90"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_11NmIF7uEeGA7qTe7UD05A" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_11NmIV7uEeGA7qTe7UD05A" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_0KY1UF7pEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_11LJ4F7uEeGA7qTe7UD05A" x="162" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_11ONMF7uEeGA7qTe7UD05A" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_11O0QF7uEeGA7qTe7UD05A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_11O0QV7uEeGA7qTe7UD05A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_11O0Ql7uEeGA7qTe7UD05A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_11O0Q17uEeGA7qTe7UD05A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_11O0RF7uEeGA7qTe7UD05A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_11O0RV7uEeGA7qTe7UD05A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PQMLsF7vEeGA7qTe7UD05A" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgQA8F7vEeGA7qTe7UD05A" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgQA8V7vEeGA7qTe7UD05A" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgQA8l7vEeGA7qTe7UD05A" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgQA817vEeGA7qTe7UD05A" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgQA9F7vEeGA7qTe7UD05A" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_11O0Rl7uEeGA7qTe7UD05A" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_11_FwGkAEeGgxNn3NWRjCQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_34V_EGkAEeGgxNn3NWRjCQ" key="CustomAppearance_MaskValue" value="44"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_11O0R17uEeGA7qTe7UD05A" x="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_11O0SF7uEeGA7qTe7UD05A" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_11O0SV7uEeGA7qTe7UD05A" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_11ONMV7uEeGA7qTe7UD05A" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_wG5YcF7uEeGA7qTe7UD05A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wJrmsV7uEeGA7qTe7UD05A" x="67" y="102" width="172" height="64"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GpFzAF7vEeGA7qTe7UD05A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGwhZNHtEd-A1oPfP47IaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerTwoConsumers.uml#_iP8c4NCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WGvTQdHtEd-A1oPfP47IaQ" x="63" y="359" width="631" height="289"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_o6ZisdCREd-hqYHBJe17_Q"/>
+ <element xmi:type="uml:Package" href="ProducerTwoConsumers.uml#_XLQjUDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_1OcyINHtEd-A1oPfP47IaQ" type="4013" source="_11IGkF7uEeGA7qTe7UD05A" target="_v8PRoNHtEd-A1oPfP47IaQ" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H0p2kDJJEeCAhMtIsY9HwA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0tg8DJJEeCAhMtIsY9HwA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0tg8TJJEeCAhMtIsY9HwA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0tg8jJJEeCAhMtIsY9HwA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0tg8zJJEeCAhMtIsY9HwA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0tg9DJJEeCAhMtIsY9HwA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1OdZMNHtEd-A1oPfP47IaQ" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1OdZMdHtEd-A1oPfP47IaQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1OcyIdHtEd-A1oPfP47IaQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ProducerTwoConsumers.uml#_iP8c49CREd-hqYHBJe17_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1OcyItHtEd-A1oPfP47IaQ" points="[3, -10, -163, 65]$[26, -75, -140, 0]$[156, -75, -10, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4VULYF7uEeGA7qTe7UD05A" id="(0.65,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_fPo0MDbdEeGdqp2YT1LwWw" type="4002" source="_JusbQDbdEeGdqp2YT1LwWw" target="_-uXn8FuoEeGjjMeADLT5-g" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_fPo0MTbdEeGdqp2YT1LwWw" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fPo0MjbdEeGdqp2YT1LwWw" points="[2, -6, -18, 35]$[17, -24, -3, 17]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fQJKgDbdEeGdqp2YT1LwWw" id="(0.5121951219512195,0.125)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fQJKgTbdEeGdqp2YT1LwWw" id="(0.5204081632653061,0.8813559322033898)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YzjzcDefEeGPyrZ5I3hMlA" type="4002" source="_KPj-gDefEeGPyrZ5I3hMlA" target="_1OcyINHtEd-A1oPfP47IaQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_YzjzcTefEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YzjzcjefEeGPyrZ5I3hMlA" points="[0, -4, 5, 39]$[0, -43, 5, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Yz5KoDefEeGPyrZ5I3hMlA" id="(0.017857142857142856,0.4583333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Yz5xsDefEeGPyrZ5I3hMlA" id="(0.6763005780346821,0.4444444444444444)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_efaBUE2rEeGl8qrc8BM7vA" type="4013" source="_zmq8ANHtEd-A1oPfP47IaQ" target="_N1-gQFupEeGjjMeADLT5-g" routing="Rectilinear" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iqb3UE2rEeGl8qrc8BM7vA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAOdwFupEeGjjMeADLT5-g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAOdwVupEeGjjMeADLT5-g" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAOdwlupEeGjjMeADLT5-g" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAPE0FupEeGjjMeADLT5-g" key="PropStereoDisplay" value="FCM::Connector.ic"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAPE0VupEeGjjMeADLT5-g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efaoYE2rEeGl8qrc8BM7vA" type="6025">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j_ovsE2rEeGl8qrc8BM7vA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIE2rEeGl8qrc8BM7vA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIU2rEeGl8qrc8BM7vA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIk2rEeGl8qrc8BM7vA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZII02rEeGl8qrc8BM7vA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIJE2rEeGl8qrc8BM7vA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efaoYU2rEeGl8qrc8BM7vA" x="34" y="76"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efaoYk2rEeGl8qrc8BM7vA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efaoY02rEeGl8qrc8BM7vA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efbPcE2rEeGl8qrc8BM7vA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efbPcU2rEeGl8qrc8BM7vA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efbPck2rEeGl8qrc8BM7vA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efbPc02rEeGl8qrc8BM7vA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_efaBUU2rEeGl8qrc8BM7vA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ProducerTwoConsumers.uml#_efVI0E2rEeGl8qrc8BM7vA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efaBUk2rEeGl8qrc8BM7vA" points="[-1, 10, -82, -36]$[-1, 41, -82, -5]$[79, 41, -2, -5]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_V-2E0FupEeGjjMeADLT5-g" id="(0.05,0.45)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Jjfz4FuoEeGjjMeADLT5-g" type="4013" source="_11IGkF7uEeGA7qTe7UD05A" target="_jrBL0FunEeGjjMeADLT5-g" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JkmAEFuoEeGjjMeADLT5-g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JkmAEVuoEeGjjMeADLT5-g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JkmAEluoEeGjjMeADLT5-g" key="StereotypeList" value="FCM::Connector"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JkmAE1uoEeGjjMeADLT5-g" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JkmAFFuoEeGjjMeADLT5-g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JkmAFVuoEeGjjMeADLT5-g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JjhCAFuoEeGjjMeADLT5-g" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JjhCAVuoEeGjjMeADLT5-g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JjhCAluoEeGjjMeADLT5-g" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JjhCA1uoEeGjjMeADLT5-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JjhCBFuoEeGjjMeADLT5-g" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JjhCBVuoEeGjjMeADLT5-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JjhCBluoEeGjjMeADLT5-g" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JjhCB1uoEeGjjMeADLT5-g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Jjfz4VuoEeGjjMeADLT5-g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ProducerTwoConsumers.uml#_JhN78FuoEeGjjMeADLT5-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Jjfz4luoEeGjjMeADLT5-g" points="[4, 10, -166, -53]$[26, 63, -144, 0]$[160, 63, -10, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XmNEMFupEeGjjMeADLT5-g" type="4013" source="_N2AVcFupEeGjjMeADLT5-g" target="_0XlXwDF1EeCpQdhNuFCtew" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XmNrQFupEeGjjMeADLT5-g" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XmNrQVupEeGjjMeADLT5-g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XmNrQlupEeGjjMeADLT5-g" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XmNrQ1upEeGjjMeADLT5-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XmNrRFupEeGjjMeADLT5-g" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XmNrRVupEeGjjMeADLT5-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XmNrRlupEeGjjMeADLT5-g" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XmNrR1upEeGjjMeADLT5-g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XmNEMVupEeGjjMeADLT5-g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ProducerTwoConsumers.uml#_XmCsIFupEeGjjMeADLT5-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XmNEMlupEeGjjMeADLT5-g" points="[0, -2, -21, 89]$[17, -93, -4, -2]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XmkQkVupEeGjjMeADLT5-g" id="(0.2,0.35)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YTxU0FupEeGjjMeADLT5-g" type="4013" source="_N2AVcFupEeGjjMeADLT5-g" target="__e67IFuoEeGjjMeADLT5-g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YTx74FupEeGjjMeADLT5-g" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YTx74VupEeGjjMeADLT5-g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YTyi8FupEeGjjMeADLT5-g" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YTyi8VupEeGjjMeADLT5-g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YTyi8lupEeGjjMeADLT5-g" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YTyi81upEeGjjMeADLT5-g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YTyi9FupEeGjjMeADLT5-g" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YTyi9VupEeGjjMeADLT5-g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YTxU0VupEeGjjMeADLT5-g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ProducerTwoConsumers.uml#_YTirUFupEeGjjMeADLT5-g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YTxU0lupEeGjjMeADLT5-g" points="[6, 10, -28, -37]$[31, 37, -3, -10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E-eMoF7hEeGEmrrwB1vhPg" id="(0.9,0.75)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_4RsNgFuqEeGjjMeADLT5-g" type="4002" source="_s7WAUFuqEeGjjMeADLT5-g" target="_ENAa4FupEeGjjMeADLT5-g" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_4RsNgVuqEeGjjMeADLT5-g" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4RsNgluqEeGjjMeADLT5-g" points="[-2, -10, 9, 51]$[-15, -57, -4, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4SFPEFuqEeGjjMeADLT5-g" id="(0.8542713567839196,0.16666666666666666)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4SFPEVuqEeGjjMeADLT5-g" id="(0.30656934306569344,0.9444444444444444)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KMQXwF7vEeGA7qTe7UD05A" type="4013" source="_11ONMF7uEeGA7qTe7UD05A" target="_xUgsINHtEd-A1oPfP47IaQ" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KMRl4F7vEeGA7qTe7UD05A" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KMRl4V7vEeGA7qTe7UD05A" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KMRl4l7vEeGA7qTe7UD05A" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KMRl417vEeGA7qTe7UD05A" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KMRl5F7vEeGA7qTe7UD05A" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KMRl5V7vEeGA7qTe7UD05A" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KMRl5l7vEeGA7qTe7UD05A" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KMRl517vEeGA7qTe7UD05A" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KMQXwV7vEeGA7qTe7UD05A" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ProducerTwoConsumers.uml#_KJ3yIF7vEeGA7qTe7UD05A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KMQXwl7vEeGA7qTe7UD05A" points="[-10, 0, 7, 63]$[-18, 0, -1, 63]$[-18, -53, -1, 10]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_U1UegPcXEd-KM6l7lmIPkw" type="PapyrusUMLClassDiagram" name="deployment" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_FGfloCghEeCw56aD7XrQhw" type="2016" element="_7kc7YM__Ed-TP80eVS-2Rg" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGgMsCghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGgMsSghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGgMsighEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGgMsyghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGlsQCghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGmTUCghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FGmTUSghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FGmTUighEeCw56aD7XrQhw" y="5"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FGfloSghEeCw56aD7XrQhw" x="48" y="24" width="34" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GQM_sCghEeCw56aD7XrQhw" type="2016" element="_UstOsM__Ed-TP80eVS-2Rg" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmwSghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmwighEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmwyghEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmxCghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmxSghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmxighEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GQON0CghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GQON0SghEeCw56aD7XrQhw" x="-20" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQNmwCghEeCw56aD7XrQhw" x="145" y="24" width="34" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JhfKQCghEeCw56aD7XrQhw" type="2016" element="_V5euUP8nEd-hWJO6cv3VJA" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfKQighEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxUCghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfxUSghEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxUighEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfxUyghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxVCghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JhfxVSghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JhfxVighEeCw56aD7XrQhw" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhfKQSghEeCw56aD7XrQhw" x="266" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LGTzACghEeCw56aD7XrQhw" type="2016" element="_o6ZisNCREd-hqYHBJe17_Q" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaECghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGUaESghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaEighEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGUaEyghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaFCghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGVBICghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LGVBISghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LGVBIighEeCw56aD7XrQhw" x="9" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LGTzASghEeCw56aD7XrQhw" x="371" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_91n2kDOFEeCldqx_51Yicg" type="2007" fontName="Sans Serif" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91prwDOFEeCldqx_51Yicg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91prwTOFEeCldqx_51Yicg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91prwjOFEeCldqx_51Yicg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91prwzOFEeCldqx_51Yicg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91qS0DOFEeCldqx_51Yicg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91qS0TOFEeCldqx_51Yicg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_91qS0jOFEeCldqx_51Yicg" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_91qS0zOFEeCldqx_51Yicg" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_91qS1DOFEeCldqx_51Yicg"/>
+ </children>
+ <element xmi:type="uml:Package" href="ProducerTwoConsumers.uml#_xBxwoDOFEeCldqx_51Yicg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_91n2kTOFEeCldqx_51Yicg" x="36" y="144" width="199" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1GDBwLGREeCfWNndpgPDWA" type="2007" fontName="Sans Serif" fillColor="8047085" transparency="100" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOA4LGREeCfWNndpgPDWA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOA4bGREeCfWNndpgPDWA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOA4rGREeCfWNndpgPDWA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOA47GREeCfWNndpgPDWA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOn8LGREeCfWNndpgPDWA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOn8bGREeCfWNndpgPDWA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1GOn8rGREeCfWNndpgPDWA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1GOn87GREeCfWNndpgPDWA" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GOn9LGREeCfWNndpgPDWA"/>
+ </children>
+ <element xmi:type="uml:Package" href="ProducerTwoConsumers.uml#_zwMLcLF4EeC9yscvWqW-eg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GDBwbGREeCfWNndpgPDWA" x="306" y="144" width="198" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gdmuADefEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdmuAjefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdmuAzefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdmuBDefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdmuBTefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdnVEDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdnVETefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gdnVEjefEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_gdeyMDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gdmuATefEeGPyrZ5I3hMlA" x="498" y="18" width="115" height="46"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_U1UegfcXEd-KM6l7lmIPkw"/>
+ <element xmi:type="uml:Package" href="ProducerTwoConsumers.uml#_234GEDLiEd2RVeNawwNNzg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_V5euUP8nEd-hWJO6cv3VJA" type="CompositeStructure" name="Publisher" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Wky8MP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KUP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KUf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KUv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KU_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KVP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KVf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wk0xYP8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wk0xYf8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wk0xYv8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eCjHMP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCjuQP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCjuQf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCkVUP8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCkVUf8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCkVUv8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCkVU_8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eCkVVP8nEd-hWJO6cv3VJA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eCkVVf8nEd-hWJO6cv3VJA" x="-116" y="5"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eCkVVv8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eCkVV_8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eCjHMf8nEd-hWJO6cv3VJA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fwpAsP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpAsv8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpAs_8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpnwP8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpnwf8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpnwv8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpnw_8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fwpnxP8nEd-hWJO6cv3VJA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fwpnxf8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fwpnxv8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fwpnx_8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerTwoConsumers.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fwpAsf8nEd-hWJO6cv3VJA" x="117" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerTwoConsumers.uml#_IfjoETLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wky8Mf8nEd-hWJO6cv3VJA" x="144" y="108" width="127" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XKXHYP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXHYv8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXucP8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXucf8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXucv8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXuc_8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXudP8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XKXudf8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XKXudv8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XKXud_8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_euJo8P8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euKQAP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euKQAf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euKQAv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euK3EP8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euK3Ef8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euK3Ev8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_euK3E_8nEd-hWJO6cv3VJA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_euK3FP8nEd-hWJO6cv3VJA" x="-116" y="-11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_euK3Ff8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_euK3Fv8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_euJo8f8nEd-hWJO6cv3VJA" x="-10" y="29"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XKXHYf8nEd-hWJO6cv3VJA" x="144" y="18" width="127" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Gz7TMDehEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA4DehEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0CA4TehEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA4jehEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0CA4zehEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA5DehEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0Cn8DehEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G0Cn8TehEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_GzyJQDehEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gz7TMTehEeGPyrZ5I3hMlA" x="341" y="55" width="425"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_V5euUf8nEd-hWJO6cv3VJA"/>
+ <element xmi:type="uml:Package" href="ProducerTwoConsumers.uml#_etOZkDLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_XKqpYP8nEd-hWJO6cv3VJA" type="4015" source="_Wky8MP8nEd-hWJO6cv3VJA" target="_XKXHYP8nEd-hWJO6cv3VJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XKrQcP8nEd-hWJO6cv3VJA" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XKrQcf8nEd-hWJO6cv3VJA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XKqpYf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="ProducerTwoConsumers.uml#_34FjAPx3Ed6O2oOTPfeAMA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XKqpYv8nEd-hWJO6cv3VJA" points="[-19, -23, 140, 174]$[-159, -197, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aJG_MDehEeGPyrZ5I3hMlA" type="4002" source="_Gz7TMDehEeGPyrZ5I3hMlA" target="_XKXHYP8nEd-hWJO6cv3VJA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_aJG_MTehEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aJG_MjehEeGPyrZ5I3hMlA" points="[-12, -5, 80, 30]$[-82, -36, 10, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aJdkgDehEeGPyrZ5I3hMlA" id="(0.02823529411764706,0.4166666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aJeLkDehEeGPyrZ5I3hMlA" id="(0.9212598425196851,0.4909090909090909)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_0rwpYDefEeGPyrZ5I3hMlA" type="CompositeStructure" name="HWArchitecture" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_1w2CIDefEeGPyrZ5I3hMlA" type="2073" fontName="" fontHeight="10" fillColor="10011046" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pMTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pMjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pMzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pNDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pNTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTZS4DegEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTZS4TegEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTZS4jegEeGPyrZ5I3hMlA" key="StereotypeList" value="FCM::HWArchitecture"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTZS4zegEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTZS5DegEeGPyrZ5I3hMlA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HTZS5TegEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w2pNjefEeGPyrZ5I3hMlA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1w2pNzefEeGPyrZ5I3hMlA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_4HLnYDefEeGPyrZ5I3hMlA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOcDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOcTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOcjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOczefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOdDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOdTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4HMOdjefEeGPyrZ5I3hMlA" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4HMOdzefEeGPyrZ5I3hMlA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4HMOeDefEeGPyrZ5I3hMlA" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HMOeTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerTwoConsumers.uml#_4HAoQDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HLnYTefEeGPyrZ5I3hMlA" x="61" y="22" width="162"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1w2pODefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2pOTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerTwoConsumers.uml#_tZvNQDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2CITefEeGPyrZ5I3hMlA" x="81" y="63" width="300" height="154"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7qMbIDefEeGPyrZ5I3hMlA" type="2072" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCMTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCMzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCNDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCNTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_85ECADefEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xoxkEDegEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xoxkETegEeGPyrZ5I3hMlA" key="StereotypeList" value="FCM::Target"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xoxkEjegEeGPyrZ5I3hMlA" key="PropStereoDisplay" value="FCM::Target.targetArch,FCM::Target.usedOS"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xoxkEzegEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xoxkFDegEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7qNCNjefEeGPyrZ5I3hMlA" type="5124"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7qNCNzefEeGPyrZ5I3hMlA" visible="false" type="7072">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7qNCODefEeGPyrZ5I3hMlA" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qNCOTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Node" href="ProducerTwoConsumers.uml#_zY9vMDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qMbITefEeGPyrZ5I3hMlA" x="441" y="63" width="154" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jhQ20DegEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ20jegEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ20zegEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ21DegEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ21TegEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ21jegEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ21zegEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jhRd4DegEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerTwoConsumers.uml#_jhF3sDegEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jhQ20TegEeGPyrZ5I3hMlA" x="435" y="183" width="277"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_0rwpYTefEeGPyrZ5I3hMlA"/>
+ <element xmi:type="uml:Package" href="ProducerTwoConsumers.uml#_v3fMgDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ugb6IDegEeGPyrZ5I3hMlA" type="4002" source="_jhQ20DegEeGPyrZ5I3hMlA" target="_7qMbIDefEeGPyrZ5I3hMlA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ugb6ITegEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ugb6IjegEeGPyrZ5I3hMlA" points="[-3, -6, 22, 58]$[-30, -51, -5, 13]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugs_4DegEeGPyrZ5I3hMlA" id="(0.33212996389891697,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugs_4TegEeGPyrZ5I3hMlA" id="(0.4420289855072464,0.8266666666666667)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.uml
new file mode 100644
index 00000000000..7a0cc879d74
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerTwoConsumers.uml
@@ -0,0 +1,546 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:GCM="http://www.eclipse.org/papyrus/GCM/1" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML">
+ <uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="ProducerTwoConsumers">
+ <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packageImport xmi:id="_R8d6YP93Ed6628OhKk_dpg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/fifo.uml#_ePwqkHLmEd6R5tffIPrlPg"/>
+ </packageImport>
+ <packageImport xmi:id="_vhH_QAGKEeC5bcK0N3_0ig">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_MARTE/marte.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_8KelgCgjEeC5Ga5kAgjl0g">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_TRACE/tracing.uml#_H-ZqYDKeEd-WprEKTCaiMA"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_LOqIEDLaEd2qeKRLMdIx_A" name="components">
+ <packagedElement xmi:type="uml:Package" xmi:id="_tyiqsM__Ed-TP80eVS-2Rg" name="PullConsumer">
+ <ownedComment xmi:id="_-Hd2MDecEeGPyrZ5I3hMlA" annotatedElement="_tyiqsc__Ed-TP80eVS-2Rg">
+ <body>Variant of the consumper component that uses a &quot;pull style&quot;, i.e. actively demands whether new data is available. Since the component is active, it needs to have its own thread. This is realized by the combination of the lifecycle port with a container rule that intercepts the lifecycle operations and executes the activation operation in its own thread.
+Use the context menu to find out that the PullConsumer supports the &quot;runStartThread&quot; interceptor which intercepts the lifecycle port.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_0D64MDedEeGPyrZ5I3hMlA">
+ <annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <body>Part of the Qompass model library. Provides the specific port &quot;lc&quot; (short for lifecycle). The &quot;activate&quot; operation of this port is called by generated boot-code after instantiation and configuration of a component. The deactivation is called before disposing a component</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tyiqsc__Ed-TP80eVS-2Rg" name="PullConsumer_impl" clientDependency="_DHTiQDF7EeCpQdhNuFCtew">
+ <generalization xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_tyiqs8__Ed-TP80eVS-2Rg" name="p" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
+ <ownedAttribute xmi:id="_kLNdAF8DEeGerN33d-RdRg" name="name">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kLS8kF8DEeGerN33d-RdRg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kLSVgF8DEeGerN33d-RdRg" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tyjRwc__Ed-TP80eVS-2Rg" name="activate" specification="_tyjRy8__Ed-TP80eVS-2Rg">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;wait for data on port p&quot; &lt;&lt; endl;
+for (int i = 0; i&lt;25; i++) {
+ if (p->hasData ()) {
+ components::interfaces::PubData data = p->pull ();
+ cout &lt;&lt; &quot;Componenent &quot; &lt;&lt; name &lt;&lt; &quot; received data: x = &quot; &lt;&lt; data.x &lt;&lt; &quot; y = &quot; &lt;&lt; data.y &lt;&lt; endl;
+ }
+ usleep (100*1000);
+}
+cout &lt;&lt; &quot;finished waiting&quot; &lt;&lt; endl;
+</body>
+ </ownedBehavior>
+ <interfaceRealization xmi:id="_DHTiQDF7EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_tyiqsc__Ed-TP80eVS-2Rg">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <ownedOperation xmi:id="_tyjRy8__Ed-TP80eVS-2Rg" name="activate" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
+ <ownedOperation xmi:id="_tyjRzM__Ed-TP80eVS-2Rg" name="deactivate"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_OGM88DLaEd2qeKRLMdIx_A" name="PushConsumer">
+ <ownedComment xmi:id="_XfnmsDecEeGPyrZ5I3hMlA" annotatedElement="_oqZNUDLaEd2qeKRLMdIx_A">
+ <body>Push variant of a consumer, i.e. the consumer is called whenever new data is availble. It is not itself active.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_gpptUDecEeGPyrZ5I3hMlA" annotatedElement="_4KiE8DLbEd2qeKRLMdIx_A">
+ <body>A MARTE flow port. The synchronisation between MARTE and FCM stereotype is automatic, yet it is possible to refine on FCM level, whether the port uses a push or pull style. In this case, the port uses a push style by setting the port kind to &quot;PushConsumer&quot;.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_oqZNUDLaEd2qeKRLMdIx_A" name="PushConsumer_impl" clientDependency="_Z16ywDF8EeCpQdhNuFCtew _c9T7oF7yEeGA7qTe7UD05A">
+ <generalization xmi:id="_NItbAP94Ed6628OhKk_dpg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_4KiE8DLbEd2qeKRLMdIx_A" name="p" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RoXdMP94Ed6628OhKk_dpg" name="activate" specification="_uOmgID15Ed-qiK1VZWszhA">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;initialization of push consumer&quot; &lt;&lt; endl;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qUSHYPdMEd-KM6l7lmIPkw" name="push" specification="_T7D8YAcsEeGYWLReZHFIwA">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;received data: x = &quot; &lt;&lt; data.x &lt;&lt; &quot; y = &quot; &lt;&lt; data.y &lt;&lt; endl;</body>
+ </ownedBehavior>
+ <interfaceRealization xmi:id="_Z16ywDF8EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_oqZNUDLaEd2qeKRLMdIx_A">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <interfaceRealization xmi:id="_c9T7oF7yEeGA7qTe7UD05A" name="derived realization of D_Push_PubData" supplier="_rkTC4F7hEeGEmrrwB1vhPg" client="_oqZNUDLaEd2qeKRLMdIx_A" contract="_rkTC4F7hEeGEmrrwB1vhPg"/>
+ <ownedOperation xmi:id="_uOmgID15Ed-qiK1VZWszhA" name="activate" method="_RoXdMP94Ed6628OhKk_dpg"/>
+ <ownedOperation xmi:id="_uOtN0D15Ed-qiK1VZWszhA" name="deactivate"/>
+ <ownedOperation xmi:id="_T7D8YAcsEeGYWLReZHFIwA" name="push" method="_qUSHYPdMEd-KM6l7lmIPkw">
+ <ownedParameter xmi:id="_T7G_sAcsEeGYWLReZHFIwA" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T7KqEAcsEeGYWLReZHFIwA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T7KDAAcsEeGYWLReZHFIwA" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_Tp4n8DLaEd2qeKRLMdIx_A" name="interfaces">
+ <packagedElement xmi:type="uml:DataType" xmi:id="_wFJ3IP91Ed6Jt8e-UqrRdQ" name="PubData">
+ <ownedAttribute xmi:id="_yywF0P91Ed6Jt8e-UqrRdQ" name="y" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zUgvEP91Ed6Jt8e-UqrRdQ" name="x" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_etOZkDLaEd2qeKRLMdIx_A" name="Producer">
+ <ownedComment xmi:id="_GzyJQDehEeGPyrZ5I3hMlA">
+ <annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <body>Let the producer instance execute by the main thread by realising the specific port &quot;start&quot;, inherited from CStart (part of the Qompass &quot;BasicCalls&quot; model library).
+</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IfjoETLbEd2qeKRLMdIx_A" name="Producer_impl" clientDependency="_jkNdADF8EeCpQdhNuFCtew">
+ <generalization xmi:id="_34FjAPx3Ed6O2oOTPfeAMA">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_DtWn4DLcEd2qeKRLMdIx_A" name="q" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zDTH8FuoEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zDR50FuoEeGjjMeADLT5-g" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yXNVoKF4Ed6FqJCjEUrkqQ" name="run" specification="_dH4RIKF4Ed6FqJCjEUrkqQ">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;publish a value via port q;&quot; &lt;&lt; endl;
+components::interfaces::PubData data;
+data.x = 2;
+data.y = 3;
+for (int i = 0; i&lt;20; i++) {
+ q->push (data);
+ cout &lt;&lt; &quot;.&quot; &lt;&lt; flush;
+ // wait 200ms
+ usleep (200*1000);
+}
+</body>
+ </ownedBehavior>
+ <interfaceRealization xmi:id="_jkNdADF8EeCpQdhNuFCtew" name="derived realization of IStart" client="_IfjoETLbEd2qeKRLMdIx_A">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ </interfaceRealization>
+ <ownedOperation xmi:id="_dH4RIKF4Ed6FqJCjEUrkqQ" name="run" method="_yXNVoKF4Ed6FqJCjEUrkqQ"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_XLQjUDLiEd2RVeNawwNNzg" name="System">
+ <packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="SystemPull_impl">
+ <ownedComment xmi:id="_JuaHYDbdEeGdqp2YT1LwWw" annotatedElement="_-uMo0FuoEeGjjMeADLT5-g">
+ <body>Two consumers use the same queue. In this case, it is arbitrary which one gets which data</body>
+ </ownedComment>
+ <ownedComment xmi:id="_s6SQYFuqEeGjjMeADLT5-g" annotatedElement="_EM2p4FupEeGjjMeADLT5-g">
+ <body>in this case, the connector is modeled explicitly in order to specify that a single connector instance is used</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="cons1" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WoGIEFunEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wn23gFunEeGjjMeADLT5-g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WoP5EFunEeGjjMeADLT5-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_i-I7gDLiEd2RVeNawwNNzg" name="pub" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite"/>
+ <ownedAttribute xmi:id="_-uMo0FuoEeGjjMeADLT5-g" name="cons2" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kWT5oFupEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kWRdYFupEeGjjMeADLT5-g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kXMDYFupEeGjjMeADLT5-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_EM2p4FupEeGjjMeADLT5-g" name="fifo" visibility="public" aggregation="composite">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/fifo.uml#_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IzHDUFupEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IzF1MFupEeGjjMeADLT5-g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IzI4gFupEeGjjMeADLT5-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_efVI0E2rEeGl8qrc8BM7vA" name="push">
+ <end xmi:id="_efVv4E2rEeGl8qrc8BM7vA" role="_DtWn4DLcEd2qeKRLMdIx_A" partWithPort="_i-I7gDLiEd2RVeNawwNNzg">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_efVv4U2rEeGl8qrc8BM7vA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efVv4k2rEeGl8qrc8BM7vA" value="1"/>
+ </end>
+ <end xmi:id="_efWW8E2rEeGl8qrc8BM7vA" partWithPort="_EM2p4FupEeGjjMeADLT5-g">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_efWW8U2rEeGl8qrc8BM7vA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efWW8k2rEeGl8qrc8BM7vA" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_XmCsIFupEeGjjMeADLT5-g" name="pull1">
+ <end xmi:id="_XmDTMFupEeGjjMeADLT5-g" partWithPort="_EM2p4FupEeGjjMeADLT5-g">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XmDTMVupEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XmDTMlupEeGjjMeADLT5-g" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ </end>
+ <end xmi:id="_XmD6QFupEeGjjMeADLT5-g" role="_tyiqs8__Ed-TP80eVS-2Rg" partWithPort="_gV1cgDLiEd2RVeNawwNNzg">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XmD6QVupEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XmD6QlupEeGjjMeADLT5-g" value="1"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_YTirUFupEeGjjMeADLT5-g" name="pull2">
+ <end xmi:id="_YTjSYFupEeGjjMeADLT5-g" partWithPort="_EM2p4FupEeGjjMeADLT5-g">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YTjSYVupEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YTjSYlupEeGjjMeADLT5-g" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ </end>
+ <end xmi:id="_YTjSY1upEeGjjMeADLT5-g" role="_tyiqs8__Ed-TP80eVS-2Rg" partWithPort="_-uMo0FuoEeGjjMeADLT5-g">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YTjSZFupEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YTjSZVupEeGjjMeADLT5-g" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iP8c4NCREd-hqYHBJe17_Q" name="SystemPush_impl">
+ <ownedComment xmi:id="_KOEwwDefEeGPyrZ5I3hMlA" annotatedElement="_iP8c49CREd-hqYHBJe17_Q">
+ <body>The push consumer provides the interface that the producer uses (requires), no specific connector is required, but we need to multiply data</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_iP8c4dCREd-hqYHBJe17_Q" name="cons1" visibility="public" type="_oqZNUDLaEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YdvbEFunEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YdjN0FunEeGjjMeADLT5-g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Yd2IwFunEeGjjMeADLT5-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iP8c4tCREd-hqYHBJe17_Q" name="pub" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite"/>
+ <ownedAttribute xmi:id="_cLW8UFunEeGjjMeADLT5-g" name="cons2" visibility="public" type="_oqZNUDLaEd2qeKRLMdIx_A" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dsA2wFunEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dr4T4FunEeGjjMeADLT5-g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dsFIMFunEeGjjMeADLT5-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_wG5YcF7uEeGA7qTe7UD05A" name="mult" visibility="public" aggregation="composite">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_Mo2kwF7pEeGEmrrwB1vhPg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zrij4F7uEeGA7qTe7UD05A" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_znRH4F7uEeGA7qTe7UD05A" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_zruxIF7uEeGA7qTe7UD05A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_iP8c49CREd-hqYHBJe17_Q" name="qpconnector1">
+ <end xmi:id="_iP8c5NCREd-hqYHBJe17_Q" partWithPort="_wG5YcF7uEeGA7qTe7UD05A">
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_0KY1UF7pEeGEmrrwB1vhPg"/>
+ </end>
+ <end xmi:id="_iP8c5dCREd-hqYHBJe17_Q" role="_4KiE8DLbEd2qeKRLMdIx_A" partWithPort="_iP8c4dCREd-hqYHBJe17_Q"/>
+ </ownedConnector>
+ <ownedConnector xmi:id="_JhN78FuoEeGjjMeADLT5-g" name="qpconnector2">
+ <end xmi:id="_JhN78VuoEeGjjMeADLT5-g" partWithPort="_wG5YcF7uEeGA7qTe7UD05A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JhOjAFuoEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JhOjAVuoEeGjjMeADLT5-g" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_0KY1UF7pEeGEmrrwB1vhPg"/>
+ </end>
+ <end xmi:id="_JhOjAluoEeGjjMeADLT5-g" role="_4KiE8DLbEd2qeKRLMdIx_A" partWithPort="_cLW8UFunEeGjjMeADLT5-g">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JhOjA1uoEeGjjMeADLT5-g" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JhOjBFuoEeGjjMeADLT5-g" value="1"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_KJ3yIF7vEeGA7qTe7UD05A" name="Connector1">
+ <end xmi:id="_KJ4ZMF7vEeGA7qTe7UD05A" partWithPort="_wG5YcF7uEeGA7qTe7UD05A">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KJ4ZMV7vEeGA7qTe7UD05A" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KJ4ZMl7vEeGA7qTe7UD05A" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ </end>
+ <end xmi:id="_KJ6OYF7vEeGA7qTe7UD05A" role="_DtWn4DLcEd2qeKRLMdIx_A" partWithPort="_iP8c4tCREd-hqYHBJe17_Q">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KJ6OYV7vEeGA7qTe7UD05A" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KJ6OYl7vEeGA7qTe7UD05A" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_v3fMgDLiEd2RVeNawwNNzg" name="platform">
+ <ownedComment xmi:id="_jhF3sDegEeGPyrZ5I3hMlA" annotatedElement="_zY9vMDLiEd2RVeNawwNNzg">
+ <body>Simple single node configuration. TargetOS is set to Linux, but will work on other OS (supporting POSIX threads)</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Node" xmi:id="_zY9vMDLiEd2RVeNawwNNzg" name="MonoNode"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tZvNQDefEeGPyrZ5I3hMlA" name="Platform">
+ <ownedAttribute xmi:id="_4HAoQDefEeGPyrZ5I3hMlA" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6WFu8DefEeGPyrZ5I3hMlA" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6WEg0DefEeGPyrZ5I3hMlA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6WHkIDefEeGPyrZ5I3hMlA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_YxI8IDegEeGPyrZ5I3hMlA" name="HWArchitecturePlatform">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_GQ1ekKwHEeCQX8uv_p0Q4A" name="monoNode" classifier="_zY9vMDLiEd2RVeNawwNNzg"/>
+ </packagedElement>
+ <profileApplication xmi:id="_aOAnkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_aen2cKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_234GEDLiEd2RVeNawwNNzg" name="deployment">
+ <ownedComment xmi:id="_VMRFgDOJEeC7y-fR3OSnFw">
+ <body>This configuration requires the installation of the OTF trace library.&lt;br /></body>
+ </ownedComment>
+ <ownedComment xmi:id="_gdeyMDefEeGPyrZ5I3hMlA">
+ <body>Cross references to diagrams</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Package" xmi:id="_xBxwoDOFEeCldqx_51Yicg" name="monoPush">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB3QMDOFEeCldqx_51Yicg" name="mainInstance" clientDependency="_cmk8EKwIEeCza-cLDL1uzQ _oZjTgE0tEeG4IqgA7gSE6w _wqyJ4E0tEeG4IqgA7gSE6w" classifier="_iP8c4NCREd-hqYHBJe17_Q">
+ <slot xmi:id="_xB6TgDOFEeCldqx_51Yicg" definingFeature="_iP8c4dCREd-hqYHBJe17_Q">
+ <value xmi:type="uml:InstanceValue" xmi:id="_xB66kDOFEeCldqx_51Yicg" instance="_xB5scDOFEeCldqx_51Yicg"/>
+ </slot>
+ <slot xmi:id="_xB8IsDOFEeCldqx_51Yicg" definingFeature="_iP8c4tCREd-hqYHBJe17_Q">
+ <value xmi:type="uml:InstanceValue" xmi:id="_xB8IsTOFEeCldqx_51Yicg" instance="_xB7hoDOFEeCldqx_51Yicg"/>
+ </slot>
+ <slot xmi:id="_gSgQgFuqEeGjjMeADLT5-g" definingFeature="_cLW8UFunEeGjjMeADLT5-g">
+ <value xmi:type="uml:InstanceValue" xmi:id="_gSg3kFuqEeGjjMeADLT5-g" instance="_gSfpcFuqEeGjjMeADLT5-g"/>
+ </slot>
+ <slot xmi:id="_qefY8F8DEeGerN33d-RdRg" definingFeature="_wG5YcF7uEeGA7qTe7UD05A">
+ <value xmi:type="uml:InstanceValue" xmi:id="_qegAAF8DEeGerN33d-RdRg" instance="_qeex4F8DEeGerN33d-RdRg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB5scDOFEeCldqx_51Yicg" name="mainInstance.cons1" classifier="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB7hoDOFEeCldqx_51Yicg" name="mainInstance.pub" classifier="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_cmk8EKwIEeCza-cLDL1uzQ" name="allocate to monoNode" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A" client="_xB3QMDOFEeCldqx_51Yicg"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_oZjTgE0tEeG4IqgA7gSE6w" name="allocate to monoNode" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A" client="_xB3QMDOFEeCldqx_51Yicg"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_wqyJ4E0tEeG4IqgA7gSE6w" name="allocate to monoNode" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A" client="_xB3QMDOFEeCldqx_51Yicg"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_gSfpcFuqEeGjjMeADLT5-g" name="mainInstance.cons2" classifier="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_qeex4F8DEeGerN33d-RdRg" name="mainInstance.mult">
+ <classifier xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_Mo2kwF7pEeGEmrrwB1vhPg"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_zwMLcLF4EeC9yscvWqW-eg" name="monoPull">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwQc4bF4EeC9yscvWqW-eg" name="mainInstance" clientDependency="_DQUvILGSEeCfWNndpgPDWA _vcX2AE0tEeG4IqgA7gSE6w" classifier="_bYJagDLiEd2RVeNawwNNzg">
+ <slot xmi:id="_zwY_wLF4EeC9yscvWqW-eg" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_zwZm0LF4EeC9yscvWqW-eg" instance="_zwUuUbF4EeC9yscvWqW-eg"/>
+ </slot>
+ <slot xmi:id="_zwaN4LF4EeC9yscvWqW-eg" definingFeature="_i-I7gDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_zwaN4bF4EeC9yscvWqW-eg" instance="_zwZm0bF4EeC9yscvWqW-eg"/>
+ </slot>
+ <slot xmi:id="_z4wKYF73EeGerN33d-RdRg" definingFeature="_-uMo0FuoEeGjjMeADLT5-g">
+ <value xmi:type="uml:InstanceValue" xmi:id="_z4wxcF73EeGerN33d-RdRg" instance="_z4nngF73EeGerN33d-RdRg"/>
+ </slot>
+ <slot xmi:id="_z4ymoF73EeGerN33d-RdRg" definingFeature="_EM2p4FupEeGjjMeADLT5-g">
+ <value xmi:type="uml:InstanceValue" xmi:id="_z4zNsF73EeGerN33d-RdRg" instance="_z4xYgF73EeGerN33d-RdRg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwUuUbF4EeC9yscvWqW-eg" name="mainInstance.cons1">
+ <classifier xmi:type="uml:Class" href="#_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <classifier xmi:type="uml:Class" href="pathmap://QML_CORE//core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
+ <slot xmi:id="_zwVVYLF4EeC9yscvWqW-eg">
+ <definingFeature xmi:type="uml:Property" href="pathmap://QML_CORE//core.uml#_rVfYoMGJEd-Mveea1W_olA"/>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_zwV8cLF4EeC9yscvWqW-eg" name="value for priority">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </value>
+ </slot>
+ <slot xmi:id="_uctiAF8DEeGerN33d-RdRg" definingFeature="_kLNdAF8DEeGerN33d-RdRg">
+ <value xmi:type="uml:LiteralString" xmi:id="_ucuwIF8DEeGerN33d-RdRg" name="value for name" value="&quot;cons1&quot;">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwZm0bF4EeC9yscvWqW-eg" name="mainInstance.pub" classifier="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_DQUvILGSEeCfWNndpgPDWA" name="allocate to monoNode" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A" client="_zwQc4bF4EeC9yscvWqW-eg"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_vcX2AE0tEeG4IqgA7gSE6w" name="allocate to monoNode" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A" client="_zwQc4bF4EeC9yscvWqW-eg"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_z4nngF73EeGerN33d-RdRg" name="mainInstance.cons2" classifier="_tyiqsc__Ed-TP80eVS-2Rg">
+ <slot xmi:id="_vzFfEF8DEeGerN33d-RdRg" definingFeature="_kLNdAF8DEeGerN33d-RdRg">
+ <value xmi:type="uml:LiteralString" xmi:id="_vzGGIF8DEeGerN33d-RdRg" name="value for name" value="&quot;cons2&quot;">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_z4xYgF73EeGerN33d-RdRg" name="mainInstance.fifo">
+ <classifier xmi:type="uml:Class" href="pathmap://QML_CORE/fifo.uml#_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <slot xmi:id="_z4x_kF73EeGerN33d-RdRg">
+ <definingFeature xmi:type="uml:Property" href="pathmap://QML_CORE/fifo.uml#_XDRnoHUIEd6R5tffIPrlPg"/>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_z4x_kV73EeGerN33d-RdRg" name="value for m_size" value="30">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </value>
+ </slot>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr9WwKwJEeCgusK7cm6qjQ" name="derivedInterfaces">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rkP_kF7hEeGEmrrwB1vhPg" name="ProducerTwoConsumers">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rkRNsF7hEeGEmrrwB1vhPg" name="components">
+ <packagedElement xmi:type="uml:Package" xmi:id="_rkR0wF7hEeGEmrrwB1vhPg" name="interfaces">
+ <packagedElement xmi:type="uml:Interface" xmi:id="_rkTC4F7hEeGEmrrwB1vhPg" name="D_Push_PubData">
+ <ownedOperation xmi:id="_rkw88F7hEeGEmrrwB1vhPg" name="push">
+ <ownedParameter xmi:id="_rk-YUF7hEeGEmrrwB1vhPg" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_C2ev8F7iEeGEmrrwB1vhPg" name="D_PullConsumer_PubData">
+ <ownedOperation xmi:id="_C2-fMF7iEeGEmrrwB1vhPg" name="pull">
+ <ownedParameter xmi:id="_C2_GQF7iEeGEmrrwB1vhPg" name="ret" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_C3AUYF7iEeGEmrrwB1vhPg" name="hasData">
+ <ownedParameter xmi:id="_C3A7cF7iEeGEmrrwB1vhPg" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_O6TiIjLUEd26WNosUASSSw">
+ <eAnnotations xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/schemas/Standard/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
+ <eAnnotations xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
+ <eAnnotations xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_sfyAwEbjEd-l4NeVOJZDkA">
+ <eAnnotations xmi:id="_siunEEbjEd-l4NeVOJZDkA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//GCM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_SPVg0KmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_Se6N4KmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_b9oZ5rG3Ed-tmN4hwNCxXQ"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_3VS0wAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_SfbyUKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_SuJjwKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_ResourceCore"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_-1fcUBJdEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_f2hIMKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_gEtVMKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_popJkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_p1PbIKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//HLAM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_yzqusKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_zCWq8KmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Brokering"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_Cf874BJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_6xYMIKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_6_6-cKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Interaction"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_EIfnABJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_tZuBwE0tEeG4IqgA7gSE6w">
+ <eAnnotations xmi:id="_tisXkE0tEeG4IqgA7gSE6w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:DerivedElement xmi:id="_B9o7sP6yEd6Ie_kieu_3CQ" base_Element="_dH4RIKF4Ed6FqJCjEUrkqQ">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:Port xmi:id="_GofhQP6yEd6Ie_kieu_3CQ" base_Port="_4KiE8DLbEd2qeKRLMdIx_A">
+ <kind href="pathmap://QML_CORE/core.uml#_pE6GUFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Port xmi:id="_IWQqoP6yEd6Ie_kieu_3CQ" base_Port="_DtWn4DLcEd2qeKRLMdIx_A">
+ <kind href="pathmap://QML_CORE/core.uml#_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:DerivedElement xmi:id="_RwGb8P6_Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_RxVyEP6_Ed6Zw96O-tCw7A"/>
+ <Cpp:CppInclude xmi:id="_7SAnAP76Ed6Zw96O-tCw7A" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <Cpp:CppInclude xmi:id="_Sa4nEP77Ed6Zw96O-tCw7A" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <FCM:DerivedElement xmi:id="_RoIMoP94Ed6628OhKk_dpg"/>
+ <FCM:DerivedElement xmi:id="_IFlIEARJEd--t-uhRn9OBA"/>
+ <FCM:ContainerRule xmi:id="_b-TmAARJEd--t-uhRn9OBA">
+ <portSet href="pathmap://QML_CORE/core.uml#__SL-kNtxEd6nqsBVkgJEEA"/>
+ </FCM:ContainerRule>
+ <FCM:DerivedElement xmi:id="_bmwhUARMEd-OidZzGKCpzg"/>
+ <FCM:DerivedElement xmi:id="_xjNC4ATuEd-Zc_RSu20WjA"/>
+ <FCM:DerivedElement xmi:id="_LZoQ4AVIEd-rcKh6R_xjRQ"/>
+ <FCM:DerivedElement xmi:id="_oMpYkAWxEd-jrvNV_WQOlA"/>
+ <FCM:DerivedElement xmi:id="_Fd6d0AnREd-co_m_wv4b6A"/>
+ <FCM:DerivedElement xmi:id="_uLARMBGVEd-rfYlCjUOxJQ"/>
+ <FCM:DerivedElement xmi:id="_qdjxQBGkEd-Jq_XWT8Mhpg"/>
+ <FCM:DerivedElement xmi:id="_VOzfEBGlEd-Jq_XWT8Mhpg"/>
+ <FCM:DerivedElement xmi:id="_N8BrMBI4Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_jIS30BI8Ed-XjYZ05V-9-Q"/>
+ <FCM:DerivedElement xmi:id="_E5UhUBJIEd-XjYZ05V-9-Q"/>
+ <FCM:DerivedElement xmi:id="_THoRwBJWEd-QgZm_R1AKbA"/>
+ <FCM:DerivedElement xmi:id="_z0CVcBQ2Ed-_dI0JopJMvQ"/>
+ <FCM:DerivedElement xmi:id="_Ke_UsBb7Ed-u0pMEAnvpEQ"/>
+ <FCM:DerivedElement xmi:id="_uOkD4D15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_uOqKgD15Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_uOz7gD15Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppVisibility xmi:id="_0VnhsD15Ed-qiK1VZWszhA" value="public" base_generalization="_NItbAP94Ed6628OhKk_dpg"/>
+ <FCM:DerivedElement xmi:id="_a4LokD16Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_a4RvMD16Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_a4VZkD16Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_cdXBMD17Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_cdaEgD17Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_C3YKUEbjEd-l4NeVOJZDkA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_C3pQEEbjEd-l4NeVOJZDkA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_igKiENAAEd-TP80eVS-2Rg" base_Element="_tyjRy8__Ed-TP80eVS-2Rg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_igVhMNAAEd-TP80eVS-2Rg" base_Element="_tyjRzM__Ed-TP80eVS-2Rg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppInclude xmi:id="_11OtwPcaEd-KM6l7lmIPkw" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <FCM:Target xmi:id="_LD_uICr7EeCfcI_SvPT4lw" base_Node="_zY9vMDLiEd2RVeNawwNNzg">
+ <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ </FCM:Target>
+ <FCM:DeploymentPlan xmi:id="_xB2CEDOFEeCldqx_51Yicg" mainInstance="_xB3QMDOFEeCldqx_51Yicg" base_Package="_xBxwoDOFEeCldqx_51Yicg"/>
+ <GCM:FlowPort xmi:id="_DwpFMJZ7EeCiU5xXzp1cKQ" direction="in" base_Port="_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <GCM:FlowPort xmi:id="_NWXCQJZ7EeCiU5xXzp1cKQ" direction="in" base_Port="_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <FCM:Port xmi:id="_tyjRzc__Ed-TP80eVS-2Rg" base_Port="_tyiqs8__Ed-TP80eVS-2Rg">
+ <kind href="pathmap://QML_CORE/core.uml#_x5mL4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <GCM:FlowPort xmi:id="_ow3PkJZ7EeCiU5xXzp1cKQ" direction="out" base_Port="_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <FCM:DeploymentPlan xmi:id="_zwQc4LF4EeC9yscvWqW-eg" mainInstance="_zwQc4bF4EeC9yscvWqW-eg" base_Package="_zwMLcLF4EeC9yscvWqW-eg"/>
+ <FCM:DerivedElement xmi:id="_T7RXwAcsEeGYWLReZHFIwA" base_Element="_T7D8YAcsEeGYWLReZHFIwA" source="_rkw88F7hEeGEmrrwB1vhPg"/>
+ <Alloc:Allocate xmi:id="_vccHcE0tEeG4IqgA7gSE6w" base_Abstraction="_vcX2AE0tEeG4IqgA7gSE6w"/>
+ <Alloc:Allocate xmi:id="_wq1NME0tEeG4IqgA7gSE6w" base_Abstraction="_wqyJ4E0tEeG4IqgA7gSE6w"/>
+ <FCM:Connector xmi:id="_Kgl40FupEeGjjMeADLT5-g" base_Property="_EM2p4FupEeGjjMeADLT5-g"/>
+ <FCM:DerivedElement xmi:id="_rkgeQF7hEeGEmrrwB1vhPg" base_Element="_rkTC4F7hEeGEmrrwB1vhPg" source="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ <FCM:DerivedElement xmi:id="_C2kPgF7iEeGEmrrwB1vhPg" base_Element="_C2ev8F7iEeGEmrrwB1vhPg" source="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ <FCM:RuleApplication xmi:id="_Jyda4F7zEeGA7qTe7UD05A" base_Class="_tyiqsc__Ed-TP80eVS-2Rg">
+ <containerRule href="pathmap://QML_CORE/core.uml#_3Jq5MARLEd-OidZzGKCpzg"/>
+ <propagateRule>false</propagateRule>
+ </FCM:RuleApplication>
+ <FCM:ConfigurationProperty xmi:id="_o8LRoF8DEeGerN33d-RdRg" base_Property="_kLNdAF8DEeGerN33d-RdRg"/>
+ <FCM:Connector xmi:id="_COvyMGkBEeGgxNn3NWRjCQ" base_Property="_wG5YcF7uEeGA7qTe7UD05A"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/In.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/In.png
new file mode 100644
index 00000000000..74dfe916ca6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/In.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/In.svg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/In.svg
new file mode 100644
index 00000000000..42b2257c295
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/In.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ width="10"
+ height="10"
+ sodipodi:docname="In.svg">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="775"
+ inkscape:window-height="564"
+ id="namedview4"
+ showgrid="false"
+ inkscape:snap-bbox="true"
+ inkscape:bbox-paths="true"
+ inkscape:bbox-nodes="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:snap-global="false"
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:zoom="23.6"
+ inkscape:cx="-1.9979376"
+ inkscape:cy="4.2076271"
+ inkscape:window-x="599"
+ inkscape:window-y="95"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0.38135623,0.46610171 9.15254237,1.6e-7 0,9.15254283 -9.13279237,0.010842 4.13279187,-4.7142326 z"
+ id="path3035"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+</svg>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/InOut.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/InOut.png
new file mode 100644
index 00000000000..75ba94039ae
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/InOut.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/InOut.svg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/InOut.svg
new file mode 100644
index 00000000000..bc6bba9e681
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/InOut.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ width="10"
+ height="9"
+ sodipodi:docname="InOut.svg">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1160"
+ inkscape:window-height="598"
+ id="namedview4"
+ showgrid="false"
+ inkscape:zoom="26.222222"
+ inkscape:cx="1.6699352"
+ inkscape:cy="4.5"
+ inkscape:window-x="582"
+ inkscape:window-y="33"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 6.8019499,-0.04806666 10.681218,4.3687023 6.6780531,9.0770809"
+ id="path3035"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M 4.5090415,9.0625738 0.62977343,4.6458047 4.6329383,-0.06257379"
+ id="path3035-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+</svg>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Out.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Out.png
new file mode 100644
index 00000000000..5fb219bc960
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Out.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Out.svg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Out.svg
new file mode 100644
index 00000000000..ef00466fc55
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Out.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ width="10"
+ height="9"
+ sodipodi:docname="Out.svg">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="836"
+ inkscape:window-height="598"
+ id="namedview4"
+ showgrid="false"
+ inkscape:zoom="26.222222"
+ inkscape:cx="-4.6268765"
+ inkscape:cy="4.5"
+ inkscape:window-x="906"
+ inkscape:window-y="33"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 6.6780531,9.0770809 -6.17771868,-0.02916 0.0666723,-9.06755197 6.04426518,0.0097 4.0699461,4.37863337 z"
+ id="path3035"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+</svg>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Provided.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Provided.png
new file mode 100644
index 00000000000..f84ec4584ea
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Provided.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Provided.svg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Provided.svg
new file mode 100644
index 00000000000..3d3f1f8259f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Provided.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ width="7"
+ height="15"
+ sodipodi:docname="Provided.svg">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6">
+ <linearGradient
+ id="linearGradient3759"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3761" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3759-2"
+ id="linearGradient3763-9"
+ x1="-5.012712"
+ y1="2.3834746"
+ x2="1.1355932"
+ y2="2.3834746"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3759-2"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3761-2" />
+ </linearGradient>
+ <linearGradient
+ y2="2.6040568"
+ x2="-0.11361407"
+ y1="2.3834746"
+ x1="-5.012712"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3779"
+ xlink:href="#linearGradient3759-2"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1231"
+ inkscape:window-height="796"
+ id="namedview4"
+ showgrid="false"
+ inkscape:zoom="29.429652"
+ inkscape:cx="-4.4943762"
+ inkscape:cy="5.6155862"
+ inkscape:window-x="268"
+ inkscape:window-y="101"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <path
+ sodipodi:type="arc"
+ style="fill:none;stroke:#000000;stroke-width:0.84819282;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path2987"
+ sodipodi:cx="-1.9385593"
+ sodipodi:cy="2.3834746"
+ sodipodi:rx="2.5741525"
+ sodipodi:ry="2.5741525"
+ d="m 0.63559318,2.3834746 a 2.5741525,2.5741525 0 1 1 -5.14830498,0 2.5741525,2.5741525 0 1 1 5.14830498,0 z"
+ transform="matrix(0.94318176,0,0,0.94318176,5.0063798,1.3112725)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0.59721459,3.588902 -1.5713857,-3e-7"
+ id="path2992"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+</svg>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/ProvidedRequired.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/ProvidedRequired.png
new file mode 100644
index 00000000000..b89b982bf35
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/ProvidedRequired.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/ProvidedRequired.svg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/ProvidedRequired.svg
new file mode 100644
index 00000000000..7572b29a6d6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/ProvidedRequired.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ width="7"
+ height="15"
+ sodipodi:docname="ProvidedRequired.svg">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6">
+ <linearGradient
+ id="linearGradient3759"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3761" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3759-2"
+ id="linearGradient3763-9"
+ x1="-5.012712"
+ y1="2.3834746"
+ x2="1.1355932"
+ y2="2.3834746"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3759-2"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3761-2" />
+ </linearGradient>
+ <linearGradient
+ y2="2.6040568"
+ x2="-0.11361407"
+ y1="2.3834746"
+ x1="-5.012712"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3779"
+ xlink:href="#linearGradient3759-2"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="865"
+ inkscape:window-height="590"
+ id="namedview4"
+ showgrid="false"
+ inkscape:zoom="62.933333"
+ inkscape:cx="-3.0522062"
+ inkscape:cy="6.6876439"
+ inkscape:window-x="268"
+ inkscape:window-y="101"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <path
+ sodipodi:type="arc"
+ style="fill:none;stroke:#000000;stroke-width:0.84819282;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="path2987"
+ sodipodi:cx="-1.9385593"
+ sodipodi:cy="2.3834746"
+ sodipodi:rx="2.5741525"
+ sodipodi:ry="2.5741525"
+ d="m 0.63559318,2.3834746 a 2.5741525,2.5741525 0 1 1 -5.14830498,0 2.5741525,2.5741525 0 1 1 5.14830498,0 z"
+ transform="matrix(0.94318176,0,0,0.94318176,5.0063798,1.3112725)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3779);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.76314622;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2987-8"
+ sodipodi:cx="-1.9385593"
+ sodipodi:cy="2.3834746"
+ sodipodi:rx="2.5741525"
+ sodipodi:ry="2.5741525"
+ d="M -0.24535318,4.3223696 A 2.5741525,2.5741525 0 1 1 -3.1225444,0.09777113"
+ transform="matrix(0.84051786,0.6179294,-0.59903296,0.86703192,7.2790357,9.7018305)"
+ sodipodi:start="0.85293902"
+ sodipodi:end="4.2344485"
+ sodipodi:open="true" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="m 0.69915259,3.6228813 -1.84322039,-3e-7 -3e-7,7.007416 2.7330509,-0.01589"
+ id="path2992"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.80000000999999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:none"
+ d="m -2.4629237,7.1980932 c 1.1917373,-3e-7 1.2552966,-0.01589 1.2552966,-0.01589"
+ id="path2994"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+</svg>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Required.png b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Required.png
new file mode 100644
index 00000000000..81cf72f17b5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Required.png
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Required.svg b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Required.svg
new file mode 100644
index 00000000000..0b555b8f3fc
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/Required.svg
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.2 r9819"
+ width="7"
+ height="15"
+ sodipodi:docname="Required.svg">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6">
+ <linearGradient
+ id="linearGradient3759"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3761" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3759-2"
+ id="linearGradient3763-9"
+ x1="-5.012712"
+ y1="2.3834746"
+ x2="1.1355932"
+ y2="2.3834746"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient3759-2"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop3761-2" />
+ </linearGradient>
+ <linearGradient
+ y2="2.6040568"
+ x2="-0.11361407"
+ y1="2.3834746"
+ x1="-5.012712"
+ gradientUnits="userSpaceOnUse"
+ id="linearGradient3779"
+ xlink:href="#linearGradient3759-2"
+ inkscape:collect="always" />
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="970"
+ inkscape:window-height="637"
+ id="namedview4"
+ showgrid="false"
+ inkscape:zoom="62.933333"
+ inkscape:cx="0.14386251"
+ inkscape:cy="3.4265015"
+ inkscape:window-x="268"
+ inkscape:window-y="101"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <path
+ sodipodi:type="arc"
+ style="fill:url(#linearGradient3779);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.76314622;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path2987-8"
+ sodipodi:cx="-1.9385593"
+ sodipodi:cy="2.3834746"
+ sodipodi:rx="2.5741525"
+ sodipodi:ry="2.5741525"
+ d="M -0.24535318,4.3223696 A 2.5741525,2.5741525 0 1 1 -3.1225444,0.09777113"
+ transform="matrix(0.84051786,0.6179294,-0.59903296,0.86703192,7.2790357,9.7018305)"
+ sodipodi:start="0.85293902"
+ sodipodi:end="4.2344485"
+ sodipodi:open="true" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.60001606;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ d="M -0.27286742,10.630297 1.2647658,10.614407"
+ id="path2992"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+</svg>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.di
new file mode 100644
index 00000000000..4af45b41bca
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.di
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="corba.notation#_7BHBINfUEeC00P8-IM36_A"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="corba.notation#_8Y2QINfUEeC00P8-IM36_A"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="corba.notation#_7BHBINfUEeC00P8-IM36_A"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="corba.notation#_8Y2QINfUEeC00P8-IM36_A"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.notation
new file mode 100644
index 00000000000..52a0b8e9ee1
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.notation
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_7BHBINfUEeC00P8-IM36_A" type="PapyrusUMLClassDiagram" name="Array" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_blaZ0NfVEeC00P8-IM36_A" type="2010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blbA4NfVEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blbA4dfVEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blbA4tfVEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blbn8NfVEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_blbn8dfVEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_blbn8tfVEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_blbn89fVEeC00P8-IM36_A" type="5035"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_blcPANfVEeC00P8-IM36_A" type="7020">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_blcPAdfVEeC00P8-IM36_A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_blcPAtfVEeC00P8-IM36_A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_blcPA9fVEeC00P8-IM36_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blcPBNfVEeC00P8-IM36_A"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_blcPBdfVEeC00P8-IM36_A" type="7021">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_blcPBtfVEeC00P8-IM36_A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_blcPB9fVEeC00P8-IM36_A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_blcPCNfVEeC00P8-IM36_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blcPCdfVEeC00P8-IM36_A"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dB-ecNfVEeC00P8-IM36_A" type="3015" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dB_skNfVEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dB_skdfVEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dB_sktfVEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dB_sk9fVEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dCAToNfVEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dCATodfVEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dCATotfVEeC00P8-IM36_A" type="7014">
+ <children xmi:type="notation:Shape" xmi:id="_eES3ENfVEeC00P8-IM36_A" type="3031" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="corba.uml#_KfvScD3kEd2O2pi7NYtbsg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eES3EdfVEeC00P8-IM36_A" x="19" y="12"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dCATo9fVEeC00P8-IM36_A"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_dCATpNfVEeC00P8-IM36_A"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_dCATpdfVEeC00P8-IM36_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dCATptfVEeC00P8-IM36_A"/>
+ </children>
+ <element xmi:type="uml:RedefinableTemplateSignature" href="corba.uml#_IaxxED3kEd2O2pi7NYtbsg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB-ecdfVEeC00P8-IM36_A" x="125" y="-10"/>
+ </children>
+ <element xmi:type="uml:DataType" href="corba.uml#_ZXcrcD0REd2lhaJErguyFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_blaZ0dfVEeC00P8-IM36_A" x="145" y="120" width="144"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_7BHBIdfUEeC00P8-IM36_A"/>
+ <element xmi:type="uml:Model" href="corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_8Y2QINfUEeC00P8-IM36_A" type="PapyrusUMLClassDiagram" name="PrimitiveTypes" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_9a14oNfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9a3GwNfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9a3GwdfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9a3GwtfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9a3Gw9fUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9a3t0NfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9a3t0dfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9a3t0tfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_Pf0dQB-VEd6nGq8wpI2tjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9a14odfUEeC00P8-IM36_A" x="216" y="162"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9bgnANfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9bhOENfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bhOEdfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9bhOEtfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bhOE9fUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9bh1INfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bh1IdfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9bh1ItfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_CTLbgB6SEd6ITtm_FH3jRw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9bgnAdfUEeC00P8-IM36_A" x="90" y="306"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9bxswNfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9bxswtfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bxsw9fUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9bxsxNfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9byT0NfUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9byT0dfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9byT0tfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9byT09fUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_Wx0C4B6SEd6ITtm_FH3jRw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9bxswdfUEeC00P8-IM36_A" x="342" y="306"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9cDZkNfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9cEAoNfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cEAodfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9cEAotfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cEAo9fUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9cEApNfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cEApdfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9cEAptfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_-5FTMB6REd6ITtm_FH3jRw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9cDZkdfUEeC00P8-IM36_A" x="216" y="306"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9cVtcNfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9cWUgNfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cWUgdfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9cWUgtfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cWUg9fUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9cW7kNfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cW7kdfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9cW7ktfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9cVtcdfUEeC00P8-IM36_A" x="216" y="90"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9csSwNfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9csSwtfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cs50NfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9cs50dfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cs50tfUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9cs509fUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9cs51NfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9cs51dfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_IYEXcB-VEd6nGq8wpI2tjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9csSwdfUEeC00P8-IM36_A" x="90" y="90"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9c_NsNfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9c_NstfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9c_0wNfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9c_0wdfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9c_0wtfUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9c_0w9fUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9c_0xNfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9c_0xdfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_7CL6IB6REd6ITtm_FH3jRw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9c_NsdfUEeC00P8-IM36_A" x="468" y="90"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9dTWwNfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dT90dfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dT90tfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dT909fUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dT91NfUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dT91dfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dT91tfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9dT919fUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_wzSnwB6SEd6ITtm_FH3jRw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9dT90NfUEeC00P8-IM36_A" x="342" y="234"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9dsYUNfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9ds_YNfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9ds_YdfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dtmcNfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dtmcdfUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dtmctfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dtmc9fUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9dtmdNfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9dsYUdfUEeC00P8-IM36_A" x="342" y="90"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9eEy0NfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9eEy0tfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9eEy09fUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9eEy1NfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9eEy1dfUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9eEy1tfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9eFZ4NfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9eFZ4dfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_wbw4kB6SEd6ITtm_FH3jRw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9eEy0dfUEeC00P8-IM36_A" x="90" y="234"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9eY74NfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9eZi8NfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9eZi8dfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9eZi8tfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9eZi89fUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9eZi9NfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9eZi9dfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9eZi9tfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_qgMSAB6SEd6ITtm_FH3jRw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9eY74dfUEeC00P8-IM36_A" x="216" y="234"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9etsANfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9euTENfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9euTEdfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9euTEtfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9euTE9fUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9euTFNfUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9euTFdfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9euTFtfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_GPceEB-VEd6nGq8wpI2tjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9etsAdfUEeC00P8-IM36_A" x="90" y="162"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9fCcINfUEeC00P8-IM36_A" type="2009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9fCcItfUEeC00P8-IM36_A" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9fDDMNfUEeC00P8-IM36_A" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9fDDMdfUEeC00P8-IM36_A" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9fDDMtfUEeC00P8-IM36_A" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9fDDM9fUEeC00P8-IM36_A" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9fDDNNfUEeC00P8-IM36_A" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9fDDNdfUEeC00P8-IM36_A" type="5032"/>
+ <element xmi:type="uml:PrimitiveType" href="corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9fCcIdfUEeC00P8-IM36_A" x="90" y="18"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QwgcIGJWEeG3qIU2KF8MuA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qwi4YGJWEeG3qIU2KF8MuA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qwi4YWJWEeG3qIU2KF8MuA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qwi4YmJWEeG3qIU2KF8MuA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qwi4Y2JWEeG3qIU2KF8MuA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QwjfcGJWEeG3qIU2KF8MuA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QwjfcWJWEeG3qIU2KF8MuA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QwjfcmJWEeG3qIU2KF8MuA" type="5038"/>
+ <element xmi:type="uml:Comment" href="corba.uml#_Qm8QcGJWEeG3qIU2KF8MuA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QwgcIWJWEeG3qIU2KF8MuA" x="539" y="184" width="317"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_8Y2QIdfUEeC00P8-IM36_A"/>
+ <element xmi:type="uml:Model" href="corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.uml
new file mode 100644
index 00000000000..cadf7e03d24
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/corba.uml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:l2="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_DtQEwDLdEd2_U4efLnjQIw" name="corba">
+ <ownedComment xmi:id="_Qm8QcGJWEeG3qIU2KF8MuA">
+ <body>The CORBA primitive types are defined by means of the C++ profile. For portability, they rely on the (C99) standard include file stdint.h</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:DataType" xmi:id="_ZXcrcD0REd2lhaJErguyFA" name="Array">
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_IaxxED3kEd2O2pi7NYtbsg" parameter="_KfvScD3kEd2O2pi7NYtbsg _ZngtYD3lEd2O2pi7NYtbsg _8xIjUEd5Ed2Q3Lt-_ZCAOw">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_KfvScD3kEd2O2pi7NYtbsg" parameteredElement="_UOqO0D3kEd2O2pi7NYtbsg">
+ <ownedParameteredElement xmi:type="uml:DataType" xmi:id="_UOqO0D3kEd2O2pi7NYtbsg" name="T" templateParameter="_KfvScD3kEd2O2pi7NYtbsg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ZngtYD3lEd2O2pi7NYtbsg" parameteredElement="_cULvAD3lEd2O2pi7NYtbsg">
+ <ownedParameteredElement xmi:type="uml:LiteralInteger" xmi:id="_cULvAD3lEd2O2pi7NYtbsg" name="nbOfRows" templateParameter="_ZngtYD3lEd2O2pi7NYtbsg"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_8xIjUEd5Ed2Q3Lt-_ZCAOw" parameteredElement="_J9OKIEd6Ed2Q3Lt-_ZCAOw">
+ <ownedParameteredElement xmi:type="uml:LiteralInteger" xmi:id="_J9OKIEd6Ed2Q3Lt-_ZCAOw" name="nbOfColons" templateParameter="_8xIjUEd5Ed2Q3Lt-_ZCAOw"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <ownedAttribute xmi:id="_fMhocD0REd2lhaJErguyFA" name="numberOfRows" visibility="public" type="_FxVBkB6LEd6Nj_33Eb_pxw" isUnique="false">
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-yHRsEd7Ed2Q3Lt-_ZCAOw" value="nbOfRows"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_fx0t4D0REd2lhaJErguyFA" name="numberOfColons" visibility="public" type="_FxVBkB6LEd6Nj_33Eb_pxw" isUnique="false">
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_fNdNkEd6Ed2Q3Lt-_ZCAOw" value="nbOfColons"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_aGz1YD0dEd2lhaJErguyFA" name="elementType" visibility="public" type="_UOqO0D3kEd2O2pi7NYtbsg" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WHQBkEd7Ed2Q3Lt-_ZCAOw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WHZLgEd7Ed2Q3Lt-_ZCAOw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WHjjkEd7Ed2Q3Lt-_ZCAOw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="__XFfIB-UEd6nGq8wpI2tjg" name="Any"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Pf0dQB-VEd6nGq8wpI2tjg" name="Wchar"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_CTLbgB6SEd6ITtm_FH3jRw" name="UnsignedShort"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Wx0C4B6SEd6ITtm_FH3jRw" name="UnsignedLongLong"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_-5FTMB6REd6ITtm_FH3jRw" name="UnsignedLong"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_9XvcQB6REd6ITtm_FH3jRw" name="Short"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_IYEXcB-VEd6nGq8wpI2tjg" name="Octet"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_7CL6IB6REd6ITtm_FH3jRw" name="LongLong"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_wzSnwB6SEd6ITtm_FH3jRw" name="LongDouble"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_FxVBkB6LEd6Nj_33Eb_pxw" name="Long"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_wbw4kB6SEd6ITtm_FH3jRw" name="Float"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_qgMSAB6SEd6ITtm_FH3jRw" name="Double"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_GPceEB-VEd6nGq8wpI2tjg" name="Char"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_Bv7l0B-VEd6nGq8wpI2tjg" name="Boolean"/>
+ <profileApplication xmi:id="_DtQEwjLdEd2_U4efLnjQIw">
+ <eAnnotations xmi:id="_DtQEwzLdEd2_U4efLnjQIw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_JV5UgB6LEd6Nj_33Eb_pxw">
+ <eAnnotations xmi:id="_JWB3YB6LEd6Nj_33Eb_pxw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ </uml:Model>
+ <l2:ModelLibrary xmi:id="_FrmAwDLdEd2_U4efLnjQIw" base_Package="_DtQEwDLdEd2_U4efLnjQIw"/>
+ <Cpp:CppType xmi:id="_DpdTQB-VEd6nGq8wpI2tjg" definition="bool" base_primitivetype="_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ <Cpp:CppType xmi:id="_LlZPEB-VEd6nGq8wpI2tjg" definition="unsigned char" base_primitivetype="_IYEXcB-VEd6nGq8wpI2tjg"/>
+ <Cpp:CppType xmi:id="_RegXgB-VEd6nGq8wpI2tjg" definition="unsigned short" base_primitivetype="_Pf0dQB-VEd6nGq8wpI2tjg"/>
+ <Cpp:CppType xmi:id="_6hF5AMMFEd6DF55s2oWakw" definition="int" base_primitivetype="_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <Cpp:CppType xmi:id="_QwNhYMMYEd6DF55s2oWakw" definition="char" base_primitivetype="_GPceEB-VEd6nGq8wpI2tjg"/>
+ <Cpp:CppType xmi:id="_ZSqqoMMYEd6DF55s2oWakw" definition="double" base_primitivetype="_qgMSAB6SEd6ITtm_FH3jRw"/>
+ <Cpp:CppType xmi:id="_bJ-xkMMYEd6DF55s2oWakw" definition="float" base_primitivetype="_wbw4kB6SEd6ITtm_FH3jRw"/>
+ <Cpp:CppType xmi:id="_dglckMMYEd6DF55s2oWakw" definition="long double" base_primitivetype="_wzSnwB6SEd6ITtm_FH3jRw"/>
+ <Cpp:CppType xmi:id="_grG30MMYEd6DF55s2oWakw" definition="int64_t" base_primitivetype="_7CL6IB6REd6ITtm_FH3jRw"/>
+ <Cpp:CppType xmi:id="_ikBhQMMYEd6DF55s2oWakw" definition="int16_t" base_primitivetype="_9XvcQB6REd6ITtm_FH3jRw"/>
+ <Cpp:CppType xmi:id="_kltFIMMYEd6DF55s2oWakw" definition="uint32_t" base_primitivetype="_-5FTMB6REd6ITtm_FH3jRw"/>
+ <Cpp:CppType xmi:id="_nW5aYMMYEd6DF55s2oWakw" definition="uint16_t" base_primitivetype="_CTLbgB6SEd6ITtm_FH3jRw"/>
+ <Cpp:CppType xmi:id="_plbHcMMYEd6DF55s2oWakw" definition="uint64_t" base_primitivetype="_Wx0C4B6SEd6ITtm_FH3jRw"/>
+ <Cpp:CppInclude xmi:id="_L7vsoGJWEeG3qIU2KF8MuA" header="#include &lt;stdint.h>" base_package="_DtQEwDLdEd2_U4efLnjQIw"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di
new file mode 100644
index 00000000000..e890309251f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmlns:history="http://www.eclipse.org/papyrus/0.7.0/controlmode">
+ <di:SashWindowsMngr xmi:id="_pKTSkNYFEd-CgJIavLpOxQ">
+ <pageList xmi:id="_pKTSkdYFEd-CgJIavLpOxQ">
+ <availablePage xmi:id="_pKTSktYFEd-CgJIavLpOxQ">
+ <emfPageIdentifier href="core.notation#_FYAkIG4sEd-0rs2VEGIwsA"/>
+ </availablePage>
+ <availablePage xmi:id="_A6ULItYGEd-CgJIavLpOxQ">
+ <emfPageIdentifier href="core.notation#_A6ULINYGEd-CgJIavLpOxQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_glyeMK8qEeCXIcykFPsB8Q"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_DtdykK8rEeCXIcykFPsB8Q"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_PIvc4LabEeCj_-LEBuGpmA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_0IaT8LnYEeCxXoyQxQ47PQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_SstwYPEnEeCIafpoJVk7CQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_eblvwPM_EeCovO8AYZymZQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_hyLz8PNGEeCovO8AYZymZQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_cVCGYPNUEeCovO8AYZymZQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_g6Yg0CnOEeGxrprK9wB9iA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_OhgzgD8AEeGJ6KSvhYhYuQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="core.notation#_DfG8kF7qEeGEmrrwB1vhPg"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_pKTSk9YFEd-CgJIavLpOxQ" currentSelection="_pKTSldYFEd-CgJIavLpOxQ">
+ <windows xmi:id="_pKTSlNYFEd-CgJIavLpOxQ">
+ <children xsi:type="di:TabFolder" xmi:id="_pKTSldYFEd-CgJIavLpOxQ">
+ <children>
+ <emfPageIdentifier href="core.notation#_glyeMK8qEeCXIcykFPsB8Q"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_DtdykK8rEeCXIcykFPsB8Q"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_PIvc4LabEeCj_-LEBuGpmA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_0IaT8LnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_SstwYPEnEeCIafpoJVk7CQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_g6Yg0CnOEeGxrprK9wB9iA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_OhgzgD8AEeGJ6KSvhYhYuQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_cVCGYPNUEeCovO8AYZymZQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_hyLz8PNGEeCovO8AYZymZQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_DfG8kF7qEeGEmrrwB1vhPg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_FYAkIG4sEd-0rs2VEGIwsA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_eblvwPM_EeCovO8AYZymZQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="core.notation#_A6ULINYGEd-CgJIavLpOxQ"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+ </di:SashWindowsMngr>
+ <history:ControledResource xmi:id="_pKT5oNYFEd-CgJIavLpOxQ"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation
new file mode 100644
index 00000000000..54e8086efff
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation
@@ -0,0 +1,3896 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_FYAkIG4sEd-0rs2VEGIwsA" type="CompositeStructure" name="Composite Async &amp; sync call hierarchy" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_FYAkIW4sEd-0rs2VEGIwsA" type="2073" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_FYAkIm4sEd-0rs2VEGIwsA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FYAkI24sEd-0rs2VEGIwsA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYAkJG4sEd-0rs2VEGIwsA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FYAkJW4sEd-0rs2VEGIwsA" type="3069" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AEHTkDrTEeGKkdk54CX6PQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8kEM4DrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8kEz8DrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8kEz8TrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8kEz8jrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8kEz8zrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FYAkJm4sEd-0rs2VEGIwsA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__EG7cF7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uh8jQFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FYAkJ24sEd-0rs2VEGIwsA" x="-56"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FYBLMG4sEd-0rs2VEGIwsA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FYBLMW4sEd-0rs2VEGIwsA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYBLMm4sEd-0rs2VEGIwsA" x="110" y="45"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_mIpj8Ns8Ed2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYBLM24sEd-0rs2VEGIwsA" x="225" y="90" width="120" height="84"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FYBLNG4sEd-0rs2VEGIwsA" type="2073" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_FYBLNW4sEd-0rs2VEGIwsA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FYBLNm4sEd-0rs2VEGIwsA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYBLN24sEd-0rs2VEGIwsA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FYBLOG4sEd-0rs2VEGIwsA" type="3069" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4qWbQDrTEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48kMoDrTEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48kMoTrTEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48kMojrTEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48kMozrTEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48kMpDrTEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FYBLOW4sEd-0rs2VEGIwsA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__2FK8F7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VHb18FbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FYBLOm4sEd-0rs2VEGIwsA" x="25" y="1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FYBLO24sEd-0rs2VEGIwsA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FYBLPG4sEd-0rs2VEGIwsA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYBLPW4sEd-0rs2VEGIwsA" x="-10" y="44"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_j29X4NttEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FYBLPm4sEd-0rs2VEGIwsA" x="420" y="90" width="121" height="79"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cTlm4G5fEd-5CZIeuHpHAg" type="2073" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cTm1AG5fEd-5CZIeuHpHAg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cTm1AW5fEd-5CZIeuHpHAg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cTm1Am5fEd-5CZIeuHpHAg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cTm1A25fEd-5CZIeuHpHAg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cTm1BG5fEd-5CZIeuHpHAg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cTm1BW5fEd-5CZIeuHpHAg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cTm1Bm5fEd-5CZIeuHpHAg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cTm1B25fEd-5CZIeuHpHAg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTm1CG5fEd-5CZIeuHpHAg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cnOc0DrVEeGMCcwsbpLuFA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cnQ5EDrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cnQ5ETrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cnQ5EjrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cnQ5EzrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cnQ5FDrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cnRgIDrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2J1UYDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ZuKgDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ZuxkDrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ZuxkTrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ZuxkjrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2ZuxkzrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cnRgITrVEeGMCcwsbpLuFA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sbFK0F7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XaUekFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cnRgIjrVEeGMCcwsbpLuFA" x="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cnSHMDrVEeGMCcwsbpLuFA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cnSHMTrVEeGMCcwsbpLuFA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cnOc0TrVEeGMCcwsbpLuFA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cnSuQDrVEeGMCcwsbpLuFA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cnSuQjrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cnSuQzrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cnSuRDrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cnSuRTrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cnTVUDrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cnTVUTrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yOmN4DrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yixHEDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yixuIDrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yixuITrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yixuIjrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yixuIzrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cnTVUjrVEeGMCcwsbpLuFA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3vXigF7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_W6BN4FbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cnTVUzrVEeGMCcwsbpLuFA" x="-25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cnTVVDrVEeGMCcwsbpLuFA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cnTVVTrVEeGMCcwsbpLuFA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cnSuQTrVEeGMCcwsbpLuFA" x="106" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_KxQBELuXEd2TTr3gJIvazw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTmN8G5fEd-5CZIeuHpHAg" x="225" y="270" width="116" height="76"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nkmBEG5fEd-5CZIeuHpHAg" type="2073" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nkmoIG5fEd-5CZIeuHpHAg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nknPMG5fEd-5CZIeuHpHAg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nknPMW5fEd-5CZIeuHpHAg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nknPMm5fEd-5CZIeuHpHAg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nknPM25fEd-5CZIeuHpHAg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nknPNG5fEd-5CZIeuHpHAg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nknPNW5fEd-5CZIeuHpHAg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nknPNm5fEd-5CZIeuHpHAg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nknPN25fEd-5CZIeuHpHAg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hZRPgDrVEeGMCcwsbpLuFA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hZR2kDrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hZR2kTrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hZR2kjrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hZR2kzrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hZR2lDrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hZR2lTrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3C2AADrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3cOJUDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3cOJUTrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3cOJUjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3cOJUzrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3cOJVDrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hZR2ljrVEeGMCcwsbpLuFA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s2NAkF7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_whZf8F7qEeGEmrrwB1vhPg" key="CustomAppearance_MaskValue" value="52"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hZR2lzrVEeGMCcwsbpLuFA" x="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hZR2mDrVEeGMCcwsbpLuFA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hZSdoDrVEeGMCcwsbpLuFA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hZRPgTrVEeGMCcwsbpLuFA" x="-10" y="33"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_hZSdoTrVEeGMCcwsbpLuFA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hZTEsDrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hZTEsTrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hZTEsjrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hZTEszrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hZTEtDrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hZTEtTrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4TtK8DrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4okAoDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4okAoTrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4okAojrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4okAozrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4oknsDrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hZTEtjrVEeGMCcwsbpLuFA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_24F8QF7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2_b6YF7qEeGEmrrwB1vhPg" key="CustomAppearance_MaskValue" value="52"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hZTEtzrVEeGMCcwsbpLuFA" x="-30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hZTEuDrVEeGMCcwsbpLuFA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_hZTrwDrVEeGMCcwsbpLuFA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hZSdojrVEeGMCcwsbpLuFA" x="111" y="33"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_Whe8EClYEd-eoo60eNyGlg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nkmBEW5fEd-5CZIeuHpHAg" x="225" y="390" width="121" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HJAqEG5gEd-5CZIeuHpHAg" type="2073" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HJBRIG5gEd-5CZIeuHpHAg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HJBRIW5gEd-5CZIeuHpHAg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HJBRIm5gEd-5CZIeuHpHAg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HJBRI25gEd-5CZIeuHpHAg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HJB4MG5gEd-5CZIeuHpHAg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HJB4MW5gEd-5CZIeuHpHAg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HJB4Mm5gEd-5CZIeuHpHAg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HJB4M25gEd-5CZIeuHpHAg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJB4NG5gEd-5CZIeuHpHAg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iOXEcDrVEeGMCcwsbpLuFA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iOXrgDrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iOXrgTrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iOXrgjrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iOXrgzrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iOXrhDrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iOXrhTrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5dF04DrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_56NOsDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_56NOsTrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_56NOsjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_56N1wDrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_56N1wTrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iOXrhjrVEeGMCcwsbpLuFA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BXMYYF7rEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VrqkYFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iOXrhzrVEeGMCcwsbpLuFA" x="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iOXriDrVEeGMCcwsbpLuFA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iOXriTrVEeGMCcwsbpLuFA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iOXEcTrVEeGMCcwsbpLuFA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iOYSkDrVEeGMCcwsbpLuFA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iOYSkjrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iOY5oDrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iOY5oTrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iOY5ojrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iOY5ozrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iOY5pDrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6tcCcDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7BnisDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7BoJwDrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7BoJwTrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7BoJwjrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7BoJwzrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iOY5pTrVEeGMCcwsbpLuFA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tskA0F7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WOFU8FbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iOY5pjrVEeGMCcwsbpLuFA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iOY5pzrVEeGMCcwsbpLuFA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iOY5qDrVEeGMCcwsbpLuFA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iOYSkTrVEeGMCcwsbpLuFA" x="111" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_Zx2ZUA1jEd6tvthBDl600Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJAqEW5gEd-5CZIeuHpHAg" x="420" y="270" width="121" height="76"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_H_CTIG5gEd-5CZIeuHpHAg" type="2073" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H_C6MG5gEd-5CZIeuHpHAg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H_C6MW5gEd-5CZIeuHpHAg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H_C6Mm5gEd-5CZIeuHpHAg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H_C6M25gEd-5CZIeuHpHAg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H_C6NG5gEd-5CZIeuHpHAg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H_C6NW5gEd-5CZIeuHpHAg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H_C6Nm5gEd-5CZIeuHpHAg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H_C6N25gEd-5CZIeuHpHAg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H_C6OG5gEd-5CZIeuHpHAg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kf30EDrVEeGMCcwsbpLuFA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kf4bIDrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kf4bITrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kf4bIjrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kf4bIzrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kf4bJDrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kf4bJTrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o5tiIDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pQdOMDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pQdOMTrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pQdOMjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pQd1QDrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pQd1QTrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kf4bJjrVEeGMCcwsbpLuFA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EmPuUF7rEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GfK-0F7rEeGEmrrwB1vhPg" key="CustomAppearance_MaskValue" value="52"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kf4bJzrVEeGMCcwsbpLuFA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kf4bKDrVEeGMCcwsbpLuFA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kf4bKTrVEeGMCcwsbpLuFA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kf30ETrVEeGMCcwsbpLuFA" x="-10" y="33"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kf5CMDrVEeGMCcwsbpLuFA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kf5pQDrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kf5pQTrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kf5pQjrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kf5pQzrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kf5pRDrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kf5pRTrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_noqJ8DrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oBjyIDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oBjyITrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oBjyIjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oBkZMDrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oBkZMTrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kf5pRjrVEeGMCcwsbpLuFA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tXAAgF7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EFa5MF7rEeGEmrrwB1vhPg" key="CustomAppearance_MaskValue" value="52"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kf5pRzrVEeGMCcwsbpLuFA" x="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kf5pSDrVEeGMCcwsbpLuFA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kf5pSTrVEeGMCcwsbpLuFA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kf5CMTrVEeGMCcwsbpLuFA" x="111" y="33"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_jOU60A1jEd6tvthBDl600Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H_CTIW5gEd-5CZIeuHpHAg" x="420" y="390" width="121" height="70"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__rQAQDrVEeGMCcwsbpLuFA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__rQnUDrVEeGMCcwsbpLuFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__rQnUTrVEeGMCcwsbpLuFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__rQnUjrVEeGMCcwsbpLuFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__rQnUzrVEeGMCcwsbpLuFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__rQnVDrVEeGMCcwsbpLuFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__rQnVTrVEeGMCcwsbpLuFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__rQnVjrVEeGMCcwsbpLuFA" type="5192"/>
+ <element xmi:type="uml:Comment" href="core.uml#__oxUADrVEeGMCcwsbpLuFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__rQAQTrVEeGMCcwsbpLuFA" x="596" y="102" width="242"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2oWskF7pEeGEmrrwB1vhPg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2oX6sF7pEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2oX6sV7pEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2oX6sl7pEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2oX6s17pEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2oX6tF7pEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2oX6tV7pEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2oYhwF7pEeGEmrrwB1vhPg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_2oYhwV7pEeGEmrrwB1vhPg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2oYhwl7pEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2oYhw17pEeGEmrrwB1vhPg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5wCPMF7pEeGEmrrwB1vhPg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5wC2QF7pEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wC2QV7pEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5wC2Ql7pEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wC2Q17pEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5wC2RF7pEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wC2RV7pEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8uIYAF7pEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9B96AF7pEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9B96AV7pEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9B96Al7pEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9B96A17pEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9B96BF7pEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5wC2Rl7pEeGEmrrwB1vhPg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-VsWQF7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZVGwQFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5wC2R17pEeGEmrrwB1vhPg" x="-99"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5wC2SF7pEeGEmrrwB1vhPg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5wC2SV7pEeGEmrrwB1vhPg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_0KY1UF7pEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5wCPMV7pEeGEmrrwB1vhPg" x="108" y="45"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_0KYOQF7pEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2oWskV7pEeGEmrrwB1vhPg" x="36" y="90" width="118" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TLmDkF7qEeGEmrrwB1vhPg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TLmqoF7qEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TLmqoV7qEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TLmqol7qEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TLmqo17qEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TLmqpF7qEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TLmqpV7qEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TLnRsF7qEeGEmrrwB1vhPg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TLnRsV7qEeGEmrrwB1vhPg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TLnRsl7qEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TLnRs17qEeGEmrrwB1vhPg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ewlwwF7qEeGEmrrwB1vhPg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ewmX0F7qEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ewmX0V7qEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ewmX0l7qEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ewmX017qEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ewmX1F7qEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ewmX1V7qEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nfCuoF7qEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n3u7cF7qEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n3u7cV7qEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n3u7cl7qEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n3u7c17qEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_n3u7dF7qEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ewmX1l7qEeGEmrrwB1vhPg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_08xfEF7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Gzk0F7qEeGEmrrwB1vhPg" key="CustomAppearance_MaskValue" value="52"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ewmX117qEeGEmrrwB1vhPg" x="-63"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ewmX2F7qEeGEmrrwB1vhPg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ewmX2V7qEeGEmrrwB1vhPg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_0KY1UF7pEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ewlwwV7qEeGEmrrwB1vhPg" x="106" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ewm-4F7qEeGEmrrwB1vhPg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ewm-4l7qEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ewm-417qEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ewm-5F7qEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ewm-5V7qEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ewm-5l7qEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ewm-517qEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lHhdoF7qEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lvZV8F7qEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lvZV8V7qEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lvZV8l7qEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lvZV817qEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lvZV9F7qEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ewnl8F7qEeGEmrrwB1vhPg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_x3Ij0F7qEeGEmrrwB1vhPg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YVUHMFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ewnl8V7qEeGEmrrwB1vhPg" x="17"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ewnl8l7qEeGEmrrwB1vhPg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ewnl817qEeGEmrrwB1vhPg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ewm-4V7qEeGEmrrwB1vhPg" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_TLShkF7qEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TLmDkV7qEeGEmrrwB1vhPg" x="38" y="270" width="116" height="73"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_FYBLP24sEd-0rs2VEGIwsA"/>
+ <element xmi:type="uml:Package" href="core.uml#_mMCK8PiPEd2UhpY2Y3WUyg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_dNEMkG5fEd-5CZIeuHpHAg" type="4015" source="_cTlm4G5fEd-5CZIeuHpHAg" target="_FYAkIW4sEd-0rs2VEGIwsA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_dNFasG5fEd-5CZIeuHpHAg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dNGo0G5fEd-5CZIeuHpHAg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_dNEMkW5fEd-5CZIeuHpHAg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_1H2JwDBEEd6V16eboHV1gw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dNEMkm5fEd-5CZIeuHpHAg" points="[-8, -20, 58, 145]$[-50, -123, 16, 42]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_drspUG5fEd-5CZIeuHpHAg" type="4015" source="_cTlm4G5fEd-5CZIeuHpHAg" target="_FYBLNG4sEd-0rs2VEGIwsA" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_drtQYG5fEd-5CZIeuHpHAg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_drtQYW5fEd-5CZIeuHpHAg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_drspUW5fEd-5CZIeuHpHAg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_0KzSsDBEEd6V16eboHV1gw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_drspUm5fEd-5CZIeuHpHAg" points="[41, -38, -136, 105]$[41, -92, -136, 51]$[172, -92, -5, 51]$[172, -139, -5, 4]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jflTgG5fEd-5CZIeuHpHAg" id="(0.3305785123966942,0.9493670886075949)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_pOq9QG5fEd-5CZIeuHpHAg" type="4015" source="_nkmBEG5fEd-5CZIeuHpHAg" target="_cTlm4G5fEd-5CZIeuHpHAg" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qQj4EG5fEd-5CZIeuHpHAg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qQj4EW5fEd-5CZIeuHpHAg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qQj4Em5fEd-5CZIeuHpHAg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qQj4E25fEd-5CZIeuHpHAg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qQj4FG5fEd-5CZIeuHpHAg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qQj4FW5fEd-5CZIeuHpHAg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pOrkUG5fEd-5CZIeuHpHAg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pOrkUW5fEd-5CZIeuHpHAg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_pOq9QW5fEd-5CZIeuHpHAg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_lYOSkClzEd-eoo60eNyGlg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pOq9Qm5fEd-5CZIeuHpHAg" points="[1, -40, 0, 83]$[0, -85, -1, 38]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_IsGNcG5gEd-5CZIeuHpHAg" type="4015" source="_H_CTIG5gEd-5CZIeuHpHAg" target="_HJAqEG5gEd-5CZIeuHpHAg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_IsPXYG5gEd-5CZIeuHpHAg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_IsPXYW5gEd-5CZIeuHpHAg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_IsGNcW5gEd-5CZIeuHpHAg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_lm4GkA1jEd6tvthBDl600Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IsGNcm5gEd-5CZIeuHpHAg" points="[-4, -20, 17, 90]$[-18, -90, 3, 20]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KGqG8G5gEd-5CZIeuHpHAg" type="4015" source="_HJAqEG5gEd-5CZIeuHpHAg" target="_FYAkIW4sEd-0rs2VEGIwsA" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KGrVEG5gEd-5CZIeuHpHAg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KGrVEW5gEd-5CZIeuHpHAg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KGqG8W5gEd-5CZIeuHpHAg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_T1zr4DBFEd6V16eboHV1gw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KGqG8m5gEd-5CZIeuHpHAg" points="[-31, -18, 261, 147]$[-232, -132, 60, 33]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Kc5csG5gEd-5CZIeuHpHAg" type="4015" source="_HJAqEG5gEd-5CZIeuHpHAg" target="_FYBLNG4sEd-0rs2VEGIwsA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Kc6DwG5gEd-5CZIeuHpHAg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Kc6DwW5gEd-5CZIeuHpHAg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Kc5csW5gEd-5CZIeuHpHAg" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_STdvYDBFEd6V16eboHV1gw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Kc5csm5gEd-5CZIeuHpHAg" points="[-12, -23, 74, 146]$[-66, -129, 20, 40]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_DjnY8DrWEeGMCcwsbpLuFA" type="4002" source="__rQAQDrVEeGMCcwsbpLuFA" target="_FYBLNG4sEd-0rs2VEGIwsA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_DjoAADrWEeGMCcwsbpLuFA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DjoAATrWEeGMCcwsbpLuFA" points="[-19, 1, 78, 0]$[-74, 3, 23, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DjzmMDrWEeGMCcwsbpLuFA" id="(0.11801242236024845,0.5)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DjzmMTrWEeGMCcwsbpLuFA" id="(0.8099173553719008,0.5443037974683544)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_WhiEoF7qEeGEmrrwB1vhPg" type="4015" source="_TLmDkF7qEeGEmrrwB1vhPg" target="_2oWskF7pEeGEmrrwB1vhPg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_WhirsF7qEeGEmrrwB1vhPg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WhirsV7qEeGEmrrwB1vhPg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_WhiEoV7qEeGEmrrwB1vhPg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_WhUpQF7qEeGEmrrwB1vhPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WhiEol7qEeGEmrrwB1vhPg" points="[1, -4, 0, 109]$[-3, -107, -4, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wh9icF7qEeGEmrrwB1vhPg" id="(0.3673469387755102,0.06779661016949153)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wh9icV7qEeGEmrrwB1vhPg" id="(0.3305084745762712,0.926829268292683)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XgiDgF7qEeGEmrrwB1vhPg" type="4015" source="_TLmDkF7qEeGEmrrwB1vhPg" target="_FYBLNG4sEd-0rs2VEGIwsA" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XgiqkF7qEeGEmrrwB1vhPg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XgiqkV7qEeGEmrrwB1vhPg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XgiDgV7qEeGEmrrwB1vhPg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_XgUoIF7qEeGEmrrwB1vhPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XgiDgl7qEeGEmrrwB1vhPg" points="[17, -6, -338, 114]$[349, -112, -6, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Xg9hUF7qEeGEmrrwB1vhPg" id="(0.6632653061224489,0.1016949152542373)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Xg9hUV7qEeGEmrrwB1vhPg" id="(0.3140495867768595,0.8987341772151899)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_A6ULINYGEd-CgJIavLpOxQ" type="PapyrusUMLClassDiagram" name="Class: ContainerServices" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_ByS8ANYGEd-CgJIavLpOxQ" type="2008" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ByUKINYGEd-CgJIavLpOxQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ByUKIdYGEd-CgJIavLpOxQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ByUKItYGEd-CgJIavLpOxQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ByUKI9YGEd-CgJIavLpOxQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ByUKJNYGEd-CgJIavLpOxQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ByUxMNYGEd-CgJIavLpOxQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GTjzUCXVEeGX6PuSE-DJlQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4nx5IM0zEeGV96JAv8cWdw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4nx5Ic0zEeGV96JAv8cWdw" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4nx5Is0zEeGV96JAv8cWdw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4nx5I80zEeGV96JAv8cWdw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4nx5JM0zEeGV96JAv8cWdw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ByUxMdYGEd-CgJIavLpOxQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ByUxMtYGEd-CgJIavLpOxQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_5X2YACVqEeGXBt65HZzY7g" type="3012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oG9wEFeJEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tfIHkFeJEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Port" href="core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_5X2YASVqEeGXBt65HZzY7g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_60xB8CVqEeGXBt65HZzY7g" type="3012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qGsMIFeJEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qRYZMFeJEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_rVfYoMGJEd-Mveea1W_olA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_60xB8SVqEeGXBt65HZzY7g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_r31CwCXREeGX6PuSE-DJlQ" type="3012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rmOsQFeJEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rxObUFeJEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Port" href="core.uml#_ZjdOAP-EEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_r31CwSXREeGX6PuSE-DJlQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ByUxM9YGEd-CgJIavLpOxQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ByUxNNYGEd-CgJIavLpOxQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ByUxNdYGEd-CgJIavLpOxQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ByUxNtYGEd-CgJIavLpOxQ" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_s9ecMCXREeGX6PuSE-DJlQ" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="core.uml#_yv198P-EEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_s9ecMSXREeGX6PuSE-DJlQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_s9fDQCXREeGX6PuSE-DJlQ" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="core.uml#_JmxyMD16Ed-Bk-AHd6yyoA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_s9fDQSXREeGX6PuSE-DJlQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_s9fqUCXREeGX6PuSE-DJlQ" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="core.uml#_JqB6gD16Ed-Bk-AHd6yyoA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_s9fqUSXREeGX6PuSE-DJlQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ByUxN9YGEd-CgJIavLpOxQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ByUxONYGEd-CgJIavLpOxQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ByUxOdYGEd-CgJIavLpOxQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ByUxOtYGEd-CgJIavLpOxQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ByUxO9YGEd-CgJIavLpOxQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ByUxPNYGEd-CgJIavLpOxQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ByUxPdYGEd-CgJIavLpOxQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ByS8AdYGEd-CgJIavLpOxQ" x="99" y="108" width="190" height="145"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_D0xKENYGEd-CgJIavLpOxQ" type="2008" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_D0xxINYGEd-CgJIavLpOxQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D0xxIdYGEd-CgJIavLpOxQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_D0xxItYGEd-CgJIavLpOxQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D0xxI9YGEd-CgJIavLpOxQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_D0xxJNYGEd-CgJIavLpOxQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D0xxJdYGEd-CgJIavLpOxQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_D0xxJtYGEd-CgJIavLpOxQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_D0xxJ9YGEd-CgJIavLpOxQ" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_OSicECXVEeGX6PuSE-DJlQ" type="3012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l2kawFeJEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_v7LTQFeJEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Port" href="core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OSicESXVEeGX6PuSE-DJlQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_D0xxKNYGEd-CgJIavLpOxQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_D0xxKdYGEd-CgJIavLpOxQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D0xxKtYGEd-CgJIavLpOxQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_D0xxK9YGEd-CgJIavLpOxQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_D0xxLNYGEd-CgJIavLpOxQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_D0xxLdYGEd-CgJIavLpOxQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D0xxLtYGEd-CgJIavLpOxQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_D0xxL9YGEd-CgJIavLpOxQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_D0xxMNYGEd-CgJIavLpOxQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_D0xxMdYGEd-CgJIavLpOxQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D0xxMtYGEd-CgJIavLpOxQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D0xKEdYGEd-CgJIavLpOxQ" x="99" y="9" width="193" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EhiDELaaEeCj_-LEBuGpmA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EhiqILaaEeCj_-LEBuGpmA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EhiqIbaaEeCj_-LEBuGpmA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EhjRMLaaEeCj_-LEBuGpmA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EhjRMbaaEeCj_-LEBuGpmA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EhjRMraaEeCj_-LEBuGpmA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EhjRM7aaEeCj_-LEBuGpmA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EhjRNLaaEeCj_-LEBuGpmA" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_hGEOAMT8Ed-zx4a_r4xAYw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EhiDEbaaEeCj_-LEBuGpmA" x="325" y="13" width="343" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_elme8PQREeCovO8AYZymZQ" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_elnGAPQREeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_elnGAfQREeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_elntEPQREeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_elntEfQREeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_elntEvQREeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_elntE_QREeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_elntFPQREeCovO8AYZymZQ" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_elntFfQREeCovO8AYZymZQ" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_elntFvQREeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_elntF_QREeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_elntGPQREeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_elntGfQREeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_elntGvQREeCovO8AYZymZQ" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_f1SlMPQREeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rsca8FjnEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rvvmkFjnEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="core.uml#_f1HmEPQREeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f1SlMfQREeCovO8AYZymZQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_elntG_QREeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_elntHPQREeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_elntHfQREeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_elntHvQREeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eloUIPQREeCovO8AYZymZQ" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eloUIfQREeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eloUIvQREeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eloUI_QREeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eloUJPQREeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="core.uml#_elkpwPQREeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_elme8fQREeCovO8AYZymZQ" x="459" y="201" width="208" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_S9Kp8PQWEeCovO8AYZymZQ" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S9LRAPQWEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S9LRAfQWEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S9LRAvQWEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S9LRA_QWEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S9LRBPQWEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S9LRBfQWEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S9LRBvQWEeCovO8AYZymZQ" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S9LRB_QWEeCovO8AYZymZQ" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S9LRCPQWEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_S9LRCfQWEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_S9LRCvQWEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S9LRC_QWEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S9L4EPQWEeCovO8AYZymZQ" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_tK13wPQWEeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQYXUFjnEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uT-d4FjnEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="core.uml#_tK0poPQWEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tK13wfQWEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FBOeEPQXEeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="core.uml#_FBMo4PQXEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FBOeEfQXEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SaK_4CUREeGXBt65HZzY7g" type="3007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uQZlcFjnEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uT_E8FjnEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="core.uml#_f1HmEPQREeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SaK_4SUREeGXBt65HZzY7g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S9L4EfQWEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_S9L4EvQWEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_S9L4E_QWEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S9L4FPQWEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S9L4FfQWEeCovO8AYZymZQ" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S9L4FvQWEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_S9L4F_QWEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_S9L4GPQWEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S9L4GfQWEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="core.uml#_omxU4PNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S9Kp8fQWEeCovO8AYZymZQ" x="459" y="324" width="451" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DZTowCUREeGXBt65HZzY7g" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DZUP0SUREeGXBt65HZzY7g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DZUP0iUREeGXBt65HZzY7g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DZU24CUREeGXBt65HZzY7g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DZU24SUREeGXBt65HZzY7g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DZU24iUREeGXBt65HZzY7g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DZU24yUREeGXBt65HZzY7g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DZU25CUREeGXBt65HZzY7g" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DZU25SUREeGXBt65HZzY7g" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DZU25iUREeGXBt65HZzY7g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DZU25yUREeGXBt65HZzY7g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DZU26CUREeGXBt65HZzY7g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DZU26SUREeGXBt65HZzY7g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DZU26iUREeGXBt65HZzY7g" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_Et42ECUREeGXBt65HZzY7g" type="3007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rsdCAVjnEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rvw0sFjnEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="core.uml#_tK0poPQWEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Et42ESUREeGXBt65HZzY7g" x="58" y="3"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DZU26yUREeGXBt65HZzY7g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DZU27CUREeGXBt65HZzY7g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DZU27SUREeGXBt65HZzY7g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DZU27iUREeGXBt65HZzY7g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_DZU27yUREeGXBt65HZzY7g" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_DZU28CUREeGXBt65HZzY7g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_DZU28SUREeGXBt65HZzY7g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_DZU28iUREeGXBt65HZzY7g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DZU28yUREeGXBt65HZzY7g"/>
+ </children>
+ <element xmi:type="uml:Interface" href="core.uml#_DY2VwCUREeGXBt65HZzY7g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DZUP0CUREeGXBt65HZzY7g" x="702" y="201" width="208" height="79"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5MArECXQEeGX6PuSE-DJlQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5MBSICXQEeGX6PuSE-DJlQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5MBSISXQEeGX6PuSE-DJlQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5MBSIiXQEeGX6PuSE-DJlQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5MB5MCXQEeGX6PuSE-DJlQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5MB5MSXQEeGX6PuSE-DJlQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5MB5MiXQEeGX6PuSE-DJlQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5MB5MyXQEeGX6PuSE-DJlQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5MB5NCXQEeGX6PuSE-DJlQ" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5MB5NSXQEeGX6PuSE-DJlQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5MB5NiXQEeGX6PuSE-DJlQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5MB5NyXQEeGX6PuSE-DJlQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5MB5OCXQEeGX6PuSE-DJlQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5MCgQCXQEeGX6PuSE-DJlQ" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5MCgQSXQEeGX6PuSE-DJlQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5MCgQiXQEeGX6PuSE-DJlQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5MCgQyXQEeGX6PuSE-DJlQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5MCgRCXQEeGX6PuSE-DJlQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5MCgRSXQEeGX6PuSE-DJlQ" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5MCgRiXQEeGX6PuSE-DJlQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5MCgRyXQEeGX6PuSE-DJlQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5MCgSCXQEeGX6PuSE-DJlQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5MCgSSXQEeGX6PuSE-DJlQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_5J9coCXQEeGX6PuSE-DJlQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5MArESXQEeGX6PuSE-DJlQ" x="99" y="297" width="190" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_E3A5oCXREeGX6PuSE-DJlQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E3BgsCXREeGX6PuSE-DJlQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E3CHwCXREeGX6PuSE-DJlQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E3CHwSXREeGX6PuSE-DJlQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E3CHwiXREeGX6PuSE-DJlQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E3CHwyXREeGX6PuSE-DJlQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E3CHxCXREeGX6PuSE-DJlQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_E3CHxSXREeGX6PuSE-DJlQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_EuvHYCXREeGX6PuSE-DJlQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E3A5oSXREeGX6PuSE-DJlQ" x="81" y="378" width="235"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_OX-j4FaNEeKxltxu9uR4dg" type="2010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OYQ3wFaNEeKxltxu9uR4dg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OYQ3wVaNEeKxltxu9uR4dg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OYQ3wlaNEeKxltxu9uR4dg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OYRe0FaNEeKxltxu9uR4dg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OYRe0VaNEeKxltxu9uR4dg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OYRe0laNEeKxltxu9uR4dg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OYRe01aNEeKxltxu9uR4dg" type="5035"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OYRe1FaNEeKxltxu9uR4dg" type="7020">
+ <children xmi:type="notation:Shape" xmi:id="_RXTbwFaNEeKxltxu9uR4dg" type="3018" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_waMsEFaNEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_waNTIFaNEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_RW82cFaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RXTbwVaNEeKxltxu9uR4dg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OYRe1VaNEeKxltxu9uR4dg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OYRe1laNEeKxltxu9uR4dg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OYRe11aNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OYRe2FaNEeKxltxu9uR4dg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OYRe2VaNEeKxltxu9uR4dg" visible="false" type="7021">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OYRe2laNEeKxltxu9uR4dg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_OYRe21aNEeKxltxu9uR4dg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_OYRe3FaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OYRe3VaNEeKxltxu9uR4dg"/>
+ </children>
+ <element xmi:type="uml:DataType" href="core.uml#_OU5asFaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OX-j4VaNEeKxltxu9uR4dg" x="702" y="9" width="208" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Y9_gUFaNEeKxltxu9uR4dg" type="2010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y9_gUlaNEeKxltxu9uR4dg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y-AHYFaNEeKxltxu9uR4dg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y-AHYVaNEeKxltxu9uR4dg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y-AHYlaNEeKxltxu9uR4dg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y-AHY1aNEeKxltxu9uR4dg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Y-AHZFaNEeKxltxu9uR4dg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y-AHZVaNEeKxltxu9uR4dg" type="5035"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y-AHZlaNEeKxltxu9uR4dg" type="7020">
+ <children xmi:type="notation:Shape" xmi:id="_fYzAkFaNEeKxltxu9uR4dg" type="3018" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t76EsFaNEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uWGGUFaNEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_fYeQcFaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fYzAkVaNEeKxltxu9uR4dg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_oUoTIFaNEeKxltxu9uR4dg" type="3018" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vVH6YFaNEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vY61QFaNEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_oUVYMFaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oUoTIVaNEeKxltxu9uR4dg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xXc-gFaNEeKxltxu9uR4dg" type="3018" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1PtpgFaNEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1fyF0FaNEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_xXGZMFaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xXc-gVaNEeKxltxu9uR4dg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y-AHZ1aNEeKxltxu9uR4dg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y-AHaFaNEeKxltxu9uR4dg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y-AHaVaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y-AHalaNEeKxltxu9uR4dg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Y-AHa1aNEeKxltxu9uR4dg" visible="false" type="7021">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Y-AHbFaNEeKxltxu9uR4dg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Y-AHbVaNEeKxltxu9uR4dg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Y-AHblaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y-AHb1aNEeKxltxu9uR4dg"/>
+ </children>
+ <element xmi:type="uml:DataType" href="core.uml#_Y8dPQFaNEeKxltxu9uR4dg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y9_gUVaNEeKxltxu9uR4dg" x="702" y="90" width="208" height="91"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_A6ULIdYGEd-CgJIavLpOxQ"/>
+ <element xmi:type="uml:Package" href="core.uml#_xtlE8ARAEd--t-uhRn9OBA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_D1HvYNYGEd-CgJIavLpOxQ" type="4002" source="_ByS8ANYGEd-CgJIavLpOxQ" target="_D0xKENYGEd-CgJIavLpOxQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_D1IWcNYGEd-CgJIavLpOxQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_D1IWcdYGEd-CgJIavLpOxQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_D1HvYdYGEd-CgJIavLpOxQ" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_6bsEkARAEd--t-uhRn9OBA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D1HvYtYGEd-CgJIavLpOxQ" points="[-77, -75, 118, 115]$[-195, -190, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KuwaULaaEeCj_-LEBuGpmA" type="4013" source="_EhiDELaaEeCj_-LEBuGpmA" target="_ByS8ANYGEd-CgJIavLpOxQ" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_KuwaUbaaEeCj_-LEBuGpmA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KuwaUraaEeCj_-LEBuGpmA" points="[19, 44, 130, -8]$[19, 58, 130, 6]$[-95, 58, 16, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KvJb4LaaEeCj_-LEBuGpmA" id="(0.017988552739165987,0.6333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KvJb4baaEeCj_-LEBuGpmA" id="(0.917098445595855,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ffcCQPQXEeCovO8AYZymZQ" type="4002" source="_S9Kp8PQWEeCovO8AYZymZQ" target="_elme8PQREeCovO8AYZymZQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ffdQYPQXEeCovO8AYZymZQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ffdQYfQXEeCovO8AYZymZQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ffcCQfQXEeCovO8AYZymZQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_feaHgPQXEeCovO8AYZymZQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ffcCQvQXEeCovO8AYZymZQ" points="[-109, 14, 100, -14]$[-162, 10, 47, -18]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ffeegPQXEeCovO8AYZymZQ" id="(0.21507760532150777,0.12087912087912088)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ffeegfQXEeCovO8AYZymZQ" id="(0.507537688442211,0.95)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_GxXJsCUREeGXBt65HZzY7g" type="4002" source="_S9Kp8PQWEeCovO8AYZymZQ" target="_DZTowCUREeGXBt65HZzY7g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GxXwwCUREeGXBt65HZzY7g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GxXwwSUREeGXBt65HZzY7g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GxXJsSUREeGXBt65HZzY7g" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_GwxT0CUREeGXBt65HZzY7g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GxXJsiUREeGXBt65HZzY7g" points="[21, -3, 1, 53]$[21, -25, 1, 31]$[17, -25, -3, 31]$[17, -47, -3, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GzJSYCUREeGXBt65HZzY7g" id="(0.7228381374722838,0.03296703296703297)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GzJSYSUREeGXBt65HZzY7g" id="(0.5144230769230769,0.9620253164556962)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_9vKGICXQEeGX6PuSE-DJlQ" type="4002" source="_5MArECXQEeGX6PuSE-DJlQ" target="_ByS8ANYGEd-CgJIavLpOxQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_9vKtMCXQEeGX6PuSE-DJlQ" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9vLUQCXQEeGX6PuSE-DJlQ" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_9vKGISXQEeGX6PuSE-DJlQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_9thucCXQEeGX6PuSE-DJlQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9vKGIiXQEeGX6PuSE-DJlQ" points="[6, -10, 0, 41]$[8, -36, 2, 15]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9wimMCXQEeGX6PuSE-DJlQ" id="(0.5210526315789473,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9wimMSXQEeGX6PuSE-DJlQ" id="(0.5077720207253886,0.98)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jDnbICXREeGX6PuSE-DJlQ" type="4013" source="_E3A5oCXREeGX6PuSE-DJlQ" target="_5MArECXQEeGX6PuSE-DJlQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_jDnbISXREeGX6PuSE-DJlQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jDnbIiXREeGX6PuSE-DJlQ" points="[-18, 13, 101, -76]$[-107, 85, 12, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jFAiQCXREeGX6PuSE-DJlQ" id="(0.4595744680851064,0.2)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jFBJUCXREeGX6PuSE-DJlQ" id="(0.49473684210526314,0.8536585365853658)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_glyeMK8qEeCXIcykFPsB8Q" type="PapyrusUMLClassDiagram" name="Pkg. Template: methodCall_comp" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_iLyysK8qEeCXIcykFPsB8Q" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iL0A0K8qEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iL0n4K8qEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iL0n4a8qEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iL0n4q8qEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iL1O8K8qEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iL1O8a8qEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iL1O8q8qEeCXIcykFPsB8Q" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iL1O868qEeCXIcykFPsB8Q" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iL1O9K8qEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jkrRMK8qEeCXIcykFPsB8Q" type="3033" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jkr4QK8qEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jkr4Qa8qEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jkr4Qq8qEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jkr4Q68qEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jkr4RK8qEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jkr4Ra8qEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jksfUK8qEeCXIcykFPsB8Q" type="7038">
+ <children xmi:type="notation:Shape" xmi:id="_kvgFkK8qEeCXIcykFPsB8Q" type="3031" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="core.uml#_QBCTAOxJEd-2rr_yAeKkjQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kvgFka8qEeCXIcykFPsB8Q" x="22" y="8"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jksfUa8qEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jksfUq8qEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jksfU68qEeCXIcykFPsB8Q"/>
+ </children>
+ <element xmi:type="uml:TemplateSignature" href="core.uml#_ewC6kOxIEd-2rr_yAeKkjQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jkrRMa8qEeCXIcykFPsB8Q" x="30" y="8"/>
+ </children>
+ <element xmi:type="uml:Package" href="core.uml#_RPCMoOxIEd-2rr_yAeKkjQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iLyysa8qEeCXIcykFPsB8Q" x="90" y="234"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_q3ohcK8qEeCXIcykFPsB8Q" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q3pIgK8qEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3pvkK8qEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q3pvka8qEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3pvkq8qEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q3pvk68qEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3pvlK8qEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q3pvla8qEeCXIcykFPsB8Q" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_q1w5MK8qEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q3ohca8qEeCXIcykFPsB8Q" x="261" y="108" width="253"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_glyeMa8qEeCXIcykFPsB8Q"/>
+ <element xmi:type="uml:Package" href="core.uml#_RPCMoOxIEd-2rr_yAeKkjQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_xP-jkK8qEeCXIcykFPsB8Q" type="4013" source="_q3ohcK8qEeCXIcykFPsB8Q" target="_iLyysK8qEeCXIcykFPsB8Q" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_xP-jka8qEeCXIcykFPsB8Q" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xP-jkq8qEeCXIcykFPsB8Q" points="[-40, 30, 181, -116]$[-121, 140, 100, -6]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_DtdykK8rEeCXIcykFPsB8Q" type="PapyrusUMLClassDiagram" name="Pkg. Template: methodCall" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_NLTmAK8rEeCXIcykFPsB8Q" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NLUNEK8rEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NLUNEa8rEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NLUNEq8rEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NLUNE68rEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NLUNFK8rEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NLUNFa8rEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NLUNFq8rEeCXIcykFPsB8Q" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_NLUNF68rEeCXIcykFPsB8Q" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_TmKUIK8sEeCXIcykFPsB8Q" type="3009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TmK7MK8sEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TmK7Ma8sEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TmK7Mq8sEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TmLiQK8sEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TmLiQa8sEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TmLiQq8sEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TmLiQ68sEeCXIcykFPsB8Q" type="5017"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TmLiRK8sEeCXIcykFPsB8Q" type="7010">
+ <children xmi:type="notation:Shape" xmi:id="_V93yYK8sEeCXIcykFPsB8Q" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V95AgK8sEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V95Aga8sEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V95Agq8sEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V95Ag68sEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V95AhK8sEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V95Aha8sEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V95Ahq8sEeCXIcykFPsB8Q" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V95nkK8sEeCXIcykFPsB8Q" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V95nka8sEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V95nkq8sEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V95nk68sEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V95nlK8sEeCXIcykFPsB8Q" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V95nla8sEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V95nlq8sEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V95nl68sEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V95nmK8sEeCXIcykFPsB8Q" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_V95nma8sEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_V95nmq8sEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V95nm68sEeCXIcykFPsB8Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_KxQBELuXEd2TTr3gJIvazw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V94ZcK8sEeCXIcykFPsB8Q" x="16" y="10" height="43"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TmLiRa8sEeCXIcykFPsB8Q"/>
+ </children>
+ <element xmi:type="uml:Package" href="core.uml#_ZISNcIQzEd2_fLv04swWfw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TmKUIa8sEeCXIcykFPsB8Q" x="13" y="28" width="190"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UgOIoK8sEeCXIcykFPsB8Q" type="3009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UgOvsK8sEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UgOvsa8sEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UgOvsq8sEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UgOvs68sEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UgOvtK8sEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UgOvta8sEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UgOvtq8sEeCXIcykFPsB8Q" type="5017"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UgOvt68sEeCXIcykFPsB8Q" type="7010">
+ <children xmi:type="notation:Shape" xmi:id="_bgjX0K8sEeCXIcykFPsB8Q" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bgj-4K8sEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bgj-4a8sEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bgj-4q8sEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bgj-468sEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bgkl8K8sEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bgkl8a8sEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bgkl8q8sEeCXIcykFPsB8Q" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bgkl868sEeCXIcykFPsB8Q" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bgkl9K8sEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bgkl9a8sEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bgkl9q8sEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bgkl968sEeCXIcykFPsB8Q" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bgkl-K8sEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bgkl-a8sEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bgkl-q8sEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_bgkl-68sEeCXIcykFPsB8Q" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bgkl_K8sEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bgkl_a8sEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bgkl_q8sEeCXIcykFPsB8Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_Zx2ZUA1jEd6tvthBDl600Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bgjX0a8sEeCXIcykFPsB8Q" x="15" y="7" height="51"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UgOvuK8sEeCXIcykFPsB8Q" x="48" y="4" width="200" height="80"/>
+ </children>
+ <element xmi:type="uml:Package" href="core.uml#_RjvvcA1jEd6tvthBDl600Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UgOIoa8sEeCXIcykFPsB8Q" x="229" y="28" width="190"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NLUNGK8rEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_q9rCkK8rEeCXIcykFPsB8Q" type="3033" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9rpoK8rEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9sQsK8rEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9sQsa8rEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9sQsq8rEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q9sQs68rEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q9sQtK8rEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_q9sQta8rEeCXIcykFPsB8Q" type="7038">
+ <children xmi:type="notation:Shape" xmi:id="_ryntkK8rEeCXIcykFPsB8Q" type="3031" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="core.uml#_WzWVUPfBEd2TbIfwytOyPA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ryntka8rEeCXIcykFPsB8Q" x="15" y="10"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_q9sQtq8rEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_q9sQt68rEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9sQuK8rEeCXIcykFPsB8Q"/>
+ </children>
+ <element xmi:type="uml:TemplateSignature" href="core.uml#_V0b2APfBEd2TbIfwytOyPA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_q9rCka8rEeCXIcykFPsB8Q" x="40" y="10"/>
+ </children>
+ <element xmi:type="uml:Package" href="core.uml#_mMCK8PiPEd2UhpY2Y3WUyg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NLTmAa8rEeCXIcykFPsB8Q" x="90" y="108" width="451" height="181"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Wi948K8rEeCXIcykFPsB8Q" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wi948q8rEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wi-gAK8rEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wi-gAa8rEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wi-gAq8rEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wi-gA68rEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wi-gBK8rEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wi-gBa8rEeCXIcykFPsB8Q" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_WiuBUK8rEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wi948a8rEeCXIcykFPsB8Q" x="594" y="180" width="253"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Dtdyka8rEeCXIcykFPsB8Q"/>
+ <element xmi:type="uml:Package" href="core.uml#_mMCK8PiPEd2UhpY2Y3WUyg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Xu0BAK8rEeCXIcykFPsB8Q" type="4013" source="_Wi948K8rEeCXIcykFPsB8Q" target="_NLTmAK8rEeCXIcykFPsB8Q" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Xu0BAa8rEeCXIcykFPsB8Q" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Xu0BAq8rEeCXIcykFPsB8Q" points="[-50, 10, 224, -38]$[-174, 51, 100, 3]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tBbDAK8rEeCXIcykFPsB8Q" id="(0.755,0.72)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_PIvc4LabEeCj_-LEBuGpmA" type="CompositeStructure" name="StdPorts" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_PlQZwLabEeCj_-LEBuGpmA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PlRA0LabEeCj_-LEBuGpmA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PlRA0babEeCj_-LEBuGpmA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PlRn4LabEeCj_-LEBuGpmA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PlRn4babEeCj_-LEBuGpmA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PlRn4rabEeCj_-LEBuGpmA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PlRn47abEeCj_-LEBuGpmA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PlSO8LabEeCj_-LEBuGpmA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PlSO8babEeCj_-LEBuGpmA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PlSO8rabEeCj_-LEBuGpmA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UfT48LabEeCj_-LEBuGpmA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfUgALabEeCj_-LEBuGpmA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfUgAbabEeCj_-LEBuGpmA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfUgArabEeCj_-LEBuGpmA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfUgA7abEeCj_-LEBuGpmA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfVHELabEeCj_-LEBuGpmA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfVHEbabEeCj_-LEBuGpmA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8J5rUDrTEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8gAeMDrTEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8gAeMTrTEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8gAeMjrTEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8gAeMzrTEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8gAeNDrTEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfVHErabEeCj_-LEBuGpmA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfVHE7abEeCj_-LEBuGpmA" x="-116" y="-4"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfVHFLabEeCj_-LEBuGpmA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfVHFbabEeCj_-LEBuGpmA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfT48babEeCj_-LEBuGpmA" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PlQZwbabEeCj_-LEBuGpmA" x="144" y="72" width="163" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QHPsgLabEeCj_-LEBuGpmA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHQTkLabEeCj_-LEBuGpmA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHQTkbabEeCj_-LEBuGpmA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHQ6oLabEeCj_-LEBuGpmA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHQ6obabEeCj_-LEBuGpmA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QHQ6orabEeCj_-LEBuGpmA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QHQ6o7abEeCj_-LEBuGpmA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QHQ6pLabEeCj_-LEBuGpmA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QHRhsLabEeCj_-LEBuGpmA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHRhsbabEeCj_-LEBuGpmA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_atcPILabEeCj_-LEBuGpmA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_atc2MLabEeCj_-LEBuGpmA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_atc2MbabEeCj_-LEBuGpmA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_atc2MrabEeCj_-LEBuGpmA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_atc2M7abEeCj_-LEBuGpmA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_atc2NLabEeCj_-LEBuGpmA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_atc2NbabEeCj_-LEBuGpmA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9T6nYDrTEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9l5IMDrTEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9l5vQDrTEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9l5vQTrTEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9l5vQjrTEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9l6WUDrTEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_atc2NrabEeCj_-LEBuGpmA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_atc2N7abEeCj_-LEBuGpmA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_atddQLabEeCj_-LEBuGpmA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_atddQbabEeCj_-LEBuGpmA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_atcPIbabEeCj_-LEBuGpmA" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QHPsgbabEeCj_-LEBuGpmA" x="144" y="180" width="163" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SOUtwLabEeCj_-LEBuGpmA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOVU0LabEeCj_-LEBuGpmA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOVU0babEeCj_-LEBuGpmA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOV74LabEeCj_-LEBuGpmA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOV74babEeCj_-LEBuGpmA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SOV74rabEeCj_-LEBuGpmA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SOV747abEeCj_-LEBuGpmA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SOV75LabEeCj_-LEBuGpmA" type="5192"/>
+ <element xmi:type="uml:Comment" href="core.uml#_OcN78Nt2Ed6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SOUtwbabEeCj_-LEBuGpmA" x="378" y="72" width="235"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_PIvc4babEeCj_-LEBuGpmA"/>
+ <element xmi:type="uml:Package" href="core.uml#_HmnpEJsrEd61Eo3nmu3JhQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_SOtIQLabEeCj_-LEBuGpmA" type="4002" source="_SOUtwLabEeCj_-LEBuGpmA" target="_PlQZwLabEeCj_-LEBuGpmA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_SOtvULabEeCj_-LEBuGpmA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SOtvUbabEeCj_-LEBuGpmA" points="[0, 0, -129, -109]$[108, 90, -21, -19]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_0IaT8LnYEeCxXoyQxQ47PQ" type="PapyrusUMLClassDiagram" name="PortKinds" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_09vZcLnYEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_09wAgLnYEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_09wAgbnYEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_09wAgrnYEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_09wAg7nYEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_09wAhLnYEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_09wAhbnYEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fi4z8DrUEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RtrcIELzEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RtrcIULzEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::PortKind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RtrcIkLzEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RtrcI0LzEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RtrcJELzEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_09wAhrnYEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_09wAh7nYEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_09wnkLnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_09wnkbnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_09wnkrnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_09wnk7nYEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_09wnlLnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_09wnlbnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_09wnlrnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_09wnl7nYEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_09wnmLnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_09wnmbnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_09wnmrnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="core.uml#_Wtq4sFDlEd6cwecVIgl9nw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_09vZcbnYEeCxXoyQxQ47PQ" x="54" y="28" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0-EJkLnYEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-EwoLnYEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-EwobnYEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-EwornYEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-Ewo7nYEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-EwpLnYEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-EwpbnYEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_agfdADrZEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TPVcIELzEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TPWDMELzEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::PortKind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TPWDMULzEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TPWDMkLzEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TPWDM0LzEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0-EwprnYEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-Ewp7nYEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-EwqLnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-EwqbnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-EwqrnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-Ewq7nYEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-EwrLnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-EwrbnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-EwrrnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-FXsLnYEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-FXsbnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-FXsrnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-FXs7nYEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="core.uml#_Wtq4sVDlEd6cwecVIgl9nw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-EJkbnYEeCxXoyQxQ47PQ" x="54" y="351" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0-XrkLnYEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-XrkrnYEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-Xrk7nYEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-XrlLnYEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-YSoLnYEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-YSobnYEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-YSornYEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XkzH8DrZEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_14Z-YELyEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_14Z-YULyEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::PortKind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_14Z-YkLyEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_14Z-Y0LyEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_14Z-ZELyEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0-YSo7nYEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-YSpLnYEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-YSpbnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-YSprnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-YSp7nYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-YSqLnYEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-YSqbnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-YSqrnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-YSq7nYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-YSrLnYEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-YSrbnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-YSrrnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-YSr7nYEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="core.uml#_Wtq4slDlEd6cwecVIgl9nw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-XrkbnYEeCxXoyQxQ47PQ" x="54" y="297" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0-rNkLnYEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-r0oLnYEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-r0obnYEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-sbsLnYEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-sbsbnYEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Vy3QQDrZEeGgAdAmWw4pyQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vy3QQTrZEeGgAdAmWw4pyQ" key="QualifiedNameDepth" value="2"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WQzJcDrZEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3ew4MELyEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3ew4MULyEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::PortKind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3ew4MkLyEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3exfQELyEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3exfQULyEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0-sbtLnYEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-sbtbnYEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-sbtrnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-sbt7nYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-sbuLnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-sbubnYEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-sburnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-sbu7nYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-sbvLnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0-sbvbnYEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0-sbvrnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0-sbv7nYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-sbwLnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="core.uml#_WtrfwlDlEd6cwecVIgl9nw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-rNkbnYEeCxXoyQxQ47PQ" x="54" y="243" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0-9hcLnYEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0-9hcrnYEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0-9hc7nYEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0--IgLnYEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0--IgbnYEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0--IgrnYEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0--Ig7nYEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qp1g8DrZEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RBtG8ELzEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RBtuAELzEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::PortKind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RBtuAULzEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RBtuAkLzEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RBtuA0LzEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0--IhLnYEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0--IhbnYEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0--IhrnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0--Ih7nYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0--IiLnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0--IibnYEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0--IirnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0--Ii7nYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0--IjLnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0--IjbnYEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0--IjrnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0--Ij7nYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0--IkLnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="core.uml#_Wtrfw1DlEd6cwecVIgl9nw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0-9hcbnYEeCxXoyQxQ47PQ" x="54" y="81" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0_OnMLnYEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_POQLnYEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_POQbnYEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_POQrnYEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_POQ7nYEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_PORLnYEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_PORbnYEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SXn4cDrZEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Nq_p0ELzEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Nq_p0ULzEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::PortKind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Nq_p0kLzEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NrAQ4ELzEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NrAQ4ULzEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0_PORrnYEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0_POR7nYEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0_POSLnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0_POSbnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_POSrnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0_P1ULnYEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0_P1UbnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0_P1UrnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_P1U7nYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0_P1VLnYEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0_P1VbnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0_P1VrnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_P1V7nYEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="core.uml#__nMrwLqNEd-SedGzMDDkww"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_OnMbnYEeCxXoyQxQ47PQ" x="54" y="135" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0_j-YLnYEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_klcLnYEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_klcbnYEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_lMgLnYEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_lMgbnYEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0_lMgrnYEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0_lMg7nYEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uc_pgDrZEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TA9QMENnEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TA9QMUNnEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::PortKind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TA9QMkNnEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TA9QM0NnEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TA93QENnEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0_lMhLnYEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0_lMhbnYEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0_lMhrnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0_lMh7nYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_lMiLnYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0_lzkLnYEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0_lzkbnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0_lzkrnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_lzk7nYEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_0_lzlLnYEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0_lzlbnYEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0_lzlrnYEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_lzl7nYEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="core.uml#_AQZZwLqOEd-SedGzMDDkww"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0_j-YbnYEeCxXoyQxQ47PQ" x="54" y="189" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Fw1jMLnZEeCxXoyQxQ47PQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fw3YYLnZEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fw3YYbnZEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fw3YYrnZEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fw3YY7nZEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fw3YZLnZEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fw3YZbnZEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Fw3YZrnZEeCxXoyQxQ47PQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_FryEELnZEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Fw1jMbnZEeCxXoyQxQ47PQ" x="252" y="24" width="469" height="40"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_K19p8LnZEeCxXoyQxQ47PQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_K1-RALnZEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K1-RAbnZEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_K1-RArnZEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K1-4ELnZEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_K1-4EbnZEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K1-4ErnZEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_K1-4E7nZEeCxXoyQxQ47PQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_K17NsLnZEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K19p8bnZEeCxXoyQxQ47PQ" x="252" y="83" width="469" height="35"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Px1uELnZEeCxXoyQxQ47PQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Px2VILnZEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Px2VIbnZEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Px2VIrnZEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Px28MLnZEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Px28MbnZEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Px28MrnZEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Px28M7nZEeCxXoyQxQ47PQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_PxzR0LnZEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Px1uEbnZEeCxXoyQxQ47PQ" x="252" y="136" width="469" height="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_l4_LYLnZEeCxXoyQxQ47PQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l4_LYbnZEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l4_LYrnZEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l4_LY7nZEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l4_LZLnZEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l4_LZbnZEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l4_LZrnZEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_l4_LZ7nZEeCxXoyQxQ47PQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_l49WMLnZEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l4_LaLnZEeCxXoyQxQ47PQ" x="252" y="189" width="469" height="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2dxzYLnZEeCxXoyQxQ47PQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2dyacLnZEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2dyacbnZEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2dyacrnZEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2dyac7nZEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2dyadLnZEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2dyadbnZEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2dzBgLnZEeCxXoyQxQ47PQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_2dvXILnZEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2dxzYbnZEeCxXoyQxQ47PQ" x="253" y="297" width="468" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FMviMLnaEeCxXoyQxQ47PQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FMviMbnaEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FMviMrnaEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FMviM7naEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FMviNLnaEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FMviNbnaEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FMviNrnaEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FMviN7naEeCxXoyQxQ47PQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_FMuUELnaEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FMviOLnaEeCxXoyQxQ47PQ" x="252" y="243" width="468" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Ggu5oLnaEeCxXoyQxQ47PQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ggu5obnaEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ggu5ornaEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ggu5o7naEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ggu5pLnaEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ggu5pbnaEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ggu5prnaEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ggu5p7naEeCxXoyQxQ47PQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_GgtrgLnaEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ggu5qLnaEeCxXoyQxQ47PQ" x="252" y="351" width="468" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-bqrQDiyEeGiupyIkgMHVw" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-bsgcDiyEeGiupyIkgMHVw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-bsgcTiyEeGiupyIkgMHVw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-bsgcjiyEeGiupyIkgMHVw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-bsgcziyEeGiupyIkgMHVw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-bsgdDiyEeGiupyIkgMHVw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-bsgdTiyEeGiupyIkgMHVw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-btHgDiyEeGiupyIkgMHVw" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_-UGDoDiyEeGiupyIkgMHVw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bqrQTiyEeGiupyIkgMHVw" x="18" y="459" width="595" height="28"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GkKYAC8qEeKx7OxAiA06uw" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GkM0QC8qEeKx7OxAiA06uw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GkM0QS8qEeKx7OxAiA06uw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GkNbUC8qEeKx7OxAiA06uw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GkNbUS8qEeKx7OxAiA06uw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GkNbUi8qEeKx7OxAiA06uw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GkNbUy8qEeKx7OxAiA06uw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_St0RcC8qEeKx7OxAiA06uw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1wMYEMLEeKGIL695HkFYQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1wMYUMLEeKGIL695HkFYQ" key="StereotypeList" value="FCM::PortKind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1wMYkMLEeKGIL695HkFYQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1wMY0MLEeKGIL695HkFYQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__1wMZEMLEeKGIL695HkFYQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GkNbVC8qEeKx7OxAiA06uw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GkOCYC8qEeKx7OxAiA06uw" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GkOCYS8qEeKx7OxAiA06uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GkOCYi8qEeKx7OxAiA06uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GkOCYy8qEeKx7OxAiA06uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GkOCZC8qEeKx7OxAiA06uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GkOCZS8qEeKx7OxAiA06uw" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GkOCZi8qEeKx7OxAiA06uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GkOCZy8qEeKx7OxAiA06uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GkOCaC8qEeKx7OxAiA06uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GkOCaS8qEeKx7OxAiA06uw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_GkOCai8qEeKx7OxAiA06uw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GkOCay8qEeKx7OxAiA06uw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GkOCbC8qEeKx7OxAiA06uw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GkOCbS8qEeKx7OxAiA06uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GkOCbi8qEeKx7OxAiA06uw"/>
+ </children>
+ <element xmi:type="uml:Stereotype" href="core.uml#_GjnlcC8qEeKx7OxAiA06uw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GkK_EC8qEeKx7OxAiA06uw" x="54" y="405" width="127" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CQkpAEMMEeKGIL695HkFYQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CQoTYEMMEeKGIL695HkFYQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CQo6cEMMEeKGIL695HkFYQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CQo6cUMMEeKGIL695HkFYQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CQo6ckMMEeKGIL695HkFYQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CQo6c0MMEeKGIL695HkFYQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CQphgEMMEeKGIL695HkFYQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CQphgUMMEeKGIL695HkFYQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="core.uml#_COvdAEMMEeKGIL695HkFYQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CQkpAUMMEeKGIL695HkFYQ" x="252" y="405" width="469" height="37"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_0IaT8bnYEeCxXoyQxQ47PQ"/>
+ <element xmi:type="uml:Package" href="core.uml#_QwvnQFDlEd6cwecVIgl9nw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_jEPL0LnZEeCxXoyQxQ47PQ" type="4013" source="_Fw1jMLnZEeCxXoyQxQ47PQ" target="_09vZcLnYEeCxXoyQxQ47PQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_jEPy4LnZEeCxXoyQxQ47PQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jEPy4bnZEeCxXoyQxQ47PQ" points="[-4, 1, 86, 0]$[-87, 0, 3, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jES2MLnZEeCxXoyQxQ47PQ" id="(0.012084592145015106,0.525)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jES2MbnZEeCxXoyQxQ47PQ" id="(0.9724770642201835,0.4864864864864865)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ju3dMLnZEeCxXoyQxQ47PQ" type="4013" source="_K19p8LnZEeCxXoyQxQ47PQ" target="_0-9hcLnYEeCxXoyQxQ47PQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ju3dMbnZEeCxXoyQxQ47PQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ju3dMrnZEeCxXoyQxQ47PQ" points="[-5, 0, 137, 2]$[-87, 0, 55, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ju7uoLnZEeCxXoyQxQ47PQ" id="(0.015060240963855422,0.5142857142857142)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_kSsjALnZEeCxXoyQxQ47PQ" type="4013" source="_Px1uELnZEeCxXoyQxQ47PQ" target="_0_OnMLnYEeCxXoyQxQ47PQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kSsjAbnZEeCxXoyQxQ47PQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kSsjArnZEeCxXoyQxQ47PQ" points="[-13, 6, 136, 5]$[-94, 6, 55, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kSyCkLnZEeCxXoyQxQ47PQ" id="(0.03903903903903904,0.42105263157894735)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_pgZ-ALnZEeCxXoyQxQ47PQ" type="4013" source="_l4_LYLnZEeCxXoyQxQ47PQ" target="_0_j-YLnYEeCxXoyQxQ47PQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_pgZ-AbnZEeCxXoyQxQ47PQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pgZ-ArnZEeCxXoyQxQ47PQ" points="[-4, 2, 106, 0]$[-93, 1, 17, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pge2gLnZEeCxXoyQxQ47PQ" id="(0.012012012012012012,0.39473684210526316)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pge2gbnZEeCxXoyQxQ47PQ" id="(0.8440366972477065,0.4594594594594595)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_MhrIYLnaEeCxXoyQxQ47PQ" type="4013" source="_2dxzYLnZEeCxXoyQxQ47PQ" target="_0-XrkLnYEeCxXoyQxQ47PQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_MhrIYbnaEeCxXoyQxQ47PQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MhrIYrnaEeCxXoyQxQ47PQ" points="[-9, -1, 113, 0]$[-99, -1, 23, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MhuywLnaEeCxXoyQxQ47PQ" id="(0.00641025641025641,0.5405405405405406)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MhuywbnaEeCxXoyQxQ47PQ" id="(0.963302752293578,0.5135135135135135)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NJn5MLnaEeCxXoyQxQ47PQ" type="4013" source="_FMviMLnaEeCxXoyQxQ47PQ" target="_0-rNkLnYEeCxXoyQxQ47PQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NJn5MbnaEeCxXoyQxQ47PQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NJn5MrnaEeCxXoyQxQ47PQ" points="[-20, -1, 144, 5]$[-109, -1, 55, 5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NJq8gLnaEeCxXoyQxQ47PQ" id="(0.042735042735042736,0.47058823529411764)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NplLoLnaEeCxXoyQxQ47PQ" type="4013" source="_Ggu5oLnaEeCxXoyQxQ47PQ" target="_0-EJkLnYEeCxXoyQxQ47PQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NplLobnaEeCxXoyQxQ47PQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NplLornaEeCxXoyQxQ47PQ" points="[-7, -6, 106, 0]$[-96, -7, 17, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NppdELnaEeCxXoyQxQ47PQ" id="(0.014957264957264958,0.45098039215686275)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NppdEbnaEeCxXoyQxQ47PQ" id="(0.8440366972477065,0.4594594594594595)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_McYVsEMMEeKGIL695HkFYQ" type="4013" source="_CQkpAEMMEeKGIL695HkFYQ" target="_GkKYAC8qEeKx7OxAiA06uw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_McYVsUMMEeKGIL695HkFYQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_McYVskMMEeKGIL695HkFYQ" points="[-3, 0, 115, 0]$[-92, 0, 26, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Mcj74EMMEeKGIL695HkFYQ" id="(0.006396588486140725,0.35714285714285715)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Mcj74UMMEeKGIL695HkFYQ" id="(0.7614678899082569,0.5135135135135135)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_SstwYPEnEeCIafpoJVk7CQ" type="CompositeStructure" name="ContainerRules" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_V3-LcPEnEeCIafpoJVk7CQ" type="2073" fontName="Arial" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V4AnsPEnEeCIafpoJVk7CQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V4AnsfEnEeCIafpoJVk7CQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V4AnsvEnEeCIafpoJVk7CQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V4Ans_EnEeCIafpoJVk7CQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V4BOwPEnEeCIafpoJVk7CQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V4BOwfEnEeCIafpoJVk7CQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HPEWAPQUEeCovO8AYZymZQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HPEWAfQUEeCovO8AYZymZQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HPE9EPQUEeCovO8AYZymZQ" key="StereotypeList" value="FCM::ContainerRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HPE9EfQUEeCovO8AYZymZQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HPE9EvQUEeCovO8AYZymZQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HPE9E_QUEeCovO8AYZymZQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_V4BOwvEnEeCIafpoJVk7CQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_V4BOw_EnEeCIafpoJVk7CQ" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_mxqE4PTWEeCn1-FCrfecFg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mxrTAPTWEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mxr6EPTWEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mxr6EfTWEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mxr6EvTWEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mxr6E_TWEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mxr6FPTWEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qmq1AAJzEeG0Lb1KYG16fA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qmrcEAJzEeG0Lb1KYG16fA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qmrcEQJzEeG0Lb1KYG16fA" key="StereotypeList" value="FCM::InterceptionRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qmrcEgJzEeG0Lb1KYG16fA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qmrcEwJzEeG0Lb1KYG16fA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qmrcFAJzEeG0Lb1KYG16fA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mxr6FfTWEeCn1-FCrfecFg" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RtvSsFjmEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RzCCYFjmEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mxshIPTWEeCn1-FCrfecFg" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mxshIfTWEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mxshIvTWEeCn1-FCrfecFg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_y3lU4PTWEeCn1-FCrfecFg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y3mjAPTWEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y3nKEPTWEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y3nKEfTWEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y3nKEvTWEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y3nKE_TWEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y3nKFPTWEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WiNb0DrUEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XNgbkDrUEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XNgbkTrUEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XNhCoDrUEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XNhCoTrUEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XNhCojrUEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y3nKFfTWEeCn1-FCrfecFg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QlkJsFjmEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QplHAFjmEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y3nxIPTWEeCn1-FCrfecFg" x="-90" y="38"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y3nxIfTWEeCn1-FCrfecFg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y3nxIvTWEeCn1-FCrfecFg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_ZjdOAP-EEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y3lU4fTWEeCn1-FCrfecFg" x="189" y="7"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_y3oYMPTWEeCn1-FCrfecFg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y3pmUPTWEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y3pmUfTWEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y3pmUvTWEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y3pmU_TWEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y3pmVPTWEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y3qNYPTWEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VXcR0DrUEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vt_woDrUEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vt_woTrUEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vt_wojrUEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VuAXsDrUEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VuAXsTrUEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y3qNYfTWEeCn1-FCrfecFg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QEIQkFjmEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QK0HYFjmEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y3qNYvTWEeCn1-FCrfecFg" x="-17" y="-34"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y3qNY_TWEeCn1-FCrfecFg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_y3qNZPTWEeCn1-FCrfecFg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y3o_QPTWEeCn1-FCrfecFg" x="-10" y="7"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#_mvN04PTWEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mxqE4fTWEeCn1-FCrfecFg" x="31" y="31" width="199" height="37"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_V4BOxPEnEeCIafpoJVk7CQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V4BOxfEnEeCIafpoJVk7CQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_14WtMARJEd--t-uhRn9OBA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V3-LcfEnEeCIafpoJVk7CQ" x="72" y="36" width="262" height="145"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_W2m98PEnEeCIafpoJVk7CQ" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_W2nlAPEnEeCIafpoJVk7CQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_W2nlAfEnEeCIafpoJVk7CQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_W2nlAvEnEeCIafpoJVk7CQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_W2nlA_EnEeCIafpoJVk7CQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_W2nlBPEnEeCIafpoJVk7CQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_W2nlBfEnEeCIafpoJVk7CQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_W2oMEPEnEeCIafpoJVk7CQ" type="5192"/>
+ <element xmi:type="uml:Comment" href="core.uml#_q-kFUMTJEd-cLazKlAeYsQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_W2m98fEnEeCIafpoJVk7CQ" x="378" y="54" width="429"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_HDAUACjaEeGFbebITJYb9g" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HDA7ECjaEeGFbebITJYb9g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HDA7ESjaEeGFbebITJYb9g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HDA7EijaEeGFbebITJYb9g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HDA7EyjaEeGFbebITJYb9g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HDA7FCjaEeGFbebITJYb9g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HDA7FSjaEeGFbebITJYb9g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MUh4ACjaEeGFbebITJYb9g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUh4ASjaEeGFbebITJYb9g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUh4AijaEeGFbebITJYb9g" key="StereotypeList" value="FCM::ContainerRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUh4AyjaEeGFbebITJYb9g" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUh4BCjaEeGFbebITJYb9g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MUh4BSjaEeGFbebITJYb9g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HDA7FijaEeGFbebITJYb9g" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HDA7FyjaEeGFbebITJYb9g" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_JWCGkCjaEeGFbebITJYb9g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JWCtoCjaEeGFbebITJYb9g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JWCtoSjaEeGFbebITJYb9g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JWCtoijaEeGFbebITJYb9g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JWCtoyjaEeGFbebITJYb9g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JWCtpCjaEeGFbebITJYb9g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JWCtpSjaEeGFbebITJYb9g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JWCtpijaEeGFbebITJYb9g" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PdThIFjmEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PlvrcFjmEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JWCtpyjaEeGFbebITJYb9g" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JWCtqCjaEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JWCtqSjaEeGFbebITJYb9g"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#_6yVMkCjZEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JWCGkSjaEeGFbebITJYb9g" x="10" y="10" width="156"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_HDA7GCjaEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HDA7GSjaEeGFbebITJYb9g"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_1sCBICjZEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HDAUASjaEeGFbebITJYb9g" x="72" y="252" width="261" height="101"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_H0i7YDbgEeGdqp2YT1LwWw" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H0jicDbgEeGdqp2YT1LwWw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0jicTbgEeGdqp2YT1LwWw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H0jicjbgEeGdqp2YT1LwWw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0jiczbgEeGdqp2YT1LwWw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H0jidDbgEeGdqp2YT1LwWw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H0jidTbgEeGdqp2YT1LwWw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H0jidjbgEeGdqp2YT1LwWw" type="5192"/>
+ <element xmi:type="uml:Comment" href="core.uml#_H0IrsDbgEeGdqp2YT1LwWw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H0i7YTbgEeGdqp2YT1LwWw" x="378" y="261" width="217"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_SstwYfEnEeCIafpoJVk7CQ"/>
+ <element xmi:type="uml:Package" href="core.uml#_y4qB4ARJEd--t-uhRn9OBA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_YjbFEPEnEeCIafpoJVk7CQ" type="4002" source="_W2m98PEnEeCIafpoJVk7CQ" target="_V3-LcPEnEeCIafpoJVk7CQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_YjbFEfEnEeCIafpoJVk7CQ" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YjbFEvEnEeCIafpoJVk7CQ" points="[-11, -4, 128, 36]$[-126, -42, 13, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YjcTMPEnEeCIafpoJVk7CQ" id="(0.01,0.38333333333333336)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YjcTMfEnEeCIafpoJVk7CQ" id="(0.8602150537634409,0.45)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NK3f0DbgEeGdqp2YT1LwWw" type="4002" source="_H0i7YDbgEeGdqp2YT1LwWw" target="_HDAUACjaEeGFbebITJYb9g" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NK3f0TbgEeGdqp2YT1LwWw" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NK3f0jbgEeGdqp2YT1LwWw" points="[-18, 3, 77, 0]$[-63, 2, 32, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NLz7ADbgEeGdqp2YT1LwWw" id="(0.08294930875576037,0.6)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NL0iEDbgEeGdqp2YT1LwWw" id="(0.8773946360153256,0.4752475247524752)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_eblvwPM_EeCovO8AYZymZQ" type="CompositeStructure" name="Composite: ContainerServices " measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_JRsvcPNAEeCovO8AYZymZQ" type="2073" fontName="" fontHeight="10" fillColor="8047085" transparency="50" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JRtWgPNAEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JRtWgfNAEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JRtWgvNAEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JRtWg_NAEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JRtWhPNAEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JRtWhfNAEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JRtWhvNAEeCovO8AYZymZQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JRtWh_NAEeCovO8AYZymZQ" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_k-Qe0PN8EeCovO8AYZymZQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-RF4PN8EeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-RF4fN8EeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-RF4vN8EeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-RF4_N8EeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_k-RF5PN8EeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k-RF5fN8EeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_k-RF5vN8EeCovO8AYZymZQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iWRp4FaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ivBhEFaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_k-Rs8PN8EeCovO8AYZymZQ" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k-Rs8fN8EeCovO8AYZymZQ" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-Rs8vN8EeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#_k-OpoPN8EeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k-Qe0fN8EeCovO8AYZymZQ" x="24" y="41" width="165" height="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__a22APQXEeCovO8AYZymZQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__a3dEPQXEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__a4EIPQXEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__a4EIfQXEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__a4EIvQXEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__a4EI_QXEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__a4EJPQXEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__a4EJfQXEeCovO8AYZymZQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fzb5sFaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gCiFoFaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__a4EJvQXEeCovO8AYZymZQ" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__a4EJ_QXEeCovO8AYZymZQ" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__a4EKPQXEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#__a1A0PQXEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__a22AfQXEeCovO8AYZymZQ" x="24" y="5" width="165" height="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KnUHYPQYEeCovO8AYZymZQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KnUHYvQYEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KnUHY_QYEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KnUucPQYEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KnUucfQYEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KnUucvQYEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KnUuc_QYEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KnUudPQYEeCovO8AYZymZQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hLhG8FaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hSXV0FaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KnUudfQYEeCovO8AYZymZQ" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_KnUudvQYEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KnUud_QYEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#_KnS5QPQYEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KnUHYfQYEeCovO8AYZymZQ" x="24" y="83" width="165" height="23"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JRtWiPNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JRtWifNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_M0b2YPNAEeCovO8AYZymZQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M0cdcPNAEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0cdcfNAEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M0cdcvNAEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0cdc_NAEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M0dEgPNAEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0dEgfNAEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZohFcDrUEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMU9IDrUEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMVkMDrUEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMVkMTrUEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMVkMjrUEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMVkMzrUEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_M0dEgvNAEeCovO8AYZymZQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dBgkoFaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dM7xgFaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_M0dEg_NAEeCovO8AYZymZQ" x="-134" y="-15"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_M0dEhPNAEeCovO8AYZymZQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_M0dEhfNAEeCovO8AYZymZQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_MzO8gPNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M0b2YfNAEeCovO8AYZymZQ" x="-10" y="60" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_JRmo0PNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JRsvcfNAEeCovO8AYZymZQ" x="171" y="32" width="212" height="159"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9dH0UCjYEeGFbebITJYb9g" type="2073" fontName="" fontHeight="10" fillColor="8047085" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dIbYCjYEeGFbebITJYb9g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dIbYSjYEeGFbebITJYb9g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dIbYijYEeGFbebITJYb9g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dIbYyjYEeGFbebITJYb9g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9dIbZCjYEeGFbebITJYb9g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9dIbZSjYEeGFbebITJYb9g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lTZl0CjZEeGFbebITJYb9g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4p4K4M0zEeGV96JAv8cWdw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4p4x8M0zEeGV96JAv8cWdw" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4p4x8c0zEeGV96JAv8cWdw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4p4x8s0zEeGV96JAv8cWdw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4p4x880zEeGV96JAv8cWdw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9dJCcCjYEeGFbebITJYb9g" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9dJCcSjYEeGFbebITJYb9g" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_9dJCcijYEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9dJCcyjYEeGFbebITJYb9g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AVlPMCjZEeGFbebITJYb9g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AVl2QCjZEeGFbebITJYb9g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AVl2QSjZEeGFbebITJYb9g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AVl2QijZEeGFbebITJYb9g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AVl2QyjZEeGFbebITJYb9g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AVl2RCjZEeGFbebITJYb9g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AVmdUCjZEeGFbebITJYb9g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FBYM4DrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FX-H8DrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FX-H8TrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FX-H8jrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FX-vADrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FX-vATrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AVmdUSjZEeGFbebITJYb9g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WOqX0FaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WaM5cFaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AVmdUijZEeGFbebITJYb9g" x="-72"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AVmdUyjZEeGFbebITJYb9g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_AVmdVCjZEeGFbebITJYb9g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_ATRiECjZEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AVlPMSjZEeGFbebITJYb9g" x="207" y="45" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f8HYECjZEeGFbebITJYb9g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f8H_ICjZEeGFbebITJYb9g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f8H_ISjZEeGFbebITJYb9g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f8H_IijZEeGFbebITJYb9g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f8H_IyjZEeGFbebITJYb9g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f8H_JCjZEeGFbebITJYb9g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f8H_JSjZEeGFbebITJYb9g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GBY4YDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GY2WIDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GY29MDrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GY29MTrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GY29MjrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GY3kQDrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_f8H_JijZEeGFbebITJYb9g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_W__uIFaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XHxKEFaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f8H_JyjZEeGFbebITJYb9g" x="25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_f8ImMCjZEeGFbebITJYb9g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_f8ImMSjZEeGFbebITJYb9g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f8HYESjZEeGFbebITJYb9g" x="-10" y="45"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_9V8OQCjYEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9dH0USjYEeGFbebITJYb9g" x="171" y="302" width="217" height="92"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WoQnECjZEeGFbebITJYb9g" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WoROICjZEeGFbebITJYb9g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WoROISjZEeGFbebITJYb9g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WoROIijZEeGFbebITJYb9g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WoROIyjZEeGFbebITJYb9g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WoROJCjZEeGFbebITJYb9g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WoROJSjZEeGFbebITJYb9g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WoROJijZEeGFbebITJYb9g" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_WoROJyjZEeGFbebITJYb9g" visible="false" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WoROKCjZEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WoROKSjZEeGFbebITJYb9g"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WoQnESjZEeGFbebITJYb9g" x="171" y="250" width="217" height="26"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qz8ykCkAEeGDDbdzqSb4UA" type="2073" fontName="" fontHeight="10" fillColor="8047085" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ykSkAEeGDDbdzqSb4UA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ykikAEeGDDbdzqSb4UA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ykykAEeGDDbdzqSb4UA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ylCkAEeGDDbdzqSb4UA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ylSkAEeGDDbdzqSb4UA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ylikAEeGDDbdzqSb4UA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ylykAEeGDDbdzqSb4UA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4rLycM0zEeGV96JAv8cWdw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4rLycc0zEeGV96JAv8cWdw" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4rLycs0zEeGV96JAv8cWdw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4rLyc80zEeGV96JAv8cWdw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4rLydM0zEeGV96JAv8cWdw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qz8ynSkAEeGDDbdzqSb4UA" type="5156">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ynikAEeGDDbdzqSb4UA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ynykAEeGDDbdzqSb4UA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yoCkAEeGDDbdzqSb4UA" key="StereotypeList" value="FCM::ComponentImpl"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yoSkAEeGDDbdzqSb4UA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yoikAEeGDDbdzqSb4UA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yoykAEeGDDbdzqSb4UA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qz8ypCkAEeGDDbdzqSb4UA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_qz8ypSkAEeGDDbdzqSb4UA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ypikAEeGDDbdzqSb4UA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ypykAEeGDDbdzqSb4UA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8yqCkAEeGDDbdzqSb4UA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yqSkAEeGDDbdzqSb4UA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8yqikAEeGDDbdzqSb4UA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yqykAEeGDDbdzqSb4UA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qz8yrCkAEeGDDbdzqSb4UA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Vo5_YFaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vv278FaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qz8yrSkAEeGDDbdzqSb4UA" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qz8yrikAEeGDDbdzqSb4UA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz8yrykAEeGDDbdzqSb4UA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qz8ysCkAEeGDDbdzqSb4UA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ysSkAEeGDDbdzqSb4UA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ysikAEeGDDbdzqSb4UA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ysykAEeGDDbdzqSb4UA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ytCkAEeGDDbdzqSb4UA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ytSkAEeGDDbdzqSb4UA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ytikAEeGDDbdzqSb4UA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B-viUDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CVcyIDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CVcyITrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CVcyIjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CVdZMDrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CVdZMTrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qz8ytykAEeGDDbdzqSb4UA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8yuCkAEeGDDbdzqSb4UA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bFaEUFaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qz8yuikAEeGDDbdzqSb4UA" x="-36" y="-8"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qz8yuykAEeGDDbdzqSb4UA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qz8yvCkAEeGDDbdzqSb4UA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz8yvSkAEeGDDbdzqSb4UA" x="63" y="-10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4ksloCkAEeGDDbdzqSb4UA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4kwQACkAEeGDDbdzqSb4UA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4kwQASkAEeGDDbdzqSb4UA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4kwQAikAEeGDDbdzqSb4UA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4kwQAykAEeGDDbdzqSb4UA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4kwQBCkAEeGDDbdzqSb4UA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4kwQBSkAEeGDDbdzqSb4UA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DJ1ccDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Da9osDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Da9osTrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Da9osjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Da9oszrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Da9otDrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4kwQBikAEeGDDbdzqSb4UA" visible="false" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AP6k4CkBEeGDDbdzqSb4UA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AP7L8CkBEeGDDbdzqSb4UA" key="CustomAppearance_MaskValue" value="46"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4kwQBykAEeGDDbdzqSb4UA" x="18" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4kw3ECkAEeGDDbdzqSb4UA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4kw3ESkAEeGDDbdzqSb4UA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_ATRiECjZEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ksloSkAEeGDDbdzqSb4UA" x="153" y="16"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#_ARs_UCjaEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz8yvikAEeGDDbdzqSb4UA" x="22" y="103" width="163" height="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qz8yvykAEeGDDbdzqSb4UA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ywCkAEeGDDbdzqSb4UA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ywSkAEeGDDbdzqSb4UA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8ywikAEeGDDbdzqSb4UA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8ywykAEeGDDbdzqSb4UA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8yxCkAEeGDDbdzqSb4UA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yxSkAEeGDDbdzqSb4UA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qz8yxikAEeGDDbdzqSb4UA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UO2cMFaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UlpLkFaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qz8yxykAEeGDDbdzqSb4UA" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qz8yyCkAEeGDDbdzqSb4UA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz8yySkAEeGDDbdzqSb4UA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qz8yyikAEeGDDbdzqSb4UA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8yyykAEeGDDbdzqSb4UA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yzCkAEeGDDbdzqSb4UA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8yzSkAEeGDDbdzqSb4UA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8yzikAEeGDDbdzqSb4UA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8yzykAEeGDDbdzqSb4UA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qz8y0CkAEeGDDbdzqSb4UA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A92GADrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BOcGwDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BOcGwTrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BOcGwjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BOcGwzrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BOcGxDrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qz8y0SkAEeGDDbdzqSb4UA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qz8y0ikAEeGDDbdzqSb4UA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cTAf4FaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qz8y1CkAEeGDDbdzqSb4UA" x="27" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qz8y1SkAEeGDDbdzqSb4UA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qz8y1ikAEeGDDbdzqSb4UA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_ZjdOAP-EEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz8y1ykAEeGDDbdzqSb4UA" x="63" y="42"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#_RMqEkCjaEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz8y2CkAEeGDDbdzqSb4UA" x="22" y="7" width="163" height="52"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qz8y2SkAEeGDDbdzqSb4UA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz8y2ikAEeGDDbdzqSb4UA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3PyBICkAEeGDDbdzqSb4UA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3PyoMCkAEeGDDbdzqSb4UA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3PyoMSkAEeGDDbdzqSb4UA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3PzPQCkAEeGDDbdzqSb4UA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3PzPQSkAEeGDDbdzqSb4UA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3PzPQikAEeGDDbdzqSb4UA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3PzPQykAEeGDDbdzqSb4UA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EFQi4DrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EWD_ADrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EWD_ATrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EWD_AjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EWD_AzrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EWD_BDrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3PzPRCkAEeGDDbdzqSb4UA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aE63sFaDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aMll8FaDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3PzPRSkAEeGDDbdzqSb4UA" x="-81" y="-9"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3PzPRikAEeGDDbdzqSb4UA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3PzPRykAEeGDDbdzqSb4UA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_3NSGwCkAEeGDDbdzqSb4UA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3PyBISkAEeGDDbdzqSb4UA" x="288" y="144" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_-X6zMCjZEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz8y2ykAEeGDDbdzqSb4UA" x="455" y="39" width="298" height="199"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_ebmW0PM_EeCovO8AYZymZQ"/>
+ <element xmi:type="uml:Package" href="core.uml#_xtlE8ARAEd--t-uhRn9OBA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Y7Vc8CjZEeGFbebITJYb9g" type="4015" source="_9dH0UCjYEeGFbebITJYb9g" target="_WoQnECjZEeGFbebITJYb9g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Y7WrECjZEeGFbebITJYb9g" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Y7WrESjZEeGFbebITJYb9g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Y7Vc8SjZEeGFbebITJYb9g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_Y6lPACjZEeGFbebITJYb9g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y7Vc8ijZEeGFbebITJYb9g" points="[4, -11, 7, 30]$[4, -63, 7, -22]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y-dpcCjZEeGFbebITJYb9g" id="(0.50625,0.11956521739130435)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1VKukCkAEeGDDbdzqSb4UA" type="4013" source="_qz8yyikAEeGDDbdzqSb4UA" target="_qz8ysCkAEeGDDbdzqSb4UA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1VL8sCkAEeGDDbdzqSb4UA" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1VL8sSkAEeGDDbdzqSb4UA" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1VL8sikAEeGDDbdzqSb4UA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1VMjwCkAEeGDDbdzqSb4UA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1VMjwSkAEeGDDbdzqSb4UA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1VMjwikAEeGDDbdzqSb4UA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1VMjwykAEeGDDbdzqSb4UA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1VMjxCkAEeGDDbdzqSb4UA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1VKukSkAEeGDDbdzqSb4UA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="core.uml#_iDCL0CjaEeGFbebITJYb9g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1VKukikAEeGDDbdzqSb4UA" points="[0, 10, 0, -34]$[0, 34, 0, -10]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_85CvsCkAEeGDDbdzqSb4UA" type="4013" source="_4ksloCkAEeGDDbdzqSb4UA" target="_3PyBICkAEeGDDbdzqSb4UA" routing="Rectilinear" closestDistance="true" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_85D90CkAEeGDDbdzqSb4UA" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_85D90SkAEeGDDbdzqSb4UA" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_85D90ikAEeGDDbdzqSb4UA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_85D90ykAEeGDDbdzqSb4UA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_85D91CkAEeGDDbdzqSb4UA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_85D91SkAEeGDDbdzqSb4UA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_85D91ikAEeGDDbdzqSb4UA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_85D91ykAEeGDDbdzqSb4UA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_85CvsSkAEeGDDbdzqSb4UA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="core.uml#_84IJsCkAEeGDDbdzqSb4UA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_85CvsikAEeGDDbdzqSb4UA" points="[10, 4, -220, 14]$[71, 4, -159, 14]$[71, -10, -159, 0]$[227, -10, -3, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_864iwCkAEeGDDbdzqSb4UA" id="(0.15,0.45)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_hyLz8PNGEeCovO8AYZymZQ" type="CompositeStructure" name="composite: Marshalling" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_iVJ-IPNGEeCovO8AYZymZQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iVJ-IvNGEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iVKlMPNGEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iVKlMfNGEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iVKlMvNGEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iVKlM_NGEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iVKlNPNGEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iVKlNfNGEeCovO8AYZymZQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_iVKlNvNGEeCovO8AYZymZQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_iVKlN_NGEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iVKlOPNGEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZjCy0PNHEeCovO8AYZymZQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZjDZ4PNHEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZjDZ4fNHEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZjDZ4vNHEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZjDZ4_NHEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZjDZ5PNHEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZjDZ5fNHEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N6_48DrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OOwicDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OOwicTrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OOwicjrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OOwiczrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OOwidDrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZjEA8PNHEeCovO8AYZymZQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cZt34EN-EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cfyMwE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZjEA8fNHEeCovO8AYZymZQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZjEA8vNHEeCovO8AYZymZQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZjEA8_NHEeCovO8AYZymZQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_rSCxUAytEd6it_RkGhz_AA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZjCy0fNHEeCovO8AYZymZQ" x="117" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iVa2wEN9EeGfhclnRyNzoA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iVbd0EN9EeGfhclnRyNzoA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iVbd0UN9EeGfhclnRyNzoA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iVbd0kN9EeGfhclnRyNzoA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iVbd00N9EeGfhclnRyNzoA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iVbd1EN9EeGfhclnRyNzoA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iVbd1UN9EeGfhclnRyNzoA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jaKRQEN9EeGfhclnRyNzoA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtyX4EN9EeGfhclnRyNzoA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtyX4UN9EeGfhclnRyNzoA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jtyX4kN9EeGfhclnRyNzoA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jty-8EN9EeGfhclnRyNzoA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jty-8UN9EeGfhclnRyNzoA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iVbd1kN9EeGfhclnRyNzoA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YRiFEEN_EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZxVCcE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iVbd10N9EeGfhclnRyNzoA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iVcE4EN9EeGfhclnRyNzoA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iVcE4UN9EeGfhclnRyNzoA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_MhH6cENxEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iVa2wUN9EeGfhclnRyNzoA" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_b_yh4AzyEd6it_RkGhz_AA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iVJ-IfNGEeCovO8AYZymZQ" x="90" y="279" width="127" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kENg8PNGEeCovO8AYZymZQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEOIAPNGEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEOIAfNGEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEOIAvNGEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEOIA_NGEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEOIBPNGEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEOIBfNGEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kEOvEPNGEeCovO8AYZymZQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_kEOvEfNGEeCovO8AYZymZQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_kEOvEvNGEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kEOvE_NGEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qJrqYPNGEeCovO8AYZymZQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qJsRcPNGEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qJsRcfNGEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qJsRcvNGEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qJsRc_NGEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qJsRdPNGEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qJsRdfNGEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JbRlUDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JrZE8DrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JrZE8TrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JrZsADrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JrZsATrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JrZsAjrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qJsRdvNGEeCovO8AYZymZQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ezv2kFjoEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FAR2sFjoEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qJsRd_NGEeCovO8AYZymZQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qJsRePNGEeCovO8AYZymZQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qJsRefNGEeCovO8AYZymZQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qJrqYfNGEeCovO8AYZymZQ" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_j29X4NttEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kENg8fNGEeCovO8AYZymZQ" x="90" y="36" width="316" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mqiqAPNGEeCovO8AYZymZQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mqjREPNGEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mqjREfNGEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mqjREvNGEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mqjRE_NGEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mqj4IPNGEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mqj4IfNGEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mqj4IvNGEeCovO8AYZymZQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mqj4I_NGEeCovO8AYZymZQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mqj4JPNGEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqj4JfNGEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bc1mAPNHEeCovO8AYZymZQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc2NEPNHEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc2NEfNHEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc2NEvNHEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc2NE_NHEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc2NFPNHEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc2NFfNHEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_O-5l8DrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PVN0MDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PVObQDrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PVObQTrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PVObQjrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PVObQzrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bc2NFvNHEeCovO8AYZymZQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Y0v8UEN-EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aYUJ8E4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bc2NF_NHEeCovO8AYZymZQ" x="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bc2NGPNHEeCovO8AYZymZQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bc2NGfNHEeCovO8AYZymZQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_r5Va0AytEd6it_RkGhz_AA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bc1mAfNHEeCovO8AYZymZQ" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cQDbAEN9EeGfhclnRyNzoA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cQECEEN9EeGfhclnRyNzoA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cQECEUN9EeGfhclnRyNzoA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cQECEkN9EeGfhclnRyNzoA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cQECE0N9EeGfhclnRyNzoA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cQECFEN9EeGfhclnRyNzoA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cQECFUN9EeGfhclnRyNzoA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gnyQQEN9EeGfhclnRyNzoA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g-aAgEN9EeGfhclnRyNzoA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g-aAgUN9EeGfhclnRyNzoA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g-aAgkN9EeGfhclnRyNzoA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g-aAg0N9EeGfhclnRyNzoA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g-aAhEN9EeGfhclnRyNzoA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cQECFkN9EeGfhclnRyNzoA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XwXHIEN-EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a51ioE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cQECF0N9EeGfhclnRyNzoA" x="27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cQECGEN9EeGfhclnRyNzoA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cQECGUN9EeGfhclnRyNzoA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Zd558ENxEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cQDbAUN9EeGfhclnRyNzoA" x="117" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_fmF6MAzyEd6it_RkGhz_AA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mqiqAfNGEeCovO8AYZymZQ" x="396" y="279" width="127" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_o1VGkPNGEeCovO8AYZymZQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o1VtoPNGEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o1VtofNGEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o1VtovNGEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o1Vto_NGEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_o1WUsPNGEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o1WUsfNGEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_o1WUsvNGEeCovO8AYZymZQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_o1WUs_NGEeCovO8AYZymZQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_o1WUtPNGEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o1WUtfNGEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qpQiUPNGEeCovO8AYZymZQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qpRJYPNGEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qpRJYfNGEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qpRJYvNGEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qpRJY_NGEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qpRwcPNGEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qpRwcfNGEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RHYVYDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RapPoDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RapPoTrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rap2sDrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rap2sTrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rap2sjrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qpRwcvNGEeCovO8AYZymZQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_h3CcMEN-EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lv9-sE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qpRwc_NGEeCovO8AYZymZQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qpRwdPNGEeCovO8AYZymZQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qpRwdfNGEeCovO8AYZymZQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qpQiUfNGEeCovO8AYZymZQ" x="117" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_mIpj8Ns8Ed2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o1VGkfNGEeCovO8AYZymZQ" x="468" y="36" width="127" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__uLGkPNGEeCovO8AYZymZQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__uLtoPNGEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__uLtofNGEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__uLtovNGEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__uLto_NGEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__uMUsPNGEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__uMUsfNGEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__uMUsvNGEeCovO8AYZymZQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__uMUs_NGEeCovO8AYZymZQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__uMUtPNGEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__uMUtfNGEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KNC08PQSEeCovO8AYZymZQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KNDcAPQSEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KNDcAfQSEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KNDcAvQSEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KNDcA_QSEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KNDcBPQSEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KNDcBfQSEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MhV-YDrVEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0TWoDrVEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0T9sDrVEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0T9sTrVEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0T9sjrVEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0T9szrVEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KNDcBvQSEeCovO8AYZymZQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e8v1UEN-EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b_sXcE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KNDcB_QSEeCovO8AYZymZQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KNEDEPQSEeCovO8AYZymZQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KNEDEfQSEeCovO8AYZymZQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_rSCxUAytEd6it_RkGhz_AA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KNC08fQSEeCovO8AYZymZQ" x="117" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vzOfsEN9EeGfhclnRyNzoA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vzPGwEN9EeGfhclnRyNzoA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vzPGwUN9EeGfhclnRyNzoA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vzPGwkN9EeGfhclnRyNzoA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vzPGw0N9EeGfhclnRyNzoA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vzPGxEN9EeGfhclnRyNzoA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vzPGxUN9EeGfhclnRyNzoA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xAI-wEN9EeGfhclnRyNzoA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xXqt8EN9EeGfhclnRyNzoA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xXqt8UN9EeGfhclnRyNzoA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xXqt8kN9EeGfhclnRyNzoA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xXqt80N9EeGfhclnRyNzoA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xXrVAEN9EeGfhclnRyNzoA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vzPGxkN9EeGfhclnRyNzoA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b0q0oEN_EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bcLasE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vzPGx0N9EeGfhclnRyNzoA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vzPGyEN9EeGfhclnRyNzoA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vzPGyUN9EeGfhclnRyNzoA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_MhH6cENxEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vzOfsUN9EeGfhclnRyNzoA" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#__uJRYPNGEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__uLGkfNGEeCovO8AYZymZQ" x="90" y="405" width="127" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_u_QmwENqEeGoAtSeIK7WLg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u_RN0ENqEeGoAtSeIK7WLg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u_RN0UNqEeGoAtSeIK7WLg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u_RN0kNqEeGoAtSeIK7WLg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u_RN00NqEeGoAtSeIK7WLg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u_RN1ENqEeGoAtSeIK7WLg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u_RN1UNqEeGoAtSeIK7WLg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_u_RN1kNqEeGoAtSeIK7WLg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_u_R04ENqEeGoAtSeIK7WLg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_u_R04UNqEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u_R04kNqEeGoAtSeIK7WLg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7XPQEENqEeGoAtSeIK7WLg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7XP3IENqEeGoAtSeIK7WLg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7XP3IUNqEeGoAtSeIK7WLg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7XP3IkNqEeGoAtSeIK7WLg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7XP3I0NqEeGoAtSeIK7WLg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7XP3JENqEeGoAtSeIK7WLg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7XP3JUNqEeGoAtSeIK7WLg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8posEENqEeGoAtSeIK7WLg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9AyAwENqEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9AyAwUNqEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Ayn0ENqEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Ayn0UNqEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Ayn0kNqEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7XP3JkNqEeGoAtSeIK7WLg" visible="false" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7XQeMENqEeGoAtSeIK7WLg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7XQeMUNqEeGoAtSeIK7WLg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7XQeMkNqEeGoAtSeIK7WLg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7XPQEUNqEeGoAtSeIK7WLg" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-nzo8ENqEeGoAtSeIK7WLg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-n0QAENqEeGoAtSeIK7WLg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-n0QAUNqEeGoAtSeIK7WLg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-n0QAkNqEeGoAtSeIK7WLg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-n0QA0NqEeGoAtSeIK7WLg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-n0QBENqEeGoAtSeIK7WLg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-n0QBUNqEeGoAtSeIK7WLg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aJho0EN8EeGfhclnRyNzoA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHDoEEN8EeGfhclnRyNzoA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHDoEUN8EeGfhclnRyNzoA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHDoEkN8EeGfhclnRyNzoA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHDoE0N8EeGfhclnRyNzoA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bHDoFEN8EeGfhclnRyNzoA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-n0QBkNqEeGoAtSeIK7WLg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WEWb0EN_EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_smS9UE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-n0QB0NqEeGoAtSeIK7WLg" x="-99"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-n0QCENqEeGoAtSeIK7WLg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-n0QCUNqEeGoAtSeIK7WLg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_-nk_cENqEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-nzo8UNqEeGoAtSeIK7WLg" x="117" y="36" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_u7MmIENqEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u_QmwUNqEeGoAtSeIK7WLg" x="90" y="144" width="127" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1xcsQENqEeGoAtSeIK7WLg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xdTUENqEeGoAtSeIK7WLg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xdTUUNqEeGoAtSeIK7WLg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xdTUkNqEeGoAtSeIK7WLg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xdTU0NqEeGoAtSeIK7WLg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1xdTVENqEeGoAtSeIK7WLg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1xdTVUNqEeGoAtSeIK7WLg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1xdTVkNqEeGoAtSeIK7WLg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1xdTV0NqEeGoAtSeIK7WLg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1xdTWENqEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xdTWUNqEeGoAtSeIK7WLg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zeMyEEN8EeGfhclnRyNzoA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zeOAMEN8EeGfhclnRyNzoA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zeOAMUN8EeGfhclnRyNzoA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zeOAMkN8EeGfhclnRyNzoA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zeOAM0N8EeGfhclnRyNzoA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zeOANEN8EeGfhclnRyNzoA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zeOANUN8EeGfhclnRyNzoA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4rAYsEN9EeGfhclnRyNzoA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48lQ4EN9EeGfhclnRyNzoA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48lQ4UN9EeGfhclnRyNzoA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48lQ4kN9EeGfhclnRyNzoA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48lQ40N9EeGfhclnRyNzoA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48l38EN9EeGfhclnRyNzoA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zeOANkN8EeGfhclnRyNzoA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a_mN0EN_EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mTaC8E4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zeOAN0N8EeGfhclnRyNzoA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zeOAOEN8EeGfhclnRyNzoA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zeOAOUN8EeGfhclnRyNzoA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_9gIc8ENvEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zeNZIEN8EeGfhclnRyNzoA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zePOUEN8EeGfhclnRyNzoA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zeP1YEN8EeGfhclnRyNzoA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zeP1YUN8EeGfhclnRyNzoA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zeP1YkN8EeGfhclnRyNzoA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zeP1Y0N8EeGfhclnRyNzoA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zeP1ZEN8EeGfhclnRyNzoA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zeP1ZUN8EeGfhclnRyNzoA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5ijEsEN9EeGfhclnRyNzoA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zBwsEN9EeGfhclnRyNzoA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zCXwEN9EeGfhclnRyNzoA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zCXwUN9EeGfhclnRyNzoA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zCXwkN9EeGfhclnRyNzoA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zCXw0N9EeGfhclnRyNzoA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zeP1ZkN8EeGfhclnRyNzoA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e8wcYEN-EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dPSXEE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zeP1Z0N8EeGfhclnRyNzoA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zeP1aEN8EeGfhclnRyNzoA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zeP1aUN8EeGfhclnRyNzoA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zePOUUN8EeGfhclnRyNzoA" x="117" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_1xGG8ENqEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xcsQUNqEeGoAtSeIK7WLg" x="468" y="144" width="127" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_H7kTUENrEeGoAtSeIK7WLg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H7k6YENrEeGoAtSeIK7WLg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H7k6YUNrEeGoAtSeIK7WLg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H7k6YkNrEeGoAtSeIK7WLg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H7k6Y0NrEeGoAtSeIK7WLg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H7k6ZENrEeGoAtSeIK7WLg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H7k6ZUNrEeGoAtSeIK7WLg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H7k6ZkNrEeGoAtSeIK7WLg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_H7k6Z0NrEeGoAtSeIK7WLg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_H7k6aENrEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H7k6aUNrEeGoAtSeIK7WLg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LIMnYENrEeGoAtSeIK7WLg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LINOcENrEeGoAtSeIK7WLg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LINOcUNrEeGoAtSeIK7WLg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LINOckNrEeGoAtSeIK7WLg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LINOc0NrEeGoAtSeIK7WLg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LINOdENrEeGoAtSeIK7WLg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LINOdUNrEeGoAtSeIK7WLg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MNeNYENrEeGoAtSeIK7WLg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MkeYIENrEeGoAtSeIK7WLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Mke_MENrEeGoAtSeIK7WLg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Mke_MUNrEeGoAtSeIK7WLg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Mke_MkNrEeGoAtSeIK7WLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Mke_M0NrEeGoAtSeIK7WLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LINOdkNrEeGoAtSeIK7WLg" visible="false" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LINOd0NrEeGoAtSeIK7WLg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LINOeENrEeGoAtSeIK7WLg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LINOeUNrEeGoAtSeIK7WLg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LIMnYUNrEeGoAtSeIK7WLg" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_i742UEN8EeGfhclnRyNzoA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_i76EcEN8EeGfhclnRyNzoA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_i76rgEN8EeGfhclnRyNzoA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_i76rgUN8EeGfhclnRyNzoA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_i76rgkN8EeGfhclnRyNzoA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_i76rg0N8EeGfhclnRyNzoA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_i76rhEN8EeGfhclnRyNzoA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_keq3sEN8EeGfhclnRyNzoA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k2gI4EN8EeGfhclnRyNzoA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k2gI4UN8EeGfhclnRyNzoA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k2gI4kN8EeGfhclnRyNzoA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k2gI40N8EeGfhclnRyNzoA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_k2gI5EN8EeGfhclnRyNzoA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_i76rhUN8EeGfhclnRyNzoA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UeOLgEN_EeGfhclnRyNzoA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eFDhcE4hEeKNVONx4BgsGg" key="CustomAppearance_MaskValue" value="20"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_i76rhkN8EeGfhclnRyNzoA" x="-99"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_i77SkEN8EeGfhclnRyNzoA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_i77SkUN8EeGfhclnRyNzoA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_i5SOQEN8EeGfhclnRyNzoA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_i75dYEN8EeGfhclnRyNzoA" x="117" y="36" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_H7IOcENrEeGoAtSeIK7WLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H7kTUUNrEeGoAtSeIK7WLg" x="279" y="144" width="127" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pmSKYEN_EeGfhclnRyNzoA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pmSxcEN_EeGfhclnRyNzoA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pmSxcUN_EeGfhclnRyNzoA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pmSxckN_EeGfhclnRyNzoA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pmSxc0N_EeGfhclnRyNzoA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pmSxdEN_EeGfhclnRyNzoA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pmSxdUN_EeGfhclnRyNzoA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pmSxdkN_EeGfhclnRyNzoA" type="5192"/>
+ <element xmi:type="uml:Comment" href="core.uml#_pk4cMEN_EeGfhclnRyNzoA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pmSKYUN_EeGfhclnRyNzoA" x="351" y="390" width="391" height="79"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_hyMbAPNGEeCovO8AYZymZQ"/>
+ <element xmi:type="uml:Package" href="core.uml#_gKMTIAytEd6it_RkGhz_AA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_khmAgPNGEeCovO8AYZymZQ" type="4015" source="_u_QmwENqEeGoAtSeIK7WLg" target="_kENg8PNGEeCovO8AYZymZQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_khmnkPNGEeCovO8AYZymZQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_khmnkfNGEeCovO8AYZymZQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_khmAgfNGEeCovO8AYZymZQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_K088oF_rEd6RvK-1A151zQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_khmAgvNGEeCovO8AYZymZQ" points="[17, -30, -23, 39]$[23, -39, -17, 30]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4ud3AENqEeGoAtSeIK7WLg" id="(0.49606299212598426,0.0273972602739726)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OtJFEEN8EeGfhclnRyNzoA" id="(0.20569620253164558,0.958904109589041)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_sH_KIPNGEeCovO8AYZymZQ" type="4015" source="_1xcsQENqEeGoAtSeIK7WLg" target="_o1VGkPNGEeCovO8AYZymZQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_sH_xMPNGEeCovO8AYZymZQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sIAYQPNGEeCovO8AYZymZQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_sH_KIfNGEeCovO8AYZymZQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_M09FgF_rEd6RvK-1A151zQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_sH_KIvNGEeCovO8AYZymZQ" points="[-8, -30, 0, 77]$[0, -77, 8, 30]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5r5voENqEeGoAtSeIK7WLg" id="(0.4881889763779528,0.0958904109589041)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_EWU9cPNHEeCovO8AYZymZQ" type="4015" source="__uLGkPNGEeCovO8AYZymZQ" target="_iVJ-IPNGEeCovO8AYZymZQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_EWWLkPNHEeCovO8AYZymZQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_EWWLkfNHEeCovO8AYZymZQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_EWU9cfNHEeCovO8AYZymZQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_EWShMPNHEeCovO8AYZymZQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EWU9cvNHEeCovO8AYZymZQ" points="[2, -8, -13, 52]$[20, -42, 5, 18]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EWWyoPNHEeCovO8AYZymZQ" id="(0.4881889763779528,0.1095890410958904)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EWWyofNHEeCovO8AYZymZQ" id="(0.5196850393700787,0.9178082191780822)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KH4Z4ENrEeGoAtSeIK7WLg" type="4015" source="_H7kTUENrEeGoAtSeIK7WLg" target="_kENg8PNGEeCovO8AYZymZQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_KH5A8ENrEeGoAtSeIK7WLg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KH5oAENrEeGoAtSeIK7WLg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_KH4Z4UNrEeGoAtSeIK7WLg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_KHmGAENrEeGoAtSeIK7WLg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KH4Z4kNrEeGoAtSeIK7WLg" points="[-4, -5, 94, 153]$[-95, -150, 3, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KIePwENrEeGoAtSeIK7WLg" id="(0.5229357798165137,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KIePwUNrEeGoAtSeIK7WLg" id="(0.8142857142857143,0.9452054794520548)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_cVCGYPNUEeCovO8AYZymZQ" type="PapyrusUMLClassDiagram" name="Class: Marshalling" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_jQk8MPNUEeCovO8AYZymZQ" type="2006" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jQljQPNUEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jQljQfNUEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jQljQvNUEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jQljQ_NUEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jQljRPNUEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jQljRfNUEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jQmKUPNUEeCovO8AYZymZQ" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jQmKUfNUEeCovO8AYZymZQ" type="7015">
+ <children xmi:type="notation:Shape" xmi:id="_jv7KoPNUEeCovO8AYZymZQ" type="3017" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="core.uml#_jv4uYPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jv7KofNUEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kuE08PNUEeCovO8AYZymZQ" type="3017" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="core.uml#_kuDm0PNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kuE08fNUEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ljFxYPNUEeCovO8AYZymZQ" type="3017" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="core.uml#_ljD8MPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ljFxYfNUEeCovO8AYZymZQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jQmKUvNUEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jQmKU_NUEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jQmKVPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jQmKVfNUEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="core.uml#_jQjHAPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jQk8MfNUEeCovO8AYZymZQ" x="387" y="83"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SPPn0FjnEeKaM_PspnG53g" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SPRdAFjnEeKaM_PspnG53g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SPSEEFjnEeKaM_PspnG53g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SPSEEVjnEeKaM_PspnG53g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SPSEEljnEeKaM_PspnG53g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SPSEE1jnEeKaM_PspnG53g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SPSEFFjnEeKaM_PspnG53g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SPSEFVjnEeKaM_PspnG53g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SPSrIFjnEeKaM_PspnG53g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_USG3cFjnEeKaM_PspnG53g" type="3012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d1EbcFjnEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eOY6YFjnEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_YKtbAPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_USG3cVjnEeKaM_PspnG53g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_USHegFjnEeKaM_PspnG53g" type="3012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d1FCgFjnEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eOaIgFjnEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_gQGNwPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_USHegVjnEeKaM_PspnG53g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_USIFkFjnEeKaM_PspnG53g" type="3012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d1FCgljnEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eOavkFjnEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_-_HCMBI0EeGU49ezpRnvLg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_USIFkVjnEeKaM_PspnG53g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_USIsoFjnEeKaM_PspnG53g" type="3012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ffmDkFjnEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ffmDkVjnEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ <element xmi:type="uml:Property" href="core.uml#_qzHgkPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_USIsoVjnEeKaM_PspnG53g"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SPSrIVjnEeKaM_PspnG53g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SPSrIljnEeKaM_PspnG53g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SPSrI1jnEeKaM_PspnG53g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SPSrJFjnEeKaM_PspnG53g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SPSrJVjnEeKaM_PspnG53g" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SPSrJljnEeKaM_PspnG53g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SPSrJ1jnEeKaM_PspnG53g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SPSrKFjnEeKaM_PspnG53g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SPSrKVjnEeKaM_PspnG53g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SPSrKljnEeKaM_PspnG53g" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SPSrK1jnEeKaM_PspnG53g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SPSrLFjnEeKaM_PspnG53g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SPSrLVjnEeKaM_PspnG53g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SPSrLljnEeKaM_PspnG53g"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_WkkjoPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SPPn0VjnEeKaM_PspnG53g" x="130" y="78"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_cVCGYfNUEeCovO8AYZymZQ"/>
+ <element xmi:type="uml:Package" href="core.uml#_gKMTIAytEd6it_RkGhz_AA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_g6Yg0CnOEeGxrprK9wB9iA" type="CompositeStructure" name="Service configuration" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_hvsYMCnOEeGxrprK9wB9iA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hvs_QCnOEeGxrprK9wB9iA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hvtmUCnOEeGxrprK9wB9iA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hvtmUSnOEeGxrprK9wB9iA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hvtmUinOEeGxrprK9wB9iA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hvtmUynOEeGxrprK9wB9iA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hvtmVCnOEeGxrprK9wB9iA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hvtmVSnOEeGxrprK9wB9iA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hvuNYCnOEeGxrprK9wB9iA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_j5-ecCnOEeGxrprK9wB9iA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j5_FgCnOEeGxrprK9wB9iA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j5_FgSnOEeGxrprK9wB9iA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j5_FginOEeGxrprK9wB9iA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j5_FgynOEeGxrprK9wB9iA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j5_FhCnOEeGxrprK9wB9iA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j5_FhSnOEeGxrprK9wB9iA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_j5_FhinOEeGxrprK9wB9iA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eASCYFjmEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eBKMIFjmEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_j5_skCnOEeGxrprK9wB9iA" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_j5_skSnOEeGxrprK9wB9iA" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_j5_skinOEeGxrprK9wB9iA"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#_rVfYoMGJEd-Mveea1W_olA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_j5-ecSnOEeGxrprK9wB9iA" x="10" y="10" width="131"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lEz54CnOEeGxrprK9wB9iA" type="3097" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lEz54inOEeGxrprK9wB9iA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lE0g8CnOEeGxrprK9wB9iA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lE0g8SnOEeGxrprK9wB9iA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lE0g8inOEeGxrprK9wB9iA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lE0g8ynOEeGxrprK9wB9iA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lE0g9CnOEeGxrprK9wB9iA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lE0g9SnOEeGxrprK9wB9iA" type="5150"/>
+ <element xmi:type="uml:Comment" href="core.uml#_lCtoICnOEeGxrprK9wB9iA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lEz54SnOEeGxrprK9wB9iA" x="221" y="10" width="271" height="64"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hvuNYSnOEeGxrprK9wB9iA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hvuNYinOEeGxrprK9wB9iA"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hvsYMSnOEeGxrprK9wB9iA" x="62" y="64" width="524" height="135"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_t6v_0CnOEeGxrprK9wB9iA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6wm4CnOEeGxrprK9wB9iA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6wm4SnOEeGxrprK9wB9iA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6wm4inOEeGxrprK9wB9iA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6wm4ynOEeGxrprK9wB9iA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6xN8CnOEeGxrprK9wB9iA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6xN8SnOEeGxrprK9wB9iA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t6xN8inOEeGxrprK9wB9iA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t6xN8ynOEeGxrprK9wB9iA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_vBLcYCnOEeGxrprK9wB9iA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vBMDcCnOEeGxrprK9wB9iA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vBMqgCnOEeGxrprK9wB9iA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vBMqgSnOEeGxrprK9wB9iA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vBNRkCnOEeGxrprK9wB9iA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vBNRkSnOEeGxrprK9wB9iA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vBNRkinOEeGxrprK9wB9iA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vBNRkynOEeGxrprK9wB9iA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_chkosFjmEeKaM_PspnG53g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_co8cAFjmEeKaM_PspnG53g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vBNRlCnOEeGxrprK9wB9iA" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vBNRlSnOEeGxrprK9wB9iA" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vBNRlinOEeGxrprK9wB9iA"/>
+ </children>
+ <element xmi:type="uml:Property" href="core.uml#_tmNeoCjbEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vBLcYSnOEeGxrprK9wB9iA" x="10" y="10" width="173"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zNMJ0CnOEeGxrprK9wB9iA" type="3097" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zNMw4SnOEeGxrprK9wB9iA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zNMw4inOEeGxrprK9wB9iA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zNNX8CnOEeGxrprK9wB9iA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zNNX8SnOEeGxrprK9wB9iA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zNNX8inOEeGxrprK9wB9iA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zNNX8ynOEeGxrprK9wB9iA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zNNX9CnOEeGxrprK9wB9iA" type="5150"/>
+ <element xmi:type="uml:Comment" href="core.uml#_zLeSkCnOEeGxrprK9wB9iA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zNMw4CnOEeGxrprK9wB9iA" x="219" y="15" width="270"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t6xN9CnOEeGxrprK9wB9iA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t6xN9SnOEeGxrprK9wB9iA"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_9V8OQCjYEeGFbebITJYb9g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t6v_0SnOEeGxrprK9wB9iA" x="65" y="245" width="521" height="161"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RANSwCo0EeGxrprK9wB9iA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RAN50Co0EeGxrprK9wB9iA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RAN50So0EeGxrprK9wB9iA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RAN50io0EeGxrprK9wB9iA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RAN50yo0EeGxrprK9wB9iA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RAN51Co0EeGxrprK9wB9iA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RAN51So0EeGxrprK9wB9iA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RAN51io0EeGxrprK9wB9iA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_RAN51yo0EeGxrprK9wB9iA" visible="false" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_RAN52Co0EeGxrprK9wB9iA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RAN52So0EeGxrprK9wB9iA"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/osal.uml#_ETakYDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RANSwSo0EeGxrprK9wB9iA" x="652" y="261" width="60" height="55"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_g6Yg0SnOEeGxrprK9wB9iA"/>
+ <element xmi:type="uml:Package" href="core.uml#_xtlE8ARAEd--t-uhRn9OBA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_mp1-ACnOEeGxrprK9wB9iA" type="4002" source="_lEz54CnOEeGxrprK9wB9iA" target="_j5-ecCnOEeGxrprK9wB9iA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_mp1-ASnOEeGxrprK9wB9iA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mp1-AinOEeGxrprK9wB9iA" points="[-50, -4, 105, 6]$[-136, -16, 19, -6]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mthkICnOEeGxrprK9wB9iA" id="(0.8137254901960784,0.3559322033898305)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0Tj8ACnOEeGxrprK9wB9iA" type="4002" source="_zNMJ0CnOEeGxrprK9wB9iA" target="_vBLcYCnOEeGxrprK9wB9iA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_0Tj8ASnOEeGxrprK9wB9iA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0Tj8AinOEeGxrprK9wB9iA" points="[-20, -6, 63, 16]$[-56, -25, 27, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0V4QMCnOEeGxrprK9wB9iA" id="(0.2,0.5166666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0V4QMSnOEeGxrprK9wB9iA" id="(0.8439306358381503,0.35)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_SZ63sCo0EeGxrprK9wB9iA" type="4010" source="_t6v_0CnOEeGxrprK9wB9iA" target="_RANSwCo0EeGxrprK9wB9iA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_SZ7ewCo0EeGxrprK9wB9iA" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SZ7ewSo0EeGxrprK9wB9iA" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SZ7ewio0EeGxrprK9wB9iA" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SZ7ewyo0EeGxrprK9wB9iA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_SZ63sSo0EeGxrprK9wB9iA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Dependency" href="core.uml#_SXkHQCo0EeGxrprK9wB9iA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SZ63sio0EeGxrprK9wB9iA" points="[19, -6, -74, 0]$[85, -6, -8, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sd71ACo0EeGxrprK9wB9iA" id="(0.963531669865643,0.32298136645962733)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sd71ASo0EeGxrprK9wB9iA" id="(0.16666666666666666,0.5084745762711864)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_OhgzgD8AEeGJ6KSvhYhYuQ" type="CompositeStructure" name="CallActivation" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_SgFh4D8AEeGJ6KSvhYhYuQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SgGI8D8AEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SgGI8T8AEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SgGI8j8AEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SgGI8z8AEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SgGI9D8AEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SgGI9T8AEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SgGI9j8AEeGJ6KSvhYhYuQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SgGI9z8AEeGJ6KSvhYhYuQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SgGI-D8AEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SgGI-T8AEeGJ6KSvhYhYuQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dcQ7kD8AEeGJ6KSvhYhYuQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dcSJsD8AEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dcSJsT8AEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dcSJsj8AEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dcSJsz8AEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dcSJtD8AEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dcSJtT8AEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ocoRsD8AEeGJ6KSvhYhYuQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o2fjMD8AEeGJ6KSvhYhYuQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o2fjMT8AEeGJ6KSvhYhYuQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o2fjMj8AEeGJ6KSvhYhYuQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o2fjMz8AEeGJ6KSvhYhYuQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o2fjND8AEeGJ6KSvhYhYuQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dcSJtj8AEeGJ6KSvhYhYuQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kA0sEFbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nFWNAFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dcSwwD8AEeGJ6KSvhYhYuQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dcSwwT8AEeGJ6KSvhYhYuQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dcSwwj8AEeGJ6KSvhYhYuQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dcRioD8AEeGJ6KSvhYhYuQ" x="-10" y="23"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dcSwwz8AEeGJ6KSvhYhYuQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dcTX0D8AEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dcTX0T8AEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dcTX0j8AEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dcTX0z8AEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dcTX1D8AEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dcTX1T8AEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_m_hagD8AEeGJ6KSvhYhYuQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ndPRQD8AEeGJ6KSvhYhYuQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ndP4UD8AEeGJ6KSvhYhYuQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ndP4UT8AEeGJ6KSvhYhYuQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ndP4Uj8AEeGJ6KSvhYhYuQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ndP4Uz8AEeGJ6KSvhYhYuQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dcTX1j8AEeGJ6KSvhYhYuQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kq-cUFbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nqWXgFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dcTX1z8AEeGJ6KSvhYhYuQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dcTX2D8AEeGJ6KSvhYhYuQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_dcTX2T8AEeGJ6KSvhYhYuQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dcSwxD8AEeGJ6KSvhYhYuQ" x="360" y="23"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_e6Y_EChYEd-eoo60eNyGlg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SgFh4T8AEeGJ6KSvhYhYuQ" x="117" y="99" width="370"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_S-NoUD8AEeGJ6KSvhYhYuQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-OPYD8AEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-OPYT8AEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-OPYj8AEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-OPYz8AEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-OPZD8AEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-OPZT8AEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S-O2cD8AEeGJ6KSvhYhYuQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S-O2cT8AEeGJ6KSvhYhYuQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S-O2cj8AEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-O2cz8AEeGJ6KSvhYhYuQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1JUC4D8EEeGJ6KSvhYhYuQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JUp8D8EEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JUp8T8EEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JUp8j8EEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JUp8z8EEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JVRAD8EEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JVRAT8EEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7SckUD8EEeGJ6KSvhYhYuQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1E6gcD_HEeGFNeu-9sDdyA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1E6gcT_HEeGFNeu-9sDdyA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1E6gcj_HEeGFNeu-9sDdyA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1E6gcz_HEeGFNeu-9sDdyA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1E7HgD_HEeGFNeu-9sDdyA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1JVRAj8EEeGJ6KSvhYhYuQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l3gg4FbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mBsXoFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1JVRAz8EEeGJ6KSvhYhYuQ" x="27" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1JVRBD8EEeGJ6KSvhYhYuQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1JVRBT8EEeGJ6KSvhYhYuQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_N0tB4Cu4Ed-uZPFNCty7PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1JUC4T8EEeGJ6KSvhYhYuQ" x="45" y="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1JVRBj8EEeGJ6KSvhYhYuQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JV4ED8EEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JV4ET8EEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JV4Ej8EEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JV4Ez8EEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JV4FD8EEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JV4FT8EEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wvweED_HEeGFNeu-9sDdyA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xWu-gD_HEeGFNeu-9sDdyA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xWu-gT_HEeGFNeu-9sDdyA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xWu-gj_HEeGFNeu-9sDdyA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xWu-gz_HEeGFNeu-9sDdyA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xWu-hD_HEeGFNeu-9sDdyA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1JV4Fj8EEeGJ6KSvhYhYuQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lQgyUFbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lXdH0FbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1JV4Fz8EEeGJ6KSvhYhYuQ" x="27" y="27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1JWfID8EEeGJ6KSvhYhYuQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1JWfIT8EEeGJ6KSvhYhYuQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1JVRBz8EEeGJ6KSvhYhYuQ" x="99" y="27"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1JWfIj8EEeGJ6KSvhYhYuQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JXGMD8EEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JXGMT8EEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JXGMj8EEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JXGMz8EEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1JXtQD8EEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1JXtQT8EEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uBA_4D_HEeGFNeu-9sDdyA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2z-qUD_HEeGFNeu-9sDdyA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2z-qUT_HEeGFNeu-9sDdyA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2z-qUj_HEeGFNeu-9sDdyA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2z_RYD_HEeGFNeu-9sDdyA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2z_RYT_HEeGFNeu-9sDdyA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1JXtQj8EEeGJ6KSvhYhYuQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jaFcMFbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mifXkFbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1JXtQz8EEeGJ6KSvhYhYuQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1JXtRD8EEeGJ6KSvhYhYuQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1JXtRT8EEeGJ6KSvhYhYuQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1JWfIz8EEeGJ6KSvhYhYuQ" x="-10" y="27"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_qgzokChYEd-eoo60eNyGlg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-NoUT8AEeGJ6KSvhYhYuQ" x="117" y="189" width="109" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TeWg8D8AEeGJ6KSvhYhYuQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TeWg8j8AEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TeXIAD8AEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TeXIAT8AEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TeXIAj8AEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TeXIAz8AEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TeXIBD8AEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TeXIBT8AEeGJ6KSvhYhYuQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_TeXIBj8AEeGJ6KSvhYhYuQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_TeXIBz8AEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TeXICD8AEeGJ6KSvhYhYuQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_2wMyEChiEd-eoo60eNyGlg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TeWg8T8AEeGJ6KSvhYhYuQ" x="252" y="189"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_T7ZpUD8AEeGJ6KSvhYhYuQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7aQYD8AEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7aQYT8AEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7aQYj8AEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7aQYz8AEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T7aQZD8AEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_T7aQZT8AEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_T7aQZj8AEeGJ6KSvhYhYuQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_T7aQZz8AEeGJ6KSvhYhYuQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_T7aQaD8AEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7aQaT8AEeGJ6KSvhYhYuQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_6rmQoChiEd-eoo60eNyGlg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T7ZpUT8AEeGJ6KSvhYhYuQ" x="387" y="189" width="95"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gXAOYD8AEeGJ6KSvhYhYuQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gXA1cD8AEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gXA1cT8AEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gXA1cj8AEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gXA1cz8AEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gXA1dD8AEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gXA1dT8AEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gXA1dj8AEeGJ6KSvhYhYuQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gXBcgD8AEeGJ6KSvhYhYuQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gXBcgT8AEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gXBcgj8AEeGJ6KSvhYhYuQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_KxQBELuXEd2TTr3gJIvazw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gXAOYT8AEeGJ6KSvhYhYuQ" x="117" y="18" width="370"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aCZK0D8CEeGJ6KSvhYhYuQ" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aCZx4D8CEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aCZx4T8CEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aCZx4j8CEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aCZx4z8CEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aCZx5D8CEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aCZx5T8CEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aCZx5j8CEeGJ6KSvhYhYuQ" type="5192"/>
+ <element xmi:type="uml:Comment" href="core.uml#_aAH58D8CEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aCZK0T8CEeGJ6KSvhYhYuQ" x="72" y="297" width="336" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jQ_BUD8CEeGJ6KSvhYhYuQ" type="2067" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jQ_BUj8CEeGJ6KSvhYhYuQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jQ_BUz8CEeGJ6KSvhYhYuQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jQ_oYD8CEeGJ6KSvhYhYuQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jQ_oYT8CEeGJ6KSvhYhYuQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jQ_oYj8CEeGJ6KSvhYhYuQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jQ_oYz8CEeGJ6KSvhYhYuQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jQ_oZD8CEeGJ6KSvhYhYuQ" type="5119"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jQ_oZT8CEeGJ6KSvhYhYuQ" type="7048">
+ <children xmi:type="notation:Shape" xmi:id="_XhHrcD8DEeGJ6KSvhYhYuQ" type="3066" fontName="" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="core.uml#_mzqd4D8CEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XhHrcT8DEeGJ6KSvhYhYuQ" x="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XhjwUD8DEeGJ6KSvhYhYuQ" type="3066" fontName="" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="core.uml#_qdIe8D8CEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XhjwUT8DEeGJ6KSvhYhYuQ" x="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XiAcQD8DEeGJ6KSvhYhYuQ" type="3066" fontName="" fontHeight="10" lineColor="0">
+ <element xmi:type="uml:EnumerationLiteral" href="core.uml#_rOMvgD8CEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XiAcQT8DEeGJ6KSvhYhYuQ" x="63"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jQ_oZj8CEeGJ6KSvhYhYuQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_jQ_oZz8CEeGJ6KSvhYhYuQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_jQ_oaD8CEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jQ_oaT8CEeGJ6KSvhYhYuQ"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="core.uml#_hcwDkD8CEeGJ6KSvhYhYuQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jQ_BUT8CEeGJ6KSvhYhYuQ" x="441" y="261" width="164"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_OhgzgT8AEeGJ6KSvhYhYuQ"/>
+ <element xmi:type="uml:Package" href="core.uml#_aQ7goChYEd-eoo60eNyGlg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_WFrvkD8AEeGJ6KSvhYhYuQ" type="4015" source="_S-NoUD8AEeGJ6KSvhYhYuQ" target="_SgFh4D8AEeGJ6KSvhYhYuQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_WFtkwD8AEeGJ6KSvhYhYuQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WFuL0D8AEeGJ6KSvhYhYuQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_WFrvkT8AEeGJ6KSvhYhYuQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_sW6OkChYEd-eoo60eNyGlg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WFrvkj8AEeGJ6KSvhYhYuQ" points="[-8, -29, 27, 101]$[-27, -100, 8, 30]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tiKoID8AEeGJ6KSvhYhYuQ" id="(0.15135135135135136,0.8813559322033898)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_XN1DYD8AEeGJ6KSvhYhYuQ" type="4015" source="_TeWg8D8AEeGJ6KSvhYhYuQ" target="_SgFh4D8AEeGJ6KSvhYhYuQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XN1qcD8AEeGJ6KSvhYhYuQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XN1qcT8AEeGJ6KSvhYhYuQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XN1DYT8AEeGJ6KSvhYhYuQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_5AKpkChiEd-eoo60eNyGlg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XN1DYj8AEeGJ6KSvhYhYuQ" points="[-7, -29, 37, 186]$[-38, -185, 6, 30]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_YLQU8D8AEeGJ6KSvhYhYuQ" type="4015" source="_T7ZpUD8AEeGJ6KSvhYhYuQ" target="_SgFh4D8AEeGJ6KSvhYhYuQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_YLQ8AD8AEeGJ6KSvhYhYuQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YLQ8AT8AEeGJ6KSvhYhYuQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_YLQU8T8AEeGJ6KSvhYhYuQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_892AEChiEd-eoo60eNyGlg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YLQU8j8AEeGJ6KSvhYhYuQ" points="[-2, -29, 15, 281]$[-16, -280, 1, 30]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vL-ekD8AEeGJ6KSvhYhYuQ" id="(0.8729729729729729,0.8983050847457628)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_gXiZ4D8AEeGJ6KSvhYhYuQ" type="4015" source="_SgFh4D8AEeGJ6KSvhYhYuQ" target="_gXAOYD8AEeGJ6KSvhYhYuQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_gXjA8D8AEeGJ6KSvhYhYuQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gXjA8T8AEeGJ6KSvhYhYuQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_gXiZ4T8AEeGJ6KSvhYhYuQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_oJX3IChYEd-eoo60eNyGlg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gXiZ4j8AEeGJ6KSvhYhYuQ" points="[-103, -29, 202, 58]$[-305, -87, 0, 0]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_DfG8kF7qEeGEmrrwB1vhPg" type="CompositeStructure" name="CompositeDiagram CallMultiplier" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_EYv6UF7qEeGEmrrwB1vhPg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EYwhYF7qEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EYwhYV7qEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EYwhYl7qEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EYwhY17qEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EYwhZF7qEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EYwhZV7qEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_c85eMF7tEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c86FQF7tEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c86FQV7tEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c86FQl7tEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c9de4F7tEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_c9de4V7tEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EYwhZl7qEeGEmrrwB1vhPg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EYwhZ17qEeGEmrrwB1vhPg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EYwhaF7qEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EYwhaV7qEeGEmrrwB1vhPg"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_KxQBELuXEd2TTr3gJIvazw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EYv6UV7qEeGEmrrwB1vhPg" x="135" y="72" width="154" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FWtXYF7qEeGEmrrwB1vhPg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FWtXYl7qEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FWtXY17qEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FWt-cF7qEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FWt-cV7qEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FWt-cl7qEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FWt-c17qEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XrOJMF7tEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XrOwQF7tEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XrOwQV7tEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XrOwQl7tEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XrOwQ17tEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XrOwRF7tEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FWt-dF7qEeGEmrrwB1vhPg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FWt-dV7qEeGEmrrwB1vhPg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FWt-dl7qEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FWt-d17qEeGEmrrwB1vhPg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_udKFYF7sEeGEmrrwB1vhPg" type="3069" fontName="Arial" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_udKFYl7sEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_udKFY17sEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_udKscF7sEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_udKscV7sEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_udKscl7sEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_udKsc17sEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_66tLMF7sEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7N-FcF7sEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7N-FcV7sEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7N-Fcl7sEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7N-Fc17sEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7N-FdF7sEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_udKsdF7sEeGEmrrwB1vhPg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fcEHcFbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PQ7DkFeJEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_udKsdV7sEeGEmrrwB1vhPg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_udKsdl7sEeGEmrrwB1vhPg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_udKsd17sEeGEmrrwB1vhPg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_udKFYV7sEeGEmrrwB1vhPg" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_udLTgF7sEeGEmrrwB1vhPg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_udLTgl7sEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_udLTg17sEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_udLThF7sEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_udLThV7sEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_udL6kF7sEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_udL6kV7sEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3KisQF7sEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3gixcF7sEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3gjYgF7sEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3gjYgV7sEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3gjYgl7sEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3gjYg17sEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_udL6kl7sEeGEmrrwB1vhPg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f-9ZIFbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f-9ZIVbDEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="30"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_udL6k17sEeGEmrrwB1vhPg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_udL6lF7sEeGEmrrwB1vhPg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_udL6lV7sEeGEmrrwB1vhPg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_udLTgV7sEeGEmrrwB1vhPg" x="144" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_Whe8EClYEd-eoo60eNyGlg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FWtXYV7qEeGEmrrwB1vhPg" x="135" y="198" width="154" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_b3o7wF7sEeGEmrrwB1vhPg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b3pi0F7sEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b3pi0V7sEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b3pi0l7sEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b3pi017sEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b3pi1F7sEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b3pi1V7sEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bkoqwF7tEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bkoqwV7tEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bkoqwl7tEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bkoqw17tEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bkoqxF7tEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bkoqxV7tEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_b3pi1l7sEeGEmrrwB1vhPg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_b3pi117sEeGEmrrwB1vhPg" type="7073">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z3t18F7tEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z3udAF7tEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z3udAV7tEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z3udAl7tEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z3udA17tEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z3udBF7tEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_b3pi2F7sEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b3pi2V7sEeGEmrrwB1vhPg"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_TLShkF7qEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b3o7wV7sEeGEmrrwB1vhPg" x="423" y="71" width="154" height="65"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ck0K0F7sEeGEmrrwB1vhPg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ck0x4F7sEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ck0x4V7sEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ck0x4l7sEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ck0x417sEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ck0x5F7sEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ck0x5V7sEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UBwvMF7tEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UBwvMV7tEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UBxWQF7tEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UBxWQV7tEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UBxWQl7tEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UBxWQ17tEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ck0x5l7sEeGEmrrwB1vhPg" type="5156">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VCInEF7tEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WxsgMF7tEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WxsgMV7tEeGEmrrwB1vhPg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WxsgMl7tEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WxsgM17tEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WxsgNF7tEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ck0x517sEeGEmrrwB1vhPg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ck0x6F7sEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ck0x6V7sEeGEmrrwB1vhPg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qrnGYF7sEeGEmrrwB1vhPg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qrntcF7sEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qrntcV7sEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qrntcl7sEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qrntc17sEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qroUgF7sEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qroUgV7sEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zr6CMF7sEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0HjcYF7sEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0HjcYV7sEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0HkDcF7sEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0HkDcV7sEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0HkDcl7sEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qroUgl7sEeGEmrrwB1vhPg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ds_9kFbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QJj7wFeJEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qroUg17sEeGEmrrwB1vhPg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qroUhF7sEeGEmrrwB1vhPg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qroUhV7sEeGEmrrwB1vhPg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_0KY1UF7pEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qrnGYV7sEeGEmrrwB1vhPg" x="147" y="38"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qroUhl7sEeGEmrrwB1vhPg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qro7kF7sEeGEmrrwB1vhPg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qro7kV7sEeGEmrrwB1vhPg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qro7kl7sEeGEmrrwB1vhPg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qro7k17sEeGEmrrwB1vhPg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qro7lF7sEeGEmrrwB1vhPg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qro7lV7sEeGEmrrwB1vhPg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1PKksF7sEeGEmrrwB1vhPg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1vGpAF7sEeGEmrrwB1vhPg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1vGpAV7sEeGEmrrwB1vhPg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1vGpAl7sEeGEmrrwB1vhPg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1vGpA17sEeGEmrrwB1vhPg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1vGpBF7sEeGEmrrwB1vhPg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qro7ll7sEeGEmrrwB1vhPg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dHyXsFbDEeKxltxu9uR4dg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PvAGsFeJEeKxltxu9uR4dg" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qro7l17sEeGEmrrwB1vhPg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qro7mF7sEeGEmrrwB1vhPg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qro7mV7sEeGEmrrwB1vhPg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qroUh17sEeGEmrrwB1vhPg" x="-10" y="38"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_Mo2kwF7pEeGEmrrwB1vhPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ck0K0V7sEeGEmrrwB1vhPg" x="420" y="196" width="157" height="66"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_DfG8kV7qEeGEmrrwB1vhPg"/>
+ <element xmi:type="uml:Package" href="core.uml#_ZISNcIQzEd2_fLv04swWfw"/>
+ <edges xmi:type="notation:Connector" xmi:id="_GsuIEF7qEeGEmrrwB1vhPg" type="4015" source="_FWtXYF7qEeGEmrrwB1vhPg" target="_EYv6UF7qEeGEmrrwB1vhPg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_GsvWMF7qEeGEmrrwB1vhPg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GsvWMV7qEeGEmrrwB1vhPg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_GsuIEV7qEeGEmrrwB1vhPg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_lYOSkClzEd-eoo60eNyGlg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GsuIEl7qEeGEmrrwB1vhPg" points="[-4, -29, 13, 99]$[-13, -98, 4, 30]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_eJ55UF7sEeGEmrrwB1vhPg" type="4015" source="_ck0K0F7sEeGEmrrwB1vhPg" target="_b3o7wF7sEeGEmrrwB1vhPg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_eJ6gYF7sEeGEmrrwB1vhPg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eJ6gYV7sEeGEmrrwB1vhPg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_eJ55UV7sEeGEmrrwB1vhPg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="core.uml#_eJqowF7sEeGEmrrwB1vhPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eJ55Ul7sEeGEmrrwB1vhPg" points="[-9, -10, -7, 96]$[-9, -76, -7, 30]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eKfIIF7sEeGEmrrwB1vhPg" id="(0.504424778761062,0.1694915254237288)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml
new file mode 100644
index 00000000000..219998941ed
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml
@@ -0,0 +1,1503 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:l2="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="core" viewpoint="">
+ <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_clzbsC3xEd6OqY3qskOtLQ">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/sysinterfaces.uml#_RodVAAweEd6it_RkGhz_AA"/>
+ </packageImport>
+ <packageImport xmi:id="_hWGaIF9CEd6vU6EJjexEKQ">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packageImport xmi:id="_K9IBUP-FEd6628OhKk_dpg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_DV8nkBv8EduZN5aJJITI5w"/>
+ </packageImport>
+ <packageImport xmi:id="_mXnzUPQdEeCIC-7tA9lfzA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/osal.uml#_ROTQYC-OEdySSa8YESkO2w"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_TFq8cOy6Ed2UrumbR9YAVg" name="composites">
+ <packagedElement xmi:type="uml:Class" xmi:id="_WK3LwOy6Ed2UrumbR9YAVg" name="Composite">
+ <ownedComment xmi:id="_IiLnAMFjEd-Mveea1W_olA">
+ <body>currently unused, not sure whether really needed</body>
+ </ownedComment>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2JtG8Oy6Ed2UrumbR9YAVg" name="b:createConnections" visibility="package" specification="_wlXUoOy6Ed2UrumbR9YAVg">
+ <language>C/C++</language>
+ <body>[template (clazz: Class)]
+/* --- create internal connections --- */
+[for (connector : Connector | clazz.getOwnedConnectors())]%>
+ [comment call createConnection (this = connector instance) define in utils /]
+ // connector [connector.name/]
+ [createConnection(connector)/]
+[/for]
+[/template]</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_D83p8Oy9Ed2UrumbR9YAVg" name="b:setup" specification="_BTEWIOy9Ed2UrumbR9YAVg">
+ <language>C/C++</language>
+ <body>[template (clazz: Class)]
+// createParts
+// assign implementations fixed at component design time
+[for (Property part | clazz.part)]
+ [if (type.isImplementation)]
+ [part.name/] = &amp;m_[part.name/]_impl;
+ [/if]
+[/for]
+
+// assign implementation fixed at deployment time
+[for (Property part | clazz.part)]
+ [if (type.isImplementation)]
+m_[part.name/] = [part.name/]
+ [/if]
+[/for]
+[/template]</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_wlXUoOy6Ed2UrumbR9YAVg" name="createConnections" method="_2JtG8Oy6Ed2UrumbR9YAVg"/>
+ <ownedOperation xmi:id="_BTEWIOy9Ed2UrumbR9YAVg" name="setup" method="_D83p8Oy9Ed2UrumbR9YAVg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1RehUAGpEd6eR-dxi5su4Q" name="BootLoader">
+ <ownedComment xmi:id="_JMwYwMGJEd-Mveea1W_olA">
+ <body>A template for the bootloader generation.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_JM4UkMGJEd-Mveea1W_olA">
+ <body>This C++ implementation of the template contains principally the definition of the
+&quot;main&quot; function and the declaration of the bootloader instance</body>
+ </ownedComment>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AFnZUAGqEd6eR-dxi5su4Q" name="b:createInstances" specification="_3kwykAGpEd6eR-dxi5su4Q">
+ <language>C/C++</language>
+ <body>&lt;%createInstances%></body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IbrFUAGqEd6eR-dxi5su4Q" name="b:main" specification="_6pkAUAGpEd6eR-dxi5su4Q"/>
+ <ownedOperation xmi:id="_3kwykAGpEd6eR-dxi5su4Q" name="createInstances" method="_AFnZUAGqEd6eR-dxi5su4Q"/>
+ <ownedOperation xmi:id="_6pkAUAGpEd6eR-dxi5su4Q" name="main" isStatic="true" method="_IbrFUAGqEd6eR-dxi5su4Q"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_mMCK8PiPEd2UhpY2Y3WUyg" name="methodCall">
+ <ownedComment xmi:id="_WiuBUK8rEeCXIcykFPsB8Q" annotatedElement="_mMCK8PiPEd2UhpY2Y3WUyg">
+ <body>Main package template for all call based connectors. The formal parameter is the interface I (which is bound to the actual interface used in a call).
+This package is virtually extended by other model libraries who import it.</body>
+ </ownedComment>
+ <ownedComment xmi:id="__oxUADrVEeGMCcwsbpLuFA" annotatedElement="_j29X4NttEd2eM5kqcby5ZA">
+ <body>Inheritance hierarchy for (A)SyncCall component types. Separate types for required (rconn) and provided (fconn) ports enable re-use via inheritance ain multiple places (e.g. for AMI ports that use an unmodified provided port and different variants of a required port).
+Note that ports on connector side are conjugated</body>
+ </ownedComment>
+ <ownedTemplateSignature xmi:id="_V0b2APfBEd2TbIfwytOyPA" parameter="_WzWVUPfBEd2TbIfwytOyPA">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_WzWVUPfBEd2TbIfwytOyPA" parameteredElement="_ZzlzMPfBEd2TbIfwytOyPA">
+ <ownedParameteredElement xmi:type="uml:Interface" xmi:id="_ZzlzMPfBEd2TbIfwytOyPA" name="I" templateParameter="_WzWVUPfBEd2TbIfwytOyPA"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <packagedElement xmi:type="uml:Package" xmi:id="_ZISNcIQzEd2_fLv04swWfw" name="AsyncCall">
+ <packagedElement xmi:type="uml:Class" xmi:id="_KxQBELuXEd2TTr3gJIvazw" name="AsyncCall" isAbstract="true">
+ <generalization xmi:id="_0KzSsDBEEd6V16eboHV1gw" general="_j29X4NttEd2eM5kqcby5ZA"/>
+ <generalization xmi:id="_1H2JwDBEEd6V16eboHV1gw" general="_mIpj8Ns8Ed2eM5kqcby5ZA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Whe8EClYEd-eoo60eNyGlg" clientDependency="_nBpugClzEd-eoo60eNyGlg" name="AsyncCall_impl">
+ <ownedComment xmi:id="_sp9YYG5fEd-5CZIeuHpHAg">
+ <body>Description: A simple implementation of asynchronous calls. It will execution requests by means of a single dispatcher thread</body>
+ </ownedComment>
+ <ownedComment xmi:id="_HMz-ADJKEeCAhMtIsY9HwA">
+ <body>Simple asynchronous call implementation: returns immediately and executes request in new thread</body>
+ </ownedComment>
+ <ownedComment xmi:id="_bustsDJKEeCAhMtIsY9HwA">
+ <body>Uses buffer and ASN marshalling.
+TODO: configurable buffer size, use data structure (CppParameterStorage)</body>
+ </ownedComment>
+ <generalization xmi:id="_lYOSkClzEd-eoo60eNyGlg" general="_KxQBELuXEd2TTr3gJIvazw"/>
+ <ownedAttribute xmi:id="_1XeLIED5Ed-_DOja_sRgWA" name="buffer" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8wC7MED5Ed-_DOja_sRgWA" value="500"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8wLeEED5Ed-_DOja_sRgWA" value="500"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_2fcqYED6Ed-_DOja_sRgWA" name="pBuffer" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_nBpugClzEd-eoo60eNyGlg" name="derived realization of I" client="_Whe8EClYEd-eoo60eNyGlg" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WhfjIilYEd-eoo60eNyGlg" name="[name/]" specification="_2bwsEClzEd-eoo60eNyGlg">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public op(operation : Operation)]
+// TODO: need suitable constant dimensioning
+pBuffer = &amp;buffer['['/]500[']'/]; // grows backwards
+int operationID = ID_[operation.name/];
+
+// now marshall in and inout parameters via ASN.1
+[for (parameter : Parameter | operation.parametersInInout())]
+{
+ [parameter.type.cppType()/] varName_ASN = [parameter.name/];
+ BEncAsnContent (&amp;pBuffer, &amp;varName_ASN);
+}
+[/for]
+BEncAsnContent (&amp;pBuffer, &amp;operationID);
+
+pthread_t pt;
+pthread_create (&amp;pt, NULL, staticDispatch, (void *) this);
+// TODO: add semaphore which assures that subsequent calls to [operation.name/] are not executed before dispatch
+// has removed the parameters from the pBuffer stack (pBuffer can be corrupted).
+[/template]</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WhfjIylYEd-eoo60eNyGlg" name="static[name/]" specification="_WhfjJSlYEd-eoo60eNyGlg">
+ <language>C/C++</language>
+ <body>((AsyncCall_impl *) arg)->dispatch ();
+return NULL;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_nV2DcED5Ed-_DOja_sRgWA" name="dispatch" specification="_G6LzAD3QEd-Bk-AHd6yyoA">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public dispatch(clazz : Class)]
+int operationID;
+BDecAsnContent (&amp;pBuffer, operationID);
+switch (operationID)
+{
+[for (operation : Operation | clazz.ownedOperation)]
+ case ID_[operation.name/]
+ {
+ [for (parameter : Parameter | operation.parametersInInout()->reverse())]
+ [parameter.type.cppType()/] [parameter.name/]
+ {
+ [parameter.type.cppType()/] varName_ASN;
+ BDecAsnContent (&amp;pBuffer, &amp;varName_ASN);
+ [parameter.name/] = varName_ASN;
+ }
+ [/for]
+ // delegate call to executor
+ rconn->[operation.cppCall()/];
+ break;
+ }
+[/for]
+}
+[/template]</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_WhfjJSlYEd-eoo60eNyGlg" name="staticDispatch" isStatic="true" method="_WhfjIylYEd-eoo60eNyGlg">
+ <ownedParameter xmi:id="_WhfjJilYEd-eoo60eNyGlg" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WhfjKClYEd-eoo60eNyGlg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WhfjJylYEd-eoo60eNyGlg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WhfjKSlYEd-eoo60eNyGlg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WhfjKilYEd-eoo60eNyGlg" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_2bwsEClzEd-eoo60eNyGlg" name="[name/]" method="_WhfjIilYEd-eoo60eNyGlg"/>
+ <ownedOperation xmi:id="_G6LzAD3QEd-Bk-AHd6yyoA" name="dispatch" method="_nV2DcED5Ed-_DOja_sRgWA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_pXzKcEJ1Ed-Ps4Bfh0j9LQ" clientDependency="_pXzxh0J1Ed-Ps4Bfh0j9LQ" name="AsyncCallPool_impl">
+ <ownedComment xmi:id="_spsPMDJKEeCAhMtIsY9HwA">
+ <body>(untested) implementation of an asynchronous invocation that uses a thread pool for
+spawning new requests</body>
+ </ownedComment>
+ <generalization xmi:id="_pXzKcUJ1Ed-Ps4Bfh0j9LQ" general="_KxQBELuXEd2TTr3gJIvazw"/>
+ <ownedAttribute xmi:id="_pXzxgEJ1Ed-Ps4Bfh0j9LQ" name="buffer" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pXzxgkJ1Ed-Ps4Bfh0j9LQ" value="500"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pXzxgUJ1Ed-Ps4Bfh0j9LQ" value="500"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_pXzxg0J1Ed-Ps4Bfh0j9LQ" name="pBuffer" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_pXzxh0J1Ed-Ps4Bfh0j9LQ" name="derived realization of I" client="_pXzKcEJ1Ed-Ps4Bfh0j9LQ" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pXzxhEJ1Ed-Ps4Bfh0j9LQ" name="[name/]" specification="_pXzxjkJ1Ed-Ps4Bfh0j9LQ">
+ <language>C/C++</language>
+ <body>[template marshall(operation: Operation)]
+// TODO: need suitable constant dimensioning
+pBuffer = &amp;buffer[500]; // grows backwards
+int operationID = ID_[operation.name/];
+
+// now marshall in and inout parameters via ASN.1
+for (parameter : Parameter | parametersInInout(operation)]
+{
+ [cppType(parameter.type)/] varName_ASN = [parameter.name/];
+ BEncAsnContent (&amp;pBuffer, &amp;varName_ASN);
+}
+[/for]
+BEncAsnContent (&amp;pBuffer, &amp;operationID);
+
+// find associated thread and signal its semaphore
+// pass &quot;this&quot; to access buffer
+// pthread_t pt;
+// pthread_create (&amp;pt, NULL, staticDispatch, (void *) this);
+// TODO: add semaphore which assures that 2 snd calls to [operation.name/] is not done before dispatch
+// is executed
+[/template]
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pXzxhUJ1Ed-Ps4Bfh0j9LQ" name="static[name/]" specification="_pXzxiEJ1Ed-Ps4Bfh0j9LQ">
+ <language>C/C++</language>
+ <body>((AsyncCall_impl *) arg)->dispatch ();
+return NULL;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pXzxhkJ1Ed-Ps4Bfh0j9LQ" name="dispatch" specification="_pXzxj0J1Ed-Ps4Bfh0j9LQ">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public dispatch(clazz : Class)]
+int operationID;
+BDecAsnContent (&amp;pBuffer, operationID);
+switch (operationID)
+{
+[for (operation : Operation | clazz.ownedOperation)]
+ case ID_[operation.name/]
+ {
+ [for (parameter : Parameter | operation.parametersInInout()->reverse())]
+ [parameter.type.cppType()/] [parameter.name/]
+ {
+ [cppType(parameter.type)/] varName_ASN;
+ BDecAsnContent (&amp;pBuffer, &amp;varName_ASN);
+ [parameter.name/] = varName_ASN;
+ }
+ [/for]
+ // delegate call to executor
+ [if (not (type = null))] [operation.type.cppType()/] ret = [/if]rconn->[operation.cppCall()/];
+ [for (parameter : Parameter | operation.parametersOutInout())]
+ {
+ [parameter.type.cppType()/] varName_ASN = [parameter.name/];
+ BEncAsnContent (&amp;pBuffer, &amp;varName_ASN);
+ }
+ [/for]
+ resultsReady = 1;
+ break;
+ }
+[/for]
+}
+[/template]
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_pXzxiEJ1Ed-Ps4Bfh0j9LQ" name="staticDispatch" isStatic="true" method="_pXzxhUJ1Ed-Ps4Bfh0j9LQ">
+ <ownedParameter xmi:id="_pXzxiUJ1Ed-Ps4Bfh0j9LQ" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pXzxi0J1Ed-Ps4Bfh0j9LQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pXzxikJ1Ed-Ps4Bfh0j9LQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pXzxjEJ1Ed-Ps4Bfh0j9LQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_pXzxjUJ1Ed-Ps4Bfh0j9LQ" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_pXzxjkJ1Ed-Ps4Bfh0j9LQ" name="[name/]" method="_pXzxhEJ1Ed-Ps4Bfh0j9LQ"/>
+ <ownedOperation xmi:id="_pXzxj0J1Ed-Ps4Bfh0j9LQ" name="dispatch" method="_pXzxhkJ1Ed-Ps4Bfh0j9LQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3itBkNdwEd-ZnqCk2P2ZKg" clientDependency="_3itBmtdwEd-ZnqCk2P2ZKg" name="AMIPollCall_impl">
+ <ownedComment xmi:id="_3itBkddwEd-ZnqCk2P2ZKg">
+ <body>Description: A simple implementation of asynchronous calls. It will execution requests by means of a single dispatcher thread</body>
+ </ownedComment>
+ <ownedComment xmi:id="_lEC3ADJLEeCAhMtIsY9HwA">
+ <body>Polling variant of corbas asynchronous messaging (AMI), enables asynchronous calls while reading
+return values (also called deferred synchronous):
+Instead of specified return values, functions return a poller object which may be queried for
+the result.
+TODO: complete, move into model of Qompass AMI plugin</body>
+ </ownedComment>
+ <generalization xmi:id="_3itBktdwEd-ZnqCk2P2ZKg" general="_KxQBELuXEd2TTr3gJIvazw"/>
+ <ownedAttribute xmi:id="_3itBk9dwEd-ZnqCk2P2ZKg" name="buffer" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3itBlddwEd-ZnqCk2P2ZKg" value="500"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3itBlNdwEd-ZnqCk2P2ZKg" value="500"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3itBltdwEd-ZnqCk2P2ZKg" name="pBuffer" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_3itBmtdwEd-ZnqCk2P2ZKg" name="derived realization of I" client="_3itBkNdwEd-ZnqCk2P2ZKg" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3itBl9dwEd-ZnqCk2P2ZKg" name="[name/]" specification="_3itBoddwEd-ZnqCk2P2ZKg">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public marshall(operation : Operation)]
+[if (operation.name.oclAsType(String).endsWith('Poll'))]
+[comment polling function/]
+if (!resultArrived) {
+ // wait for result, condition will be fired upon arrival
+ TimeVal timeVal = TimeVal::current () + timeout;
+ m_cond.waitUpto (timeout);
+}
+ [for (parameter : Parameter | operation.parametersInInout()->reverse())]
+ [parameter.type.cppType()/] [parameter.name/];
+ {
+ [parameter.type.cppType()/] varName_ASN;
+ BDecAsnContent (&amp;pBuffer, &amp;varName_ASN);
+ [parameter.name/] = varName_ASN;
+ }
+ [/for]
+}
+[if (not (type = null))]return retValue;[/if]
+[else]
+// TODO: need suitable constant dimensioning
+pBuffer = &amp;buffer['['/]500[']'/]; // grows backwards
+int operationID = ID_[operation.name/];
+
+// now marshall in and inout parameters via ASN.1
+[for (parameter : Parameter | operation.parametersInInout())]
+ [parameter.type.cppType()/] [parameter.name/];
+ {
+ [parameter.type.cppType()/] varName_ASN = [parameter.name/];
+ BEncAsnContent (&amp;pBuffer, &amp;varName_ASN);
+ }
+[/for]
+BEncAsnContent (&amp;pBuffer, &amp;operationID);
+
+pthread_t pt;
+pthread_create (&amp;pt, NULL, staticDispatch, (void *) this);
+// TODO: add semaphore which assures that subsequent calls to [operation.name/] are not executed before dispatch
+// has removed the parameters from the pBuffer stack (pBuffer can be corrupted).
+// even worse: buffer will be deallocated even without a 2nd call!
+[/if]
+[/template]</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3itBmNdwEd-ZnqCk2P2ZKg" name="static[name/]" specification="_3itBm9dwEd-ZnqCk2P2ZKg">
+ <language>C/C++</language>
+ <body>((AsyncCall_impl *) arg)->dispatch ();
+return NULL;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3itBmddwEd-ZnqCk2P2ZKg" name="dispatch" specification="_3itBotdwEd-ZnqCk2P2ZKg">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public dispatch(clazz : Class)]
+int operationID;
+BDecAsnContent (&amp;pBuffer, operationID);
+switch (operationID)
+{
+[for (operation : Operation | clazz.ownedOperation)]
+ case ID_[operation.name/]
+ {
+ [for (parameter : Parameter | operation.parametersInInout()->reverse())]
+ [parameter.type.cppType()/] [parameter.name/]
+ {
+ [cppType(parameter.type)/] varName_ASN;
+ BDecAsnContent (&amp;pBuffer, &amp;varName_ASN);
+ [parameter.name/] = varName_ASN;
+ }
+ [/for]
+ // delegate call to executor
+ [if (not (type = null))] [operation.type.cppType()/] ret = [/if]rconn->[operation.cppCall()/];
+ [for (parameter : Parameter | operation.parametersOutInout())]
+ {
+ [parameter.type.cppType()/] varName_ASN = [parameter.name/];
+ BEncAsnContent (&amp;pBuffer, &amp;varName_ASN);
+ }
+ [/for]
+ resultsReady = 1;
+ break;
+ }
+[/for]
+}
+[/template]
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_3itBm9dwEd-ZnqCk2P2ZKg" name="staticDispatch" isStatic="true" method="_3itBmNdwEd-ZnqCk2P2ZKg">
+ <ownedParameter xmi:id="_3itBnNdwEd-ZnqCk2P2ZKg" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3itBntdwEd-ZnqCk2P2ZKg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3itBnddwEd-ZnqCk2P2ZKg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3itBn9dwEd-ZnqCk2P2ZKg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3itBoNdwEd-ZnqCk2P2ZKg" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3itBoddwEd-ZnqCk2P2ZKg" name="[name/]" method="_3itBl9dwEd-ZnqCk2P2ZKg"/>
+ <ownedOperation xmi:id="_3itBotdwEd-ZnqCk2P2ZKg" name="dispatch" method="_3itBmddwEd-ZnqCk2P2ZKg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Mo2kwF7pEeGEmrrwB1vhPg" clientDependency="_8e_ocF7sEeGEmrrwB1vhPg" name="CallMultiplier_impl">
+ <generalization xmi:id="_eJqowF7sEeGEmrrwB1vhPg" general="_TLShkF7qEeGEmrrwB1vhPg"/>
+ <interfaceRealization xmi:id="_8e_ocF7sEeGEmrrwB1vhPg" name="derived realization of I" client="_Mo2kwF7pEeGEmrrwB1vhPg" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DmUQcF7tEeGEmrrwB1vhPg" name="operation1" specification="_ChD4kF7tEeGEmrrwB1vhPg">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public multiply(operation : Operation)]
+for (int i=0; i&lt;9; i++) {
+ if (rconn['['/]i[']'/] != 0) {
+ rconn['['/]i[']'/]->[operation.cppCall()/];
+ }
+}
+[/template]</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_ChD4kF7tEeGEmrrwB1vhPg" name="[name/]" method="_DmUQcF7tEeGEmrrwB1vhPg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TLShkF7qEeGEmrrwB1vhPg" name="AsyncCallM" isAbstract="true">
+ <generalization xmi:id="_WhUpQF7qEeGEmrrwB1vhPg" general="_0KYOQF7pEeGEmrrwB1vhPg"/>
+ <generalization xmi:id="_XgUoIF7qEeGEmrrwB1vhPg" general="_j29X4NttEd2eM5kqcby5ZA"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_2oxDIPiPEd2UhpY2Y3WUyg" name="OperationIDs">
+ <ownedLiteral xmi:id="_KOvHsPiREd2UhpY2Y3WUyg" name="ID_[name/]"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_j29X4NttEd2eM5kqcby5ZA" name="OPC_useI" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_P4xVsNtuEd2eM5kqcby5ZA" name="fconn" type="_ZzlzMPfBEd2TbIfwytOyPA" aggregation="composite"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_mIpj8Ns8Ed2eM5kqcby5ZA" name="OPC_provideI" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_Qk0jYNtuEd2eM5kqcby5ZA" name="rconn" visibility="public" type="_ZzlzMPfBEd2TbIfwytOyPA" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rftH8ENwEeGoAtSeIK7WLg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rfxZYENwEeGoAtSeIK7WLg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rf3gAENwEeGoAtSeIK7WLg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_gKMTIAytEd6it_RkGhz_AA" name="marshalling">
+ <ownedComment xmi:id="_9gpvcENxEeGoAtSeIK7WLg">
+ <body>Needs completion:
+good(?) write buffer event?
+Call operations of buffer component?
+[could have done in an identical way for EventPool]</body>
+ </ownedComment>
+ <ownedComment xmi:id="_pk4cMEN_EeGfhclnRyNzoA">
+ <body>Marshalling is done at two levels:
+(1) In case of a shared address space, only a callEvent is created. It can be passed between threads within a process.
+(2) For remote communication, marshalling into a buffer is done.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_b_yh4AzyEd6it_RkGhz_AA" name="Marshall" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_rSCxUAytEd6it_RkGhz_AA" name="disp" visibility="public" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_7TuzoCUUEd6YR-YzyVnLng"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HZg9YPQSEeCovO8AYZymZQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HaX5APQSEeCovO8AYZymZQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Hfsd4PQSEeCovO8AYZymZQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_MhH6cENxEeGoAtSeIK7WLg" name="in" visibility="public" type="_WkkjoPNUEeCovO8AYZymZQ" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QR4PQENxEeGoAtSeIK7WLg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QR5dYENxEeGoAtSeIK7WLg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_fmF6MAzyEd6it_RkGhz_AA" name="Unmarshall" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_r5Va0AytEd6it_RkGhz_AA" name="disp" visibility="public" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_7TuzoCUUEd6YR-YzyVnLng"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WNWcQEN-EeGfhclnRyNzoA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WNY4gEN-EeGfhclnRyNzoA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WNe_IEN-EeGfhclnRyNzoA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_Zd558ENxEeGoAtSeIK7WLg" name="out" visibility="public" type="_WkkjoPNUEeCovO8AYZymZQ" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aPDDAENxEeGoAtSeIK7WLg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aPERIENxEeGoAtSeIK7WLg" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fPpr0K-jEd6DndT7kDY1-A" name="b:dispatch">
+ <specification xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#__aGzICUUEd6YR-YzyVnLng"/>
+ </ownedBehavior>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__uJRYPNGEeCovO8AYZymZQ" name="StructBased">
+ <generalization xmi:id="_EWShMPNHEeCovO8AYZymZQ" general="_b_yh4AzyEd6it_RkGhz_AA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qRJc8PNJEeCovO8AYZymZQ" name="[name/]" specification="_aGt1sPNJEeCovO8AYZymZQ">
+ <language>C/C++</language>
+ <body>[template marshallStruct(operation : Operation)]
+struct ParamData {
+[for (parameter : Parameter | parametersInInout(operation))]
+ int [cppType(name)/];
+[/for]
+};
+Event event;
+event.ID = [operation.name/];
+event.kind = CallEvent;
+ParamData * data = &amp;event.params;
+[for (parameter : Parameter | parametersInInout(operation))]
+ data->[parameter.name/] = [parameter.name/];
+[/for]
+out->dispatch(event);</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_aGt1sPNJEeCovO8AYZymZQ" name="[name/]" method="_qRJc8PNJEeCovO8AYZymZQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_u7MmIENqEeGoAtSeIK7WLg" name="ToCallEvent">
+ <generalization xmi:id="_K088oF_rEd6RvK-1A151zQ" general="_j29X4NttEd2eM5kqcby5ZA"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_-nk_cENqEeGoAtSeIK7WLg" name="out" visibility="public" type="_WkkjoPNUEeCovO8AYZymZQ" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AdVAIENrEeGoAtSeIK7WLg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AdW1UENrEeGoAtSeIK7WLg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Adf_QENrEeGoAtSeIK7WLg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1xGG8ENqEeGoAtSeIK7WLg" name="FromCallEventWP">
+ <generalization xmi:id="_M09FgF_rEd6RvK-1A151zQ" general="_mIpj8Ns8Ed2eM5kqcby5ZA"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_9gIc8ENvEeGoAtSeIK7WLg" name="in" visibility="public" type="_WkkjoPNUEeCovO8AYZymZQ" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9uDkMENvEeGoAtSeIK7WLg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9uEyUENvEeGoAtSeIK7WLg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_H7IOcENrEeGoAtSeIK7WLg" name="ToCallEventWP">
+ <generalization xmi:id="_KHmGAENrEeGoAtSeIK7WLg" general="_j29X4NttEd2eM5kqcby5ZA"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_i5SOQEN8EeGfhclnRyNzoA" name="out" visibility="public" type="_WkkjoPNUEeCovO8AYZymZQ" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jRB_4EN8EeGfhclnRyNzoA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jRtVUEN8EeGfhclnRyNzoA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_RjvvcA1jEd6tvthBDl600Q" name="SyncCall">
+ <packagedElement xmi:type="uml:Class" xmi:id="_Zx2ZUA1jEd6tvthBDl600Q" name="SyncCall" isAbstract="true">
+ <generalization xmi:id="_STdvYDBFEd6V16eboHV1gw" general="_j29X4NttEd2eM5kqcby5ZA"/>
+ <generalization xmi:id="_T1zr4DBFEd6V16eboHV1gw" general="_mIpj8Ns8Ed2eM5kqcby5ZA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jOU60A1jEd6tvthBDl600Q" clientDependency="_1tfFAJyCEd6WR4pSVO_UYw" name="DirectCall_impl">
+ <ownedComment xmi:id="_MgKU8G5gEd-5CZIeuHpHAg">
+ <body>Description: This connector is a kind of dummy connector, since it only passes incoming requests to its caller port</body>
+ </ownedComment>
+ <ownedComment xmi:id="_0fC3UDJJEeCAhMtIsY9HwA">
+ <body>Minimal connector implementation that does nothing (but passing requests)</body>
+ </ownedComment>
+ <ownedComment xmi:id="_0fOdgDJJEeCAhMtIsY9HwA">
+ <body></body>
+ </ownedComment>
+ <generalization xmi:id="_lm4GkA1jEd6tvthBDl600Q" general="_Zx2ZUA1jEd6tvthBDl600Q"/>
+ <interfaceRealization xmi:id="_1tfFAJyCEd6WR4pSVO_UYw" name="derived realization of I" client="_jOU60A1jEd6tvthBDl600Q" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GSdesJ09Ed6l5bTPBsl00Q" name="[name/]" specification="__y0hwJ08Ed6l5bTPBsl00Q">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public methodCall(operation : Operation)]
+// put pre-interceptors here
+[comment type is a derived property containing the operations return type/]
+[if not (operation.type = null)]return [/if]rconn->[operation.cppCall()/];
+// put post-interceptors here
+[/template]</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="__y0hwJ08Ed6l5bTPBsl00Q" name="[name/]" method="_GSdesJ09Ed6l5bTPBsl00Q"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_UAIU0K-iEd6DndT7kDY1-A" name="AdaptiveContainerServices">
+ <packagedElement xmi:type="uml:Class" xmi:id="_cxVEsK-iEd6DndT7kDY1-A" clientDependency="_v-oAAK-iEd6DndT7kDY1-A" name="SampleInterceptor">
+ <generalization xmi:id="_lrS8oAQxEd--t-uhRn9OBA" general="_Zx2ZUA1jEd6tvthBDl600Q"/>
+ <interfaceRealization xmi:id="_v-oAAK-iEd6DndT7kDY1-A" name="derived realization of I" client="_cxVEsK-iEd6DndT7kDY1-A" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GTvA0K-jEd6DndT7kDY1-A" name="[name/]" specification="_16jy8K-iEd6DndT7kDY1-A">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;this is a sample pre-call interception&quot; &lt;&lt; endl;
+rconn->&lt;%cppCall%>;
+cout &lt;&lt; &quot;this is a sample post-call interception&quot; &lt;&lt; endl;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_16jy8K-iEd6DndT7kDY1-A" name="[name/]" method="_GTvA0K-jEd6DndT7kDY1-A"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_aQ7goChYEd-eoo60eNyGlg" name="CallActivation">
+ <ownedComment xmi:id="_aAH58D8CEeGJ6KSvhYhYuQ">
+ <body>A set of Leader followers is instantiated. Each has its own thread and a semaphore. The LF instance waits on its semaphore. When selectLeader is called, a follower is signaled (semaphore is posted) and will become leader. The leader waits for a resource (e.g. a socket) and becomes executor.
+</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_e6Y_EChYEd-eoo60eNyGlg" name="Activator">
+ <generalization xmi:id="_oJX3IChYEd-eoo60eNyGlg" general="_KxQBELuXEd2TTr3gJIvazw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_qgzokChYEd-eoo60eNyGlg" clientDependency="_cWjrYCsAEd-uZPFNCty7PQ" name="LeaderFollower">
+ <generalization xmi:id="_sW6OkChYEd-eoo60eNyGlg" general="_e6Y_EChYEd-eoo60eNyGlg"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_N0tB4Cu4Ed-uZPFNCty7PQ" name="listener" type="_fxfe8Cu1Ed-uZPFNCty7PQ" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UxKdsCu4Ed-uZPFNCty7PQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UxM58Cu4Ed-uZPFNCty7PQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="__fLb4Cu5Ed-uZPFNCty7PQ" name="state" type="_F3CIECu1Ed-uZPFNCty7PQ" isUnique="false" aggregation="composite"/>
+ <ownedAttribute xmi:id="_M4VG8Cu9Ed-uZPFNCty7PQ" name="m_sema" type="_fxfe8Cu1Ed-uZPFNCty7PQ" isUnique="false" aggregation="composite"/>
+ <ownedAttribute xmi:id="_rmwGoCu-Ed-uZPFNCty7PQ" name="m_sr" isStatic="true" type="_qgzokChYEd-eoo60eNyGlg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zYwqYCu-Ed-uZPFNCty7PQ" value="20"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zY4mMCu-Ed-uZPFNCty7PQ" value="20"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xukAICvDEd-uZPFNCty7PQ" name="m_tID" type="_5KatsCvDEd-uZPFNCty7PQ" isUnique="false" aggregation="composite"/>
+ <ownedAttribute xmi:id="_Xq00oCvHEd-uZPFNCty7PQ" name="POOL_SIZE" isStatic="true" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_ZmFncCvHEd-uZPFNCty7PQ" value="20"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_cWjrYCsAEd-uZPFNCty7PQ" name="derived realization of I" client="_qgzokChYEd-eoo60eNyGlg" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_D8z3ECu1Ed-uZPFNCty7PQ" name="run" specification="_2FN1ICu0Ed-uZPFNCty7PQ">
+ <language>C/C++</language>
+ <body>for (;;) {
+ // wait to be become active
+ m_state = FOLLOWER;
+ sem_wait (&amp;m_sema);
+ m_state = LEADER;
+ listener->select(); // no loop, single select
+ selectLeader ();
+ m_state = EXECUTOR;
+ listener->exec();
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wXEiYCu7Ed-uZPFNCty7PQ" name="selectLeader" specification="_eHX3wCu7Ed-uZPFNCty7PQ">
+ <language>C/C++</language>
+ <body>// select a new leader from the followers
+for (int i = currentIndex+1, j=0; j&lt;POOL_SIZE; i++, j++)
+{
+ if (i == POOL_SIZE) {
+ i = 0;
+ }
+ if (sr[i].state == FOLLOWER) {
+ sem_post (&amp;sr[i].m_sema);
+ break;
+ }
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4M1S0Cu9Ed-uZPFNCty7PQ" name="LeaderFollower" specification="_JM4I4Cu9Ed-uZPFNCty7PQ">
+ <language>C/C++</language>
+ <body>sem_init (&amp;m_sema, 0, 0);
+m_state = FOLLOWER;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_OyEk4Cu_Ed-uZPFNCty7PQ" name="init" specification="_6cImgCu-Ed-uZPFNCty7PQ">
+ <language>C/C++</language>
+ <body>for (int i=0; i&lt;POOL_SIZE; i++) {
+ pthread_create (&amp;m_sr.m_tID, 0, runStatic, &amp;m_sr[i]);
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AGUogCvHEd-uZPFNCty7PQ" name="runStatic" specification="_z-laoCvGEd-uZPFNCty7PQ">
+ <language>C/C++</language>
+ <body>((LeaderFollower *) arg)->run();</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_2FN1ICu0Ed-uZPFNCty7PQ" name="run" method="_D8z3ECu1Ed-uZPFNCty7PQ"/>
+ <ownedOperation xmi:id="_eHX3wCu7Ed-uZPFNCty7PQ" name="selectLeader" method="_wXEiYCu7Ed-uZPFNCty7PQ"/>
+ <ownedOperation xmi:id="_JM4I4Cu9Ed-uZPFNCty7PQ" name="LeaderFollower" method="_4M1S0Cu9Ed-uZPFNCty7PQ"/>
+ <ownedOperation xmi:id="_6cImgCu-Ed-uZPFNCty7PQ" name="init" isStatic="true" method="_OyEk4Cu_Ed-uZPFNCty7PQ"/>
+ <ownedOperation xmi:id="_z-laoCvGEd-uZPFNCty7PQ" name="runStatic" method="_AGUogCvHEd-uZPFNCty7PQ">
+ <ownedParameter xmi:id="_Dn-xYCvHEd-uZPFNCty7PQ" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_IdnDkCvHEd-uZPFNCty7PQ" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_2wMyEChiEd-eoo60eNyGlg" clientDependency="_BhfKYChjEd-eoo60eNyGlg" name="SimpleActivation">
+ <generalization xmi:id="_5AKpkChiEd-eoo60eNyGlg" general="_e6Y_EChYEd-eoo60eNyGlg"/>
+ <interfaceRealization xmi:id="_BhfKYChjEd-eoo60eNyGlg" name="derived realization of I" client="_2wMyEChiEd-eoo60eNyGlg" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_6rmQoChiEd-eoo60eNyGlg" clientDependency="_cWkScCsAEd-uZPFNCty7PQ" name="Thread Pool">
+ <generalization xmi:id="_892AEChiEd-eoo60eNyGlg" general="_e6Y_EChYEd-eoo60eNyGlg"/>
+ <interfaceRealization xmi:id="_cWkScCsAEd-uZPFNCty7PQ" name="derived realization of I" client="_6rmQoChiEd-eoo60eNyGlg" supplier="_ZzlzMPfBEd2TbIfwytOyPA" contract="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_BY-fwCnxEd-eoo60eNyGlg" name="sem_t">
+ <ownedAttribute xmi:id="_CQ_F0CnxEd-eoo60eNyGlg" name="lf" type="_qgzokChYEd-eoo60eNyGlg" isUnique="false" aggregation="composite"/>
+ <ownedAttribute xmi:id="_PpWOECnxEd-eoo60eNyGlg" name="listener" isUnique="false" aggregation="composite"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_F3CIECu1Ed-uZPFNCty7PQ" name="LFState">
+ <ownedLiteral xmi:id="_QSQJwCu1Ed-uZPFNCty7PQ" name="EXECUTOR"/>
+ <ownedLiteral xmi:id="_R5B6UCu1Ed-uZPFNCty7PQ" name="FOLLOWER"/>
+ <ownedLiteral xmi:id="_SxRJ4Cu1Ed-uZPFNCty7PQ" name="LEADER"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_fxfe8Cu1Ed-uZPFNCty7PQ" name="IListener">
+ <ownedOperation xmi:id="_eN6hcCu3Ed-uZPFNCty7PQ" name="exec" isAbstract="true"/>
+ <ownedOperation xmi:id="_hY4ooCu3Ed-uZPFNCty7PQ" name="select" isAbstract="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5KatsCvDEd-uZPFNCty7PQ" name="pthread_t"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_hcwDkD8CEeGJ6KSvhYhYuQ" name="LeaderFollowerState">
+ <ownedLiteral xmi:id="_mzqd4D8CEeGJ6KSvhYhYuQ" name="LEADER"/>
+ <ownedLiteral xmi:id="_qdIe8D8CEeGJ6KSvhYhYuQ" name="FOLLOWER"/>
+ <ownedLiteral xmi:id="_rOMvgD8CEeGJ6KSvhYhYuQ" name="EXECUTOR"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_xOqL0No9Ed-wvpj-p-V_QQ" name="CppParameterStorage"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_0KYOQF7pEeGEmrrwB1vhPg" name="OPC_provideMultI" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_0KY1UF7pEeGEmrrwB1vhPg" name="rconn" visibility="public" type="_ZzlzMPfBEd2TbIfwytOyPA" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0KY1Ul7pEeGEmrrwB1vhPg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0KY1UV7pEeGEmrrwB1vhPg" value="10"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_0KY1U17pEeGEmrrwB1vhPg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_QwvnQFDlEd6cwecVIgl9nw" name="PortKinds">
+ <ownedComment xmi:id="_FryEELnZEeCxXoyQxQ47PQ" annotatedElement="_Wtq4sFDlEd6cwecVIgl9nw">
+ <body>Simple provision of typing interface as provided interface</body>
+ </ownedComment>
+ <ownedComment xmi:id="_K17NsLnZEeCxXoyQxQ47PQ" annotatedElement="_Wtrfw1DlEd6cwecVIgl9nw">
+ <body>Simple provision of typing interface as required interface</body>
+ </ownedComment>
+ <ownedComment xmi:id="_PxzR0LnZEeCxXoyQxQ47PQ" annotatedElement="__nMrwLqNEd-SedGzMDDkww">
+ <body>corba asynchronous messaging (AMI): Provision of poller variant of typing interface. Allows client to continue without waiting for the result</body>
+ </ownedComment>
+ <ownedComment xmi:id="_l49WMLnZEeCxXoyQxQ47PQ" annotatedElement="__nMrwLqNEd-SedGzMDDkww _AQZZwLqOEd-SedGzMDDkww">
+ <body>corba asynchronous messaging (AMI): Provision of callback variant of typing interface. Allows client Allows client to continue without waiting for the result</body>
+ </ownedComment>
+ <ownedComment xmi:id="_2dvXILnZEeCxXoyQxQ47PQ" annotatedElement="_Wtq4slDlEd6cwecVIgl9nw">
+ <body>Data Flow oriented communication: consume passively: provided push operation is called </body>
+ </ownedComment>
+ <ownedComment xmi:id="_Ch2pQLnaEeCxXoyQxQ47PQ">
+ <body>Data Flow oriented communication: produce data via pushing these (calling the required operation) </body>
+ </ownedComment>
+ <ownedComment xmi:id="_DsnzQLnaEeCxXoyQxQ47PQ">
+ <body>Data Flow oriented communication: produce data via pushing these (calling the required operation) </body>
+ </ownedComment>
+ <ownedComment xmi:id="_FMuUELnaEeCxXoyQxQ47PQ" annotatedElement="_WtrfwlDlEd6cwecVIgl9nw">
+ <body>Data Flow oriented communication: produce data via pushing these (calling the required operation) </body>
+ </ownedComment>
+ <ownedComment xmi:id="_GgtrgLnaEeCxXoyQxQ47PQ" annotatedElement="_Wtq4sVDlEd6cwecVIgl9nw">
+ <body>Data Flow oriented communication: consumer data actively by calling the required poll operation </body>
+ </ownedComment>
+ <ownedComment xmi:id="_-UGDoDiyEeGiupyIkgMHVw">
+ <body>In order to support icons, all port kinds are stereotypes, but for Qompass they are classes stereotyped as &quot;PortKind&quot;</body>
+ </ownedComment>
+ <ownedComment xmi:id="_COvdAEMMEeKGIL695HkFYQ" annotatedElement="_GjnlcC8qEeKx7OxAiA06uw">
+ <body> A bidirectional flow port combining a push-producer and a pull consumer</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Wtq4sFDlEd6cwecVIgl9nw" name="ProvideInterface">
+ <icon xmi:id="__3j28DixEeGiupyIkgMHVw" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%119%0%0%0%92%8%3%0%0%0%99%-116%-38%77%0%0%0%4%103%65%77%65%0%0%-79%-113%11%-4%97%5%0%0%0%-43%80%76%84%69%0%0%0%-81%-81%-81%-85%-85%-85%-103%-103%-103%-107%-107%-107%-111%-111%-111%-115%-115%-115%-119%-119%-119%119%119%119%115%115%115%111%111%111%107%107%107%85%85%85%81%81%81%77%77%77%73%73%73%69%69%69%-18%-18%-18%-22%-22%-22%-26%-26%-26%51%51%51%-30%-30%-30%47%47%47%43%43%43%39%39%39%35%35%35%-52%-52%-52%-56%-56%-56%-60%-60%-60%17%17%17%-64%-64%-64%13%13%13%-68%-68%-68%9%9%9%5%5%5%-86%-86%-86%-90%-90%-90%-94%-94%-94%-98%-98%-98%-102%-102%-102%-120%-120%-120%-124%-124%-124%-128%-128%-128%124%124%124%120%120%120%102%102%102%98%98%98%94%94%94%90%90%90%86%86%86%-1%-1%-1%-5%-5%-5%-9%-9%-9%68%68%68%-13%-13%-13%64%64%64%60%60%60%56%56%56%52%52%52%-35%-35%-35%-39%-39%-39%-43%-43%-43%34%34%34%-47%-47%-47%30%30%30%-51%-51%-51%26%26%26%22%22%22%-69%-69%-69%-73%-73%-73%-77%-77%-77%-71%82%-104%50%0%0%0%61%116%69%88%116%83%111%102%116%119%97%114%101%0%88%86%32%118%101%114%115%105%111%110%32%51%46%49%48%97%45%106%117%109%98%111%70%105%120%43%69%110%104%32%111%102%32%50%48%48%56%49%50%49%54%32%40%105%110%116%101%114%105%109%33%41%-80%-32%124%-127%0%0%4%-59%73%68%65%84%104%-127%-59%-102%109%91%-30%58%16%-122%11%-118%40%-88%108%-83%2%-53%-117%93%123%4%-75%-20%110%53%-83%69%-91%-108%30%20%-1%-1%79%58%-107%-77%72%38%77%-109%73%-126%-41%62%95%-55%-52%77%94%-102%-52%76%98%-111%29%104%-2%-74%26%-115%-22%-29%81%-27%-83%31%35%77%44%51%98%-68%58%60%-19%120%22%-91%-27%-76%57%-70%-8%90%-18%-62%127%6%-56%-83%58%-65%-34%-61%47%-30%94%28%-76%-7%-52%63%122%109%-4%-5%5%-36%-59%73%73%79%105%-75%43%59%-26%14%78%-28%-48%-75%-70%-29%-78%-31%-42%-32%94%96%-87%107%-14%96%71%-36%-80%-18%42%96%115%5%-50%46%-72%-117%-82%26%53%-41%-16%-38%-100%-69%127%-91%-116%-51%-43%-116%-52%-72%-15%-67%14%53%87%123%102%-62%117%94%52%-79%-106%-27%-78%-53%75%-127%-101%-88%79%45%5%102%-66%101%60%119%-66%44%117%58%124%-71%15%38%-66%-1%59%-104%-106%-73%-15%-58%122%-36%-92%-60%101%-89%89%-95%63%-108%120%-32%79%75%-42%94%85%-121%-21%100%60%87%-39%36%-31%-76%-75%111%-98%-72%61%-2%-95%-50%-115%121%115%43%-40%127%23%15%-100%-3%-37%-19%41%115%91%69%47%-35%-107%-48%34%-31%-20%-90%-53%-19%-116%-32%-72%-11%-30%127%-81%75%14%88%66%86%-33%11%86%45%53%-18%-96%48%104%47%-123%-115%-128%-93%-8%119%1%92%87%-31%-38%25%107%-34%-112%118%-10%127%-115%-39%51%-60%-21%43%112%27%-84%113%13%71%-51%-43%103%-65%-66%78%-120%-26%-10%-104%81%-10%-86%114%-101%79%37%-20%88%-43%-48%-36%103%3%44%33%51%-90%-57%-18%5%-110%59%102%-2%-16%88%106%1%-107%48%115%28%32%-71%41%52%-13%21%-79%-124%92%-62%121%-14%18%20%-73%2%-79%-33%-112%43%-103%-42%29%116%-47%68%113%97%-108%-4%-54%13%-106%36%10%-65%1%31%87%14%-126%-5%6%-1%-21%72%3%-101%-81%45%120%66%77%16%-36%0%88%60%106%97%-39%-111%-50%-28%-36%8%44%70%-113%119%-22%97%20%-62%-59%121%41%-27%94%-125%-10%-57%-102%88%-10%99%12%-92%92%120%-2%45%-76%-71%33%-40%61%-36%80%-62%13%-63%48%-73%-124%109%-59%58%0%29%-24%75%-72%125%-48%-102%23%-9%99%-27%-128%-51%-29%78%-62%5%-21%-48%45%70%-3%10%2%51%54%-107%112%31%-103%-43%96%-96%17%-19%-22%42%18%115%95%-23%-58%122%123%-58%70%51%-72%66%-123%92%27%-76%-59%-124%54%2%-127%-120%-76%-14%-121%27%-49%120%-86%-46%77%51%51%44%-36%-7%110%63%-72%-47%-92%-115%-88%86%-24%-18%-111%27%-127%47%-23%-34%66%-89%-46%13%67%46%56%80%-97%44%18%103%40%-84%-75%111%-56%-99%-45%-50%-50%45%-46%-60%97%13%-105%51%-77%-96%83%-117%12%-111%92%113%90%34%87%8%-71%9%18%107%-67%25%114%9%-19%-52%-77%46%-1%10%-41%-75%-20%50%14%43%65%-47%15%-91%-104%118%-106%-49%47%-74%106%-79%-21%117%85%45%3%49%58%48%-28%-10%104%103%-7%-9%75%30%112%-36%95%-122%-36%127%104%103%-45%-100%27%-6%-120%93%50%-1%-117%-122%92%-97%118%-42%92%-97%11%73%-19%-8%-119%39%80%39%27%26%114%65%-35%-95%38%60%7%35%-48%-31%-98%-88%-87%92%96%127%122%23%-97%-5%32%-20%-59%103%-37%60%-127%101%-107%-17%86%-62%-58%-57%116%91%-109%112%-110%-112%91%56%103%98%-18%30%-35%-40%-45%-55%-55%62%5%-14%-69%19%9%23%-100%93%70%3%-67%0%-98%-10%100%-7%2%8%-13%59%6%92%88%-101%-103%-53%-72%48%29%-44%-33%-94%29%-112%-119%102%-46%-4%8%-90%-65%-25%-38%92%-80%105%124%36%-64%-78%-4%55%3%6%-17%-102%88%7%6%23%115%57%-9%16%24%100%-102%-87%10%-100%-82%103%34%-25%-62%21%-67%46%17%-88%-117%-119%45%-10%17%92%-72%-83%90%94%-55%-11%-105%80%76%125%115%25%97%-72%-16%-61%-77%-78%51%117%46%83%-119%94%111%3%-14%-70%-39%41%-76%106%41%23%-80%-104%-14%-43%-48%-58%113%7%-48%76%57%29%29%49%-10%119%4%-57%37%108%-11%-6%72%9%91%101%-126%-118%52%-62%114%-49%-40%-56%30%91%-11%-26%97%55%-31%63%-90%-18%-67%-49%-104%90%15%-24%-49%-72%112%49%-15%64%-16%92%-90%-66%-104%-85%-115%43%-96%21%-17%49%95%55%79%29%80%-9%26%78%-31%-82%-52%-67%65%-104%-11%82%-42%108%-101%100%-31%-18%113%126%20%35%-50%-87%-84%-53%118%-77%104%-12%-13%-13%87%-28%-67%-107%95%112%97%121%13%-47%-13%-112%-88%-58%-71%79%-100%110%23%36%-10%126%48%40%122%-79%-68%-96%-84%112%-24%-44%121%-73%-104%93%123%-37%2%-53%13%-7%-113%24%-38%7%-59%42%-113%125%125%-54%77%4%50%58%62%67%-33%-61%-58%-36%59%-50%92%105%112%115%-71%-15%24%-9%-85%71%101%-49%88%-106%96%65%-32%-17%-99%-29%105%-119%-61%-11%-112%-89%-23%75%-102%-118%94%88%64%-84%-54%61%123%-120%76%-32%-72%-22%50%-117%80%-23%61%-61%-111%54%-10%-23%-116%113%-91%-10%126%-93%112%-49%-120%84%113%71%87%124%55%50%19%63%126%-30%107%-56%-119%127%85%-33%-55%68%13%84%-78%76%-21%-111%87%80%85%127%-113%52%127%-106%-93%40%45%-7%85%122%-99%-9%87%123%-27%-81%52%88%93%29%-39%124%31%90%-17%-66%-94%-101%-30%-43%61%-105%-38%40%77%33%53%-33%-71%-123%99%-7%104%103%126%73%95%13%-72%-71%-110%-119%-88%-45%110%32%-82%-17%25%-67%-97%-20%-33%-74%-72%31%-12%-7%-31%74%22%9%25%-66%-37%36%97%127%-4%-13%-76%-67%-119%-4%-68%116%-38%-84%-83%4%-61%-69%51%-18%-89%102%-77%25%-10%-115%-22%-121%-2%3%52%51%-49%67%-105%-19%90%17%0%0%0%7%116%73%77%69%7%-36%1%6%14%1%5%-46%-52%-24%92%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_17F1IDrSEeGKkdk54CX6PQ" source="image_papyrus">
+ <details xmi:id="_17HDQDrSEeGKkdk54CX6PQ" key="image_kind_key" value="icon"/>
+ <details xmi:id="_Sn5bADrXEeGMCcwsbpLuFA" key="image_name_key" value="IconProvideInterface"/>
+ </eAnnotations>
+ </icon>
+ <icon xmi:id="_ToC6oDl9EeGi35TadupI-A" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%84%0%0%0%101%8%3%0%0%0%-28%-109%52%-5%0%0%0%4%103%65%77%65%0%0%-79%-113%11%-4%97%5%0%0%0%-52%80%76%84%69%0%0%0%-81%-81%-81%-85%-85%-85%-107%-107%-107%-111%-111%-111%-115%-115%-115%-119%-119%-119%119%119%119%115%115%115%111%111%111%107%107%107%85%85%85%81%81%81%77%77%77%73%73%73%69%69%69%-18%-18%-18%-22%-22%-22%-26%-26%-26%51%51%51%-30%-30%-30%47%47%47%43%43%43%39%39%39%-52%-52%-52%-56%-56%-56%-60%-60%-60%17%17%17%-64%-64%-64%13%13%13%9%9%9%5%5%5%-86%-86%-86%-90%-90%-90%-94%-94%-94%-98%-98%-98%-102%-102%-102%-120%-120%-120%-124%-124%-124%-128%-128%-128%124%124%124%102%102%102%98%98%98%94%94%94%90%90%90%86%86%86%82%82%82%-1%-1%-1%-5%-5%-5%-9%-9%-9%68%68%68%-13%-13%-13%64%64%64%60%60%60%56%56%56%52%52%52%-35%-35%-35%-39%-39%-39%34%34%34%-47%-47%-47%30%30%30%-51%-51%-51%26%26%26%24%24%24%22%22%22%-69%-69%-69%-73%-73%-73%-77%-77%-77%-33%61%-9%-93%0%0%0%61%116%69%88%116%83%111%102%116%119%97%114%101%0%88%86%32%118%101%114%115%105%111%110%32%51%46%49%48%97%45%106%117%109%98%111%70%105%120%43%69%110%104%32%111%102%32%50%48%48%56%49%50%49%54%32%40%105%110%116%101%114%105%109%33%41%-80%-32%124%-127%0%0%3%41%73%68%65%84%104%-127%-83%-39%125%91%-38%48%16%0%-16%-29%101%12%-76%32%32%69%17%-95%88%-107%23%-69%45%-43%90%-83%5%117%-32%-9%-1%78%-125%103%-37%67%47%109%115%-105%54%-9%119%-8%61%41%73%-109%-69%43%-120%-14%17%92%86%-105%86%56%-116%15%49%12%-83%-42%26%74%-126%-35%-54%106%8%82%84%74%-95%-125%-58%-117%12%30%98%84%28%125%-84%-74%-99%44%18%-96%87%20%125%-84%127%100%-117%0%83%81%12%85%-112%0%-61%98%-24%-83%-126%4%120%42%-126%-66%61%-87%72%-128%7%125%-44%-97%79%-43%38%-52%-75%-47%-2%25%65%2%-72%-70%-24%104%67%-102%-80%-43%68%107%57%59%19%69%-92%-121%46%25%36%-128%-81%-123%54%115%-99%-15%-85%-41%-88%110%15%81%-83%-51%-123%6%-22%63%100%-125%-45%-50%-3%-91%52%-108%-113%-98%100%-110%-81%-75%94%122%40%27%-99%103%-111%-42%58%115%44%23%-67%-31%-109%108%116%-108%-34%75%-101%93%-18%104%30%-38%77%-17%-7%102%-112%63%-100%-121%-2%72%-19%-95%47%-43%112%22%122%39%-101%118%-92%28%-49%65%-93%-119%100%-122%-118%71%-25%-94%-14%-61%119%8%-109%-125%110%37%-13%-52%-89%126%65%-93%-66%116%-81%15%-87%121%114%-48%26%54%63%-6%-28%47%104%-44%-57%91%-44%-71%-94%77%26%-67%-59%19%-99%51%76%26%-75%-15%102%34%23%-119%-125%86%-16%-61%-65%113%76%18%-75%16%-38%98%-103%20%-38%67%-89%-45%-17%-82%17%20%47%-45%61%-49%-92%-48%48%105%-114%-103%19%37%-48%1%-102%104%-109%105%18%-88%-117%-48%-127%25%-44%67%123%-108%107%18%104%-100%68%-17%-52%-96%17%122%-6%-116%11%-66%8%58%75%-102%54%-37%84%-93%40%-127%96%-66%77%36%-118%-18%-111%-118%33%-12%60%-119%50%14%103%22%58%78%-104%19%-66%-87%68%-125%-126%-21%116%64%-3%-111%91%91%36%-93%-27%-3%-115%95%73%-12%84%11%29%93%0%39%60%29%-12%-115%42%-117%-2%-59%82%7%125%-26%-103%-80%-48%65%57%69%-116%54%-54%13%45%-108%-7%-105%-62%119%29%-12%39%19%-43%90%-3%-63%-104%6%15%-47%-42%65%69%-60%91%127%-51%55%74%116%-81%-73%-57%-72%-114%-114%-15%-103%64%29%77%52%55%-48%5%-51%-53%120%104%20%85%-93%51%67%-24%-73%36%-70%50%-124%-94%-108%111%104%8%-19%-93%-11%103%-25%18%-60%-67%-113%106%-120%-70%33%116%-107%68%-49%13%-95%51%-12%-4%-20%77%-91%70%-5%-24%96%100%-33%-4%68%126%-118%58%112%83%51%-7%-87%-108%75%114%-49%84%2%13%-48%113%-53%77%-91%-87%-22%-28%20%77%-107%-7%86%81%-24%14%-95%78%94%43%70%15%-107%42%-66%23%35%21%-97%-76%85%121%-41%63%93%69%-93%20%29%-100%107%19%-88%92%70%27%-87%-9%83%-99%-119%11%19%-99%9%113%-123%81%70%121%-50%-23%-10%120%-110%-6%108%-96%-37%35%6%-87%-66%20%81%-3%-80%58%104%-82%-124%-62%69%-7%14%90%-6%15%-128%-119%-14%110%-27%-95%65%44%-85%112%82%-70%43%41%46%-45%-55%-31%38%-65%-80%-30%118%122%-85%41%116%-97%-77%-107%-20%-12%74%-119%-59%-1%-80%-34%-53%-95%57%93%126%-69%94%-90%123%46%-35%-41%-57%112%-98%23%35%-23%29%51%-13%69%98%106%91%75%-41%-35%109%-65%92%-9%74%19%21%-115%92%-11%24%15%-70%40%-25%43%-113%-89%-115%-118%119%-14%123%-44%-87%62%42%122%29%2%13%11%-96%-5%13%-85%-82%-68%-118%-95%34%82%78%-42%46%-122%10%113%-93%-8%103%-29%-94%-88%-22%11%111%113%84%-59%-106%64%-9%-73%108%-59%-54%-36%-75%-91%-48%125%-12%-22%97%-38%13%74%-94%-5%8%118%45%27%-61%81%121%-12%16%-2%-70%-46%-16%-38%97%24%-57%113%24%-74%-9%71%-31%31%12%-33%-99%51%8%-119%86%-81%0%0%0%7%116%73%77%69%7%-36%1%6%14%1%45%-25%121%64%-90%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_2ypIMDrSEeGKkdk54CX6PQ" source="image_papyrus">
+ <details xmi:id="_2ypvQDrSEeGKkdk54CX6PQ" key="image_kind_key" value="icon"/>
+ <details xmi:id="_UMxHEDrXEeGMCcwsbpLuFA" key="image_name_key" value="IconConjProvideInterface"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Wtq4sVDlEd6cwecVIgl9nw" name="PullConsumer">
+ <icon xmi:id="_CVWIADiyEeGiupyIkgMHVw" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%97%0%0%0%98%8%0%0%0%0%101%-7%-30%-47%0%0%2%120%73%68%65%84%104%-127%-75%-38%-51%75%21%81%24%6%-16%-125%-106%105%25%-106%38%-107%84%-76%50%-119%-54%32%90%37%-75%-120%72%-94%69%-117%104%85%86%-46%-90%112%97%73%33%-47%-86%-123%16%33%70%17%-47%-54%-94%47%-24%3%-63%34%-56%-115%20%-35%77%4%-110%65%-123%27%11%51%37%-107%-16%-93%-85%-34%105%-26%-23%74%31%115%-18%120%103%-18%97%-50%-5%60%127%-64%-4%86%103%-26%61%-49%59%10%-99%23%-102%121%105%31%-127%122%-80%72%17%-77%-96%98%68%85%51%-127%116%-82%-87%26%-78%112%76%-35%34%11%117%106%-74%-98%45%32%121%-124%45%96%124%55%91%-64%-40%46%-74%-128%-127%-51%108%1%-3%-107%108%1%61%107%-40%2%-34%-106%-78%5%116%-111%8%95%-64%-45%34%-74%-32%-35%-90%16%-102%0%-17%106%62%89%-128%-45%66%32%50%4%56%-115%108%1%-45%39%-39%2%-110%7%-39%2%38%14%-80%5%-116%-18%96%11%24%-38%-50%22%-48%-73%-127%45%-32%-29%58%-74%-128%-41%43%-39%2%94%-107%-80%5%116%-120%17%97%2%-18%20%-78%5%-9%-70%16%17%42%-64%-67%40%-13%-94%13%23%-112%58%47%66%68%8%72%29%103%11%-104%58%-52%22%48%-79%-113%45%96%108%15%91%-64%-32%54%-74%-128%47%-101%-40%2%-34%-83%103%11%-24%89%-59%22%-16%-94%-116%45%-32%-39%82%-74%-128%-69%-59%108%1%55%11%-40%-126%123%41%54%97%40%-64%109%-54%35%11%-104%-39%-49%22%-34%-105%-109%-123%-127%-86%-104%-128%-87%-16%99%103%92%-64%80%-104%58%20%27%48%19%82%-89%-29%3%70%-126%-41%106%51%18%-104%8%-9%-84%38%39%3%-95%107%-103%13%96%32%-12%-38%125%30%114%11%-33%108%-81%43%-71%-124%113%-21%-6%44%-121%-112%-76%56%8%70%-126%115%-58%26%-120%22%-68%54%-127%-39%56%82%120%36%81%7%69%9%-35%-53%5%-128%40%-95%-73%66%2%-120%16%6%55%-118%0%-31%-62%100%-4%47%-126%-103%48%45%113%57%-119%18%-100%38%41%32%68%-16%-82%-56%21%126%-39%-123%-57%-126%-67%104%86%33%97%53%108%27%8%31%68%91%-10%44%-62%87%-39%101%-60%124%65%122%103%51%79%-104%-107%-34%59%5%-123%95%103%-123%-127%-96%64%40%-41%3%-62%-109%-59%-46%64%64%72%-84%16%7%50%5%-47%22%52%-101%48%-76%-107%0%-24%-62%-28%94%6%-96%9%-87%58%10%-32%11%-18%57%14%-32%11%55%72%-64%127%-95%-109%-10%63%-62%95%-31%13%107%103%-7%79%-24%91%75%3%-2%8%-33%41%7%65%19%126%-42%18%-127%57%-63%57%-63%4%-46%-126%-37%76%5%-46%66%7%23%80%71%85%-36%86%-57%52%-83%-86%-127%-6%-4%-68%-110%97%-11%-87%44%-93%-3%-54%-41%-78%-80%64%75%-111%-106%37%-59%126%86%111%-47%82%-85%-91%-2%84%58%109%-61%80%24%109%-65%-84%-27%-2%67%63%-49%95%-6%73%124%-42%50%19%28%-127%-94%-14%27%-2%-94%-44%59%115%-35%74%-17%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_4KKUwDrSEeGKkdk54CX6PQ" source="image_papyrus">
+ <details xmi:id="_4KLi4DrSEeGKkdk54CX6PQ" key="image_kind_key" value="icon"/>
+ <details xmi:id="_MdOBcDrXEeGMCcwsbpLuFA" key="image_name_key" value="IconPushConsumer"/>
+ </eAnnotations>
+ </icon>
+ <icon xmi:id="_kZGdADl9EeGi35TadupI-A" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%108%0%0%0%97%8%0%0%0%0%22%-109%27%-49%0%0%2%-101%73%68%65%84%104%-127%-67%-38%-51%75%84%81%24%6%-16%-25%-36%59%87%68%43%107%76%40%63%42%-84%4%-125%1%49%-86%77%-82%70%24%-120%54%-39%-57%44%18%35%-110%62%104%-91%-83%10%-108%32%-94%64%40%92%-10%-79%-120%-118%8%23%82%-101%26%-124%22%65%41%4%69%-117%-118%-124%114%17%52%65%-108%9%105%-47%-28%116%26%107%76%-13%-34%-21%-67%112%-49%-5%60%-1%-64%111%49%103%120%-97%123%-34%3%61%118%-78%37%84%118%-89%61%115%-30%-123%14%29%76%39%16%41%106%-29%72%120%44%19%-51%42%100%-61%-77%-48%-40%-11%-56%24%-102%71%-119%-104%-38%-10%-114%-121%-63%74%101%121%24%84%-37%4%15%-125%-35%17%70%51%-124%-63%62%62%21%2%-21%55%-125%-63%-23%-2%30%-116%-99%54%-124%-95%-12%124%-114%-121%-95%-20%66%-98%-121%97%-7%-75%0%-51%36%-122%-8%32%17%67%-19%61%34%-122%-75%-113%-120%24%26%-122%-119%24%-102%94%19%49%-75%-27%45%15%-125%74%-67%-25%97%-80%118%-114%-13%48%-60%14%-8%-116%0%9%12%-79%-61%-34%35%64%4%-125%-45%-27%-87%-55%96%112%-50%120%-115%0%-12%-120%96%40%-21%-101%-10%-64%14%-55%96%88%-26%49%2%-48%33%-124%33%126%-117%-120%-95%-58%53%2%4%49%-84%121%72%-60%-48%48%66%-60%-48%-8%-110%-120%-87%-83%-93%60%12%42%-103%-27%97%-80%118%124%-28%97%-80%-38%39%120%24%-20%-125%83%60%-84%-16%21%-16%-115%-121%-63%-23%-51%-15%-80%-62%8%-56%-15%48%-108%95%-3%-59%-61%-80%-30%-58%31%108%23%5%67%85%102%6%-37%-50%-63%80%-5%-128%-120%97%-3%19%34%-122%-42%28%17%-85%120%78%-60%-86%-77%60%-52%-18%-28%-3%102%-86%117%-100%-121%37%-34%-16%-114%126%-35%48%-17%79%29%-65%-85%105%88%-23%-59%60%13%-117%117%-3%-48%44%-52%-38%59%-87%105%88%-53%7%77%-61%-26%106%-79%60%-74%122%104%-82%-54%109%18%-74%42%110%-50%43%-87%-11%-78%86%-55%-39%60%13%-77%-113%-52%-65%57%-106%-59%84%-37%23%77%-61%54%-1%-65%55%17%-59%-22%-97%106%26%86%117%95%-45%-80%37%-105%53%13%115%122%126%-46%48%-69%-3%-21%66%75%12%83%-55%-49%46%75%12%-101%-87%28%44%-84%-18%-79%-121%37%-124%85%-34%-15%-78%100%-80%98%-27%-96%96%-77%-107%-61%-115%85%27%-73%-84%125%-18%67%95%-60%-52%-25%95%-27%32%96%-115%-81%-4%44%-13%-40%-86%33%95%-53%56%-74%-44%125%51%44%-122%-107%-100%91%108%-19%105%-42%-78%-113%46%-70%-84%54%106%45%-88%28%-78%88%115%-64%83%13%-109%-42%-70%-96%39%47%6%-83%-107%-103%0%-53%32%86%-18%-86%28%114%-104%-45%-21%-86%28%98%-104%-75%127%50%-48%50%-123%-87%-92%-33%82%85%0%75%-116%-123%-80%12%97%53%-31%94%-107%25%-79%-2%-34%114%-124%-64%84%116%-85%-92%63%-24%-119%-53%44%-42%20%-39%-78%-70%125%42%-121%27%-69%93%25%-77%109%43%-118%-107%14%113%-24%-117%-104%-2%52%56%48%112%-91%-49%55%-89%-114%-7%38%-99%42%100%-49%-91%-48%-106%-2%13%-127%31%98%-1%-55%30%-37%-42%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_44RX8DrSEeGKkdk54CX6PQ" source="image_papyrus">
+ <details xmi:id="_44R_ADrSEeGKkdk54CX6PQ" key="image_kind_key" value="icon"/>
+ <details xmi:id="_PhMv0DrXEeGMCcwsbpLuFA" key="image_name_key" value="IconConjPullConsumer"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Wtq4slDlEd6cwecVIgl9nw" name="PushConsumer">
+ <icon xmi:id="_Dh_hUDiyEeGiupyIkgMHVw" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%97%0%0%0%98%8%0%0%0%0%101%-7%-30%-47%0%0%2%120%73%68%65%84%104%-127%-75%-38%-51%75%21%81%24%6%-16%-125%-106%105%25%-106%38%-107%84%-76%50%-119%-54%32%90%37%-75%-120%72%-94%69%-117%104%85%86%-46%-90%112%97%73%33%-47%-86%-123%16%33%70%17%-47%-54%-94%47%-24%3%-63%34%-56%-115%20%-35%77%4%-110%65%-123%27%11%51%37%-107%-16%-93%-85%-34%105%-26%-23%74%31%115%-18%120%103%-18%97%-50%-5%60%127%-64%-4%86%103%-26%61%-49%59%10%-99%23%-102%121%105%31%-127%122%-80%72%17%-77%-96%98%68%85%51%-127%116%-82%-87%26%-78%112%76%-35%34%11%117%106%-74%-98%45%32%121%-124%45%96%124%55%91%-64%-40%46%-74%-128%-127%-51%108%1%-3%-107%108%1%61%107%-40%2%-34%-106%-78%5%116%-111%8%95%-64%-45%34%-74%-32%-35%-90%16%-102%0%-17%106%62%89%-128%-45%66%32%50%4%56%-115%108%1%-45%39%-39%2%-110%7%-39%2%38%14%-80%5%-116%-18%96%11%24%-38%-50%22%-48%-73%-127%45%-32%-29%58%-74%-128%-41%43%-39%2%94%-107%-80%5%116%-120%17%97%2%-18%20%-78%5%-9%-70%16%17%42%-64%-67%40%-13%-94%13%23%-112%58%47%66%68%8%72%29%103%11%-104%58%-52%22%48%-79%-113%45%96%108%15%91%-64%-32%54%-74%-128%47%-101%-40%2%-34%-83%103%11%-24%89%-59%22%-16%-94%-116%45%-32%-39%82%-74%-128%-69%-59%108%1%55%11%-40%-126%123%41%54%97%40%-64%109%-54%35%11%-104%-39%-49%22%-34%-105%-109%-123%-127%-86%-104%-128%-87%-16%99%103%92%-64%80%-104%58%20%27%48%19%82%-89%-29%3%70%-126%-41%106%51%18%-104%8%-9%-84%38%39%3%-95%107%-103%13%96%32%-12%-38%125%30%114%11%-33%108%-81%43%-71%-124%113%-21%-6%44%-121%-112%-76%56%8%70%-126%115%-58%26%-120%22%-68%54%-127%-39%56%82%120%36%81%7%69%9%-35%-53%5%-128%40%-95%-73%66%2%-120%16%6%55%-118%0%-31%-62%100%-4%47%-126%-103%48%45%113%57%-119%18%-100%38%41%32%68%-16%-82%-56%21%126%-39%-123%-57%-126%-67%104%86%33%97%53%108%27%8%31%68%91%-10%44%-62%87%-39%101%-60%124%65%122%103%51%79%-104%-107%-34%59%5%-123%95%103%-123%-127%-96%64%40%-41%3%-62%-109%-59%-46%64%64%72%-84%16%7%50%5%-47%22%52%-101%48%-76%-107%0%-24%-62%-28%94%6%-96%9%-87%58%10%-32%11%-18%57%14%-32%11%55%72%-64%127%-95%-109%-10%63%-62%95%-31%13%107%103%-7%79%-24%91%75%3%-2%8%-33%41%7%65%19%126%-42%18%-127%57%-63%57%-63%4%-46%-126%-37%76%5%-46%66%7%23%80%71%85%-36%86%-57%52%-83%-86%-127%-6%-4%-68%-110%97%-11%-87%44%-93%-3%-54%-41%-78%-80%64%75%-111%-106%37%-59%126%86%111%-47%82%-85%-91%-2%84%58%109%-61%80%24%109%-65%-84%-27%-2%67%63%-49%95%-6%73%124%-42%50%19%28%-127%-94%-14%27%-2%-94%-44%59%115%-35%74%-17%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_7bjNADrSEeGKkdk54CX6PQ" source="image_papyrus">
+ <details xmi:id="_7bj0EDrSEeGKkdk54CX6PQ" key="image_kind_key" value="icon"/>
+ <details xmi:id="_JNOQUDrXEeGMCcwsbpLuFA" key="image_name_key" value="IconPushConsumer"/>
+ </eAnnotations>
+ </icon>
+ <icon xmi:id="_hwLS8Dl9EeGi35TadupI-A" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%108%0%0%0%97%8%0%0%0%0%22%-109%27%-49%0%0%2%-101%73%68%65%84%104%-127%-67%-38%-51%75%84%81%24%6%-16%-25%-36%59%87%68%43%107%76%40%63%42%-84%4%-125%1%49%-86%77%-82%70%24%-120%54%-39%-57%44%18%35%-110%62%104%-91%-83%10%-108%32%-94%64%40%92%-10%-79%-120%-118%8%23%82%-101%26%-124%22%65%41%4%69%-117%-118%-124%114%17%52%65%-108%9%105%-47%-28%116%26%107%76%-13%-34%-21%-67%112%-49%-5%60%-1%-64%111%49%103%120%-97%123%-34%3%61%118%-78%37%84%118%-89%61%115%-30%-123%14%29%76%39%16%41%106%-29%72%120%44%19%-51%42%100%-61%-77%-48%-40%-11%-56%24%-102%71%-119%-104%-38%-10%-114%-121%-63%74%101%121%24%84%-37%4%15%-125%-35%17%70%51%-124%-63%62%62%21%2%-21%55%-125%-63%-23%-2%30%-116%-99%54%-124%-95%-12%124%-114%-121%-95%-20%66%-98%-121%97%-7%-75%0%-51%36%-122%-8%32%17%67%-19%61%34%-122%-75%-113%-120%24%26%-122%-119%24%-102%94%19%49%-75%-27%45%15%-125%74%-67%-25%97%-80%118%-114%-13%48%-60%14%-8%-116%0%9%12%-79%-61%-34%35%64%4%-125%-45%-27%-87%-55%96%112%-50%120%-115%0%-12%-120%96%40%-21%-101%-10%-64%14%-55%96%88%-26%49%2%-48%33%-124%33%126%-117%-120%-95%-58%53%2%4%49%-84%121%72%-60%-48%48%66%-60%-48%-8%-110%-120%-87%-83%-93%60%12%42%-103%-27%97%-80%118%124%-28%97%-80%-38%39%120%24%-20%-125%83%60%-84%-16%21%-16%-115%-121%-63%-23%-51%-15%-80%-62%8%-56%-15%48%-108%95%-3%-59%-61%-80%-30%-58%31%108%23%5%67%85%102%6%-37%-50%-63%80%-5%-128%-120%97%-3%19%34%-122%-42%28%17%-85%120%78%-60%-86%-77%60%-52%-18%-28%-3%102%-86%117%-100%-121%37%-34%-16%-114%126%-35%48%-17%79%29%-65%-85%105%88%-23%-59%60%13%-117%117%-3%-48%44%-52%-38%59%-87%105%88%-53%7%77%-61%-26%106%-79%60%-74%122%104%-82%-54%109%18%-74%42%110%-50%43%-87%-11%-78%86%-55%-39%60%13%-77%-113%-52%-65%57%-106%-59%84%-37%23%77%-61%54%-1%-65%55%17%-59%-22%-97%106%26%86%117%95%-45%-80%37%-105%53%13%115%122%126%-46%48%-69%-3%-21%66%75%12%83%-55%-49%46%75%12%-101%-87%28%44%-84%-18%-79%-121%37%-124%85%-34%-15%-78%100%-80%98%-27%-96%96%-77%-107%-61%-115%85%27%-73%-84%125%-18%67%95%-60%-52%-25%95%-27%32%96%-115%-81%-4%44%-13%-40%-86%33%95%-53%56%-74%-44%125%51%44%-122%-107%-100%91%108%-19%105%-42%-78%-113%46%-70%-84%54%106%45%-88%28%-78%88%115%-64%83%13%-109%-42%-70%-96%39%47%6%-83%-107%-103%0%-53%32%86%-18%-86%28%114%-104%-45%-21%-86%28%98%-104%-75%127%50%-48%50%-123%-87%-92%-33%82%85%0%75%-116%-123%-80%12%97%53%-31%94%-107%25%-79%-2%-34%114%-124%-64%84%116%-85%-92%63%-24%-119%-53%44%-42%20%-39%-78%-70%125%42%-121%27%-69%93%25%-77%109%43%-118%-107%14%113%-24%-117%-104%-2%52%56%48%112%-91%-49%55%-89%-114%-7%38%-99%42%100%-49%-91%-48%-106%-2%13%-127%31%98%-1%-55%30%-37%-42%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_8L9WQDrSEeGKkdk54CX6PQ" source="image_papyrus">
+ <details xmi:id="_8L99UDrSEeGKkdk54CX6PQ" key="image_kind_key" value="icon"/>
+ <details xmi:id="_Lb68gDrXEeGMCcwsbpLuFA" key="image_name_key" value="IconConjPushConsumer"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_WtrfwlDlEd6cwecVIgl9nw" name="PushProducer">
+ <icon xmi:id="_Eu1u8DiyEeGiupyIkgMHVw" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%108%0%0%0%97%8%0%0%0%0%22%-109%27%-49%0%0%2%-101%73%68%65%84%104%-127%-67%-38%-51%75%84%81%24%6%-16%-25%-36%59%87%68%43%107%76%40%63%42%-84%4%-125%1%49%-86%77%-82%70%24%-120%54%-39%-57%44%18%35%-110%62%104%-91%-83%10%-108%32%-94%64%40%92%-10%-79%-120%-118%8%23%82%-101%26%-124%22%65%41%4%69%-117%-118%-124%114%17%52%65%-108%9%105%-47%-28%116%26%107%76%-13%-34%-21%-67%112%-49%-5%60%-1%-64%111%49%103%120%-97%123%-34%3%61%118%-78%37%84%118%-89%61%115%-30%-123%14%29%76%39%16%41%106%-29%72%120%44%19%-51%42%100%-61%-77%-48%-40%-11%-56%24%-102%71%-119%-104%-38%-10%-114%-121%-63%74%101%121%24%84%-37%4%15%-125%-35%17%70%51%-124%-63%62%62%21%2%-21%55%-125%-63%-23%-2%30%-116%-99%54%-124%-95%-12%124%-114%-121%-95%-20%66%-98%-121%97%-7%-75%0%-51%36%-122%-8%32%17%67%-19%61%34%-122%-75%-113%-120%24%26%-122%-119%24%-102%94%19%49%-75%-27%45%15%-125%74%-67%-25%97%-80%118%-114%-13%48%-60%14%-8%-116%0%9%12%-79%-61%-34%35%64%4%-125%-45%-27%-87%-55%96%112%-50%120%-115%0%-12%-120%96%40%-21%-101%-10%-64%14%-55%96%88%-26%49%2%-48%33%-124%33%126%-117%-120%-95%-58%53%2%4%49%-84%121%72%-60%-48%48%66%-60%-48%-8%-110%-120%-87%-83%-93%60%12%42%-103%-27%97%-80%118%124%-28%97%-80%-38%39%120%24%-20%-125%83%60%-84%-16%21%-16%-115%-121%-63%-23%-51%-15%-80%-62%8%-56%-15%48%-108%95%-3%-59%-61%-80%-30%-58%31%108%23%5%67%85%102%6%-37%-50%-63%80%-5%-128%-120%97%-3%19%34%-122%-42%28%17%-85%120%78%-60%-86%-77%60%-52%-18%-28%-3%102%-86%117%-100%-121%37%-34%-16%-114%126%-35%48%-17%79%29%-65%-85%105%88%-23%-59%60%13%-117%117%-3%-48%44%-52%-38%59%-87%105%88%-53%7%77%-61%-26%106%-79%60%-74%122%104%-82%-54%109%18%-74%42%110%-50%43%-87%-11%-78%86%-55%-39%60%13%-77%-113%-52%-65%57%-106%-59%84%-37%23%77%-61%54%-1%-65%55%17%-59%-22%-97%106%26%86%117%95%-45%-80%37%-105%53%13%115%122%126%-46%48%-69%-3%-21%66%75%12%83%-55%-49%46%75%12%-101%-87%28%44%-84%-18%-79%-121%37%-124%85%-34%-15%-78%100%-80%98%-27%-96%96%-77%-107%-61%-115%85%27%-73%-84%125%-18%67%95%-60%-52%-25%95%-27%32%96%-115%-81%-4%44%-13%-40%-86%33%95%-53%56%-74%-44%125%51%44%-122%-107%-100%91%108%-19%105%-42%-78%-113%46%-70%-84%54%106%45%-88%28%-78%88%115%-64%83%13%-109%-42%-70%-96%39%47%6%-83%-107%-103%0%-53%32%86%-18%-86%28%114%-104%-45%-21%-86%28%98%-104%-75%127%50%-48%50%-123%-87%-92%-33%82%85%0%75%-116%-123%-80%12%97%53%-31%94%-107%25%-79%-2%-34%114%-124%-64%84%116%-85%-92%63%-24%-119%-53%44%-42%20%-39%-78%-70%125%42%-121%27%-69%93%25%-77%109%43%-118%-107%14%113%-24%-117%-104%-2%52%56%48%112%-91%-49%55%-89%-114%-7%38%-99%42%100%-49%-91%-48%-106%-2%13%-127%31%98%-1%-55%30%-37%-42%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_EVcCADrXEeGMCcwsbpLuFA" source="image_papyrus">
+ <details xmi:id="_EVdQIDrXEeGMCcwsbpLuFA" key="image_name_key" value="IconPushProducer"/>
+ <details xmi:id="_Eg1ZsDrXEeGMCcwsbpLuFA" key="image_kind_key" value="icon"/>
+ </eAnnotations>
+ </icon>
+ <icon xmi:id="_djiTYDl9EeGi35TadupI-A" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%97%0%0%0%98%8%0%0%0%0%101%-7%-30%-47%0%0%2%120%73%68%65%84%104%-127%-75%-38%-51%75%21%81%24%6%-16%-125%-106%105%25%-106%38%-107%84%-76%50%-119%-54%32%90%37%-75%-120%72%-94%69%-117%104%85%86%-46%-90%112%97%73%33%-47%-86%-123%16%33%70%17%-47%-54%-94%47%-24%3%-63%34%-56%-115%20%-35%77%4%-110%65%-123%27%11%51%37%-107%-16%-93%-85%-34%105%-26%-23%74%31%115%-18%120%103%-18%97%-50%-5%60%127%-64%-4%86%103%-26%61%-49%59%10%-99%23%-102%121%105%31%-127%122%-80%72%17%-77%-96%98%68%85%51%-127%116%-82%-87%26%-78%112%76%-35%34%11%117%106%-74%-98%45%32%121%-124%45%96%124%55%91%-64%-40%46%-74%-128%-127%-51%108%1%-3%-107%108%1%61%107%-40%2%-34%-106%-78%5%116%-111%8%95%-64%-45%34%-74%-32%-35%-90%16%-102%0%-17%106%62%89%-128%-45%66%32%50%4%56%-115%108%1%-45%39%-39%2%-110%7%-39%2%38%14%-80%5%-116%-18%96%11%24%-38%-50%22%-48%-73%-127%45%-32%-29%58%-74%-128%-41%43%-39%2%94%-107%-80%5%116%-120%17%97%2%-18%20%-78%5%-9%-70%16%17%42%-64%-67%40%-13%-94%13%23%-112%58%47%66%68%8%72%29%103%11%-104%58%-52%22%48%-79%-113%45%96%108%15%91%-64%-32%54%-74%-128%47%-101%-40%2%-34%-83%103%11%-24%89%-59%22%-16%-94%-116%45%-32%-39%82%-74%-128%-69%-59%108%1%55%11%-40%-126%123%41%54%97%40%-64%109%-54%35%11%-104%-39%-49%22%-34%-105%-109%-123%-127%-86%-104%-128%-87%-16%99%103%92%-64%80%-104%58%20%27%48%19%82%-89%-29%3%70%-126%-41%106%51%18%-104%8%-9%-84%38%39%3%-95%107%-103%13%96%32%-12%-38%125%30%114%11%-33%108%-81%43%-71%-124%113%-21%-6%44%-121%-112%-76%56%8%70%-126%115%-58%26%-120%22%-68%54%-127%-39%56%82%120%36%81%7%69%9%-35%-53%5%-128%40%-95%-73%66%2%-120%16%6%55%-118%0%-31%-62%100%-4%47%-126%-103%48%45%113%57%-119%18%-100%38%41%32%68%-16%-82%-56%21%126%-39%-123%-57%-126%-67%104%86%33%97%53%108%27%8%31%68%91%-10%44%-62%87%-39%101%-60%124%65%122%103%51%79%-104%-107%-34%59%5%-123%95%103%-123%-127%-96%64%40%-41%3%-62%-109%-59%-46%64%64%72%-84%16%7%50%5%-47%22%52%-101%48%-76%-107%0%-24%-62%-28%94%6%-96%9%-87%58%10%-32%11%-18%57%14%-32%11%55%72%-64%127%-95%-109%-10%63%-62%95%-31%13%107%103%-7%79%-24%91%75%3%-2%8%-33%41%7%65%19%126%-42%18%-127%57%-63%57%-63%4%-46%-126%-37%76%5%-46%66%7%23%80%71%85%-36%86%-57%52%-83%-86%-127%-6%-4%-68%-110%97%-11%-87%44%-93%-3%-54%-41%-78%-80%64%75%-111%-106%37%-59%126%86%111%-47%82%-85%-91%-2%84%58%109%-61%80%24%109%-65%-84%-27%-2%67%63%-49%95%-6%73%124%-42%50%19%28%-127%-94%-14%27%-2%-94%-44%59%115%-35%74%-17%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_GvSOQDrXEeGMCcwsbpLuFA" source="image_papyrus">
+ <details xmi:id="_GvS1UDrXEeGMCcwsbpLuFA" key="image_name_key" value="ConjIconPushProducer"/>
+ <details xmi:id="_G5-bUDrXEeGMCcwsbpLuFA" key="image_kind_key" value="icon"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_Wtrfw1DlEd6cwecVIgl9nw" name="UseInterface">
+ <icon xmi:id="_FzdNoDiyEeGiupyIkgMHVw" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%84%0%0%0%101%8%3%0%0%0%-28%-109%52%-5%0%0%0%4%103%65%77%65%0%0%-79%-113%11%-4%97%5%0%0%0%-52%80%76%84%69%0%0%0%-81%-81%-81%-85%-85%-85%-107%-107%-107%-111%-111%-111%-115%-115%-115%-119%-119%-119%119%119%119%115%115%115%111%111%111%107%107%107%85%85%85%81%81%81%77%77%77%73%73%73%69%69%69%-18%-18%-18%-22%-22%-22%-26%-26%-26%51%51%51%-30%-30%-30%47%47%47%43%43%43%39%39%39%-52%-52%-52%-56%-56%-56%-60%-60%-60%17%17%17%-64%-64%-64%13%13%13%9%9%9%5%5%5%-86%-86%-86%-90%-90%-90%-94%-94%-94%-98%-98%-98%-102%-102%-102%-120%-120%-120%-124%-124%-124%-128%-128%-128%124%124%124%102%102%102%98%98%98%94%94%94%90%90%90%86%86%86%82%82%82%-1%-1%-1%-5%-5%-5%-9%-9%-9%68%68%68%-13%-13%-13%64%64%64%60%60%60%56%56%56%52%52%52%-35%-35%-35%-39%-39%-39%34%34%34%-47%-47%-47%30%30%30%-51%-51%-51%26%26%26%24%24%24%22%22%22%-69%-69%-69%-73%-73%-73%-77%-77%-77%-33%61%-9%-93%0%0%0%61%116%69%88%116%83%111%102%116%119%97%114%101%0%88%86%32%118%101%114%115%105%111%110%32%51%46%49%48%97%45%106%117%109%98%111%70%105%120%43%69%110%104%32%111%102%32%50%48%48%56%49%50%49%54%32%40%105%110%116%101%114%105%109%33%41%-80%-32%124%-127%0%0%3%41%73%68%65%84%104%-127%-83%-39%125%91%-38%48%16%0%-16%-29%101%12%-76%32%32%69%17%-95%88%-107%23%-69%45%-43%90%-83%5%117%-32%-9%-1%78%-125%103%-37%67%47%109%115%-105%54%-9%119%-8%61%41%73%-109%-69%43%-120%-14%17%92%86%-105%86%56%-116%15%49%12%-83%-42%26%74%-126%-35%-54%106%8%82%84%74%-95%-125%-58%-117%12%30%98%84%28%125%-84%-74%-99%44%18%-96%87%20%125%-84%127%100%-117%0%83%81%12%85%-112%0%-61%98%-24%-83%-126%4%120%42%-126%-66%61%-87%72%-128%7%125%-44%-97%79%-43%38%-52%-75%-47%-2%25%65%2%-72%-70%-24%104%67%-102%-80%-43%68%107%57%59%19%69%-92%-121%46%25%36%-128%-81%-123%54%115%-99%-15%-85%-41%-88%110%15%81%-83%-51%-123%6%-22%63%100%-125%-45%-50%-3%-91%52%-108%-113%-98%100%-110%-81%-75%94%122%40%27%-99%103%-111%-42%58%115%44%23%-67%-31%-109%108%116%-108%-34%75%-101%93%-18%104%30%-38%77%-17%-7%102%-112%63%-100%-121%-2%72%-19%-95%47%-43%112%22%122%39%-101%118%-92%28%-49%65%-93%-119%100%-122%-118%71%-25%-94%-14%-61%119%8%-109%-125%110%37%-13%-52%-89%126%65%-93%-66%116%-81%15%-87%121%114%-48%26%54%63%-6%-28%47%104%-44%-57%91%-44%-71%-94%77%26%-67%-59%19%-99%51%76%26%-75%-15%102%34%23%-119%-125%86%-16%-61%-65%113%76%18%-75%16%-38%98%-103%20%-38%67%-89%-45%-17%-82%17%20%47%-45%61%-49%-92%-48%48%105%-114%-103%19%37%-48%1%-102%104%-109%105%18%-88%-117%-48%-127%25%-44%67%123%-108%107%18%104%-100%68%-17%-52%-96%17%122%-6%-116%11%-66%8%58%75%-102%54%-37%84%-93%40%-127%96%-66%77%36%-118%-18%-111%-118%33%-12%60%-119%50%14%103%22%58%78%-104%19%-66%-87%68%-125%-126%-21%116%64%-3%-111%91%91%36%-93%-27%-3%-115%95%73%-12%84%11%29%93%0%39%60%29%-12%-115%42%-117%-2%-59%82%7%125%-26%-103%-80%-48%65%57%69%-116%54%-54%13%45%-108%-7%-105%-62%119%29%-12%39%19%-43%90%-3%-63%-104%6%15%-47%-42%65%69%-60%91%127%-51%55%74%116%-81%-73%-57%-72%-114%-114%-15%-103%64%29%77%52%55%-48%5%-51%-53%120%104%20%85%-93%51%67%-24%-73%36%-70%50%-124%-94%-108%111%104%8%-19%-93%-11%103%-25%18%-60%-67%-113%106%-120%-70%33%116%-107%68%-49%13%-95%51%-12%-4%-20%77%-91%70%-5%-24%96%100%-33%-4%68%126%-118%58%112%83%51%-7%-87%-108%75%114%-49%84%2%13%-48%113%-53%77%-91%-87%-22%-28%20%77%-107%-7%86%81%-24%14%-95%78%94%43%70%15%-107%42%-66%23%35%21%-97%-76%85%121%-41%63%93%69%-93%20%29%-100%107%19%-88%92%70%27%-87%-9%83%-99%-119%11%19%-99%9%113%-123%81%70%121%-50%-23%-10%120%-110%-6%108%-96%-37%35%6%-87%-66%20%81%-3%-80%58%104%-82%-124%-62%69%-7%14%90%-6%15%-128%-119%-14%110%-27%-95%65%44%-85%112%82%-70%43%41%46%-45%-55%-31%38%-65%-80%-30%118%122%-85%41%116%-97%-77%-107%-20%-12%74%-119%-59%-1%-80%-34%-53%-95%57%93%126%-69%94%-90%123%46%-35%-41%-57%112%-98%23%35%-23%29%51%-13%69%98%106%91%75%-41%-35%109%-65%92%-9%74%19%21%-115%92%-11%24%15%-70%40%-25%43%-113%-89%-115%-118%119%-14%123%-44%-87%62%42%122%29%2%13%11%-96%-5%13%-85%-82%-68%-118%-95%34%82%78%-42%46%-122%10%113%-93%-8%103%-29%-94%-88%-22%11%111%113%84%-59%-106%64%-9%-73%108%-59%-54%-36%-75%-91%-48%125%-12%-22%97%-38%13%74%-94%-5%8%118%45%27%-61%81%121%-12%16%-2%-70%-46%-16%-38%97%24%-57%113%24%-74%-9%71%-31%31%12%-33%-99%51%8%-119%86%-81%0%0%0%7%116%73%77%69%7%-36%1%6%14%1%45%-25%121%64%-90%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_z5Ar0DrWEeGMCcwsbpLuFA" source="image_papyrus">
+ <details xmi:id="_z5BS4DrWEeGMCcwsbpLuFA" key="image_kind_key" value="icon"/>
+ <details xmi:id="_BoRRIDrXEeGMCcwsbpLuFA" key="image_name_key" value="IconUseInterface"/>
+ </eAnnotations>
+ </icon>
+ <icon xmi:id="_Yy8SMDl9EeGi35TadupI-A" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%119%0%0%0%92%8%3%0%0%0%99%-116%-38%77%0%0%0%4%103%65%77%65%0%0%-79%-113%11%-4%97%5%0%0%0%-43%80%76%84%69%0%0%0%-81%-81%-81%-85%-85%-85%-103%-103%-103%-107%-107%-107%-111%-111%-111%-115%-115%-115%-119%-119%-119%119%119%119%115%115%115%111%111%111%107%107%107%85%85%85%81%81%81%77%77%77%73%73%73%69%69%69%-18%-18%-18%-22%-22%-22%-26%-26%-26%51%51%51%-30%-30%-30%47%47%47%43%43%43%39%39%39%35%35%35%-52%-52%-52%-56%-56%-56%-60%-60%-60%17%17%17%-64%-64%-64%13%13%13%-68%-68%-68%9%9%9%5%5%5%-86%-86%-86%-90%-90%-90%-94%-94%-94%-98%-98%-98%-102%-102%-102%-120%-120%-120%-124%-124%-124%-128%-128%-128%124%124%124%120%120%120%102%102%102%98%98%98%94%94%94%90%90%90%86%86%86%-1%-1%-1%-5%-5%-5%-9%-9%-9%68%68%68%-13%-13%-13%64%64%64%60%60%60%56%56%56%52%52%52%-35%-35%-35%-39%-39%-39%-43%-43%-43%34%34%34%-47%-47%-47%30%30%30%-51%-51%-51%26%26%26%22%22%22%-69%-69%-69%-73%-73%-73%-77%-77%-77%-71%82%-104%50%0%0%0%61%116%69%88%116%83%111%102%116%119%97%114%101%0%88%86%32%118%101%114%115%105%111%110%32%51%46%49%48%97%45%106%117%109%98%111%70%105%120%43%69%110%104%32%111%102%32%50%48%48%56%49%50%49%54%32%40%105%110%116%101%114%105%109%33%41%-80%-32%124%-127%0%0%4%-59%73%68%65%84%104%-127%-59%-102%109%91%-30%58%16%-122%11%-118%40%-88%108%-83%2%-53%-117%93%123%4%-75%-20%110%53%-83%69%-91%-108%30%20%-1%-1%79%58%-107%-77%72%38%77%-109%73%-126%-41%62%95%-55%-52%77%94%-102%-52%76%98%-111%29%104%-2%-74%26%-115%-22%-29%81%-27%-83%31%35%77%44%51%98%-68%58%60%-19%120%22%-91%-27%-76%57%-70%-8%90%-18%-62%127%6%-56%-83%58%-65%-34%-61%47%-30%94%28%-76%-7%-52%63%122%109%-4%-5%5%-36%-59%73%73%79%105%-75%43%59%-26%14%78%-28%-48%-75%-70%-29%-78%-31%-42%-32%94%96%-87%107%-14%96%71%-36%-80%-18%42%96%115%5%-50%46%-72%-117%-82%26%53%-41%-16%-38%-100%-69%127%-91%-116%-51%-43%-116%-52%-72%-15%-67%14%53%87%123%102%-62%117%94%52%-79%-106%-27%-78%-53%75%-127%-101%-88%79%45%5%102%-66%101%60%119%-66%44%117%58%124%-71%15%38%-66%-1%59%-104%-106%-73%-15%-58%122%-36%-92%-60%101%-89%89%-95%63%-108%120%-32%79%75%-42%94%85%-121%-21%100%60%87%-39%36%-31%-76%-75%111%-98%-72%61%-2%-95%-50%-115%121%115%43%-40%127%23%15%-100%-3%-37%-19%41%115%91%69%47%-35%-107%-48%34%-31%-20%-90%-53%-19%-116%-32%-72%-11%-30%127%-81%75%14%88%66%86%-33%11%86%45%53%-18%-96%48%104%47%-123%-115%-128%-93%-8%119%1%92%87%-31%-38%25%107%-34%-112%118%-10%127%-115%-39%51%-60%-21%43%112%27%-84%113%13%71%-51%-43%103%-65%-66%78%-120%-26%-10%-104%81%-10%-86%114%-101%79%37%-20%88%-43%-48%-36%103%3%44%33%51%-90%-57%-18%5%-110%59%102%-2%-16%88%106%1%-107%48%115%28%32%-71%41%52%-13%21%-79%-124%92%-62%121%-14%18%20%-73%2%-79%-33%-112%43%-103%-42%29%116%-47%68%113%97%-108%-4%-54%13%-106%36%10%-65%1%31%87%14%-126%-5%6%-1%-21%72%3%-101%-81%45%120%66%77%16%-36%0%88%60%106%97%-39%-111%-50%-28%-36%8%44%70%-113%119%-22%97%20%-62%-59%121%41%-27%94%-125%-10%-57%-102%88%-10%99%12%-92%92%120%-2%45%-76%-71%33%-40%61%-36%80%-62%13%-63%48%-73%-124%109%-59%58%0%29%-24%75%-72%125%-48%-102%23%-9%99%-27%-128%-51%-29%78%-62%5%-21%-48%45%70%-3%10%2%51%54%-107%112%31%-103%-43%96%-96%17%-19%-22%42%18%115%95%-23%-58%122%123%-58%70%51%-72%66%-123%92%27%-76%-59%-124%54%2%-127%-120%-76%-14%-121%27%-49%120%-86%-46%77%51%51%44%-36%-7%110%63%-72%-47%-92%-115%-88%86%-24%-18%-111%27%-127%47%-23%-34%66%-89%-46%13%67%46%56%80%-97%44%18%103%40%-84%-75%111%-56%-99%-45%-50%-50%45%-46%-60%97%13%-105%51%-77%-96%83%-117%12%-111%92%113%90%34%87%8%-71%9%18%107%-67%25%114%9%-19%-52%-77%46%-1%10%-41%-75%-20%50%14%43%65%-47%15%-91%-104%118%-106%-49%47%-74%106%-79%-21%117%85%45%3%49%58%48%-28%-10%104%103%-7%-9%75%30%112%-36%95%-122%-36%127%104%103%-45%-100%27%-6%-120%93%50%-1%-117%-122%92%-97%118%-42%92%-97%11%73%-19%-8%-119%39%80%39%27%26%114%65%-35%-95%38%60%7%35%-48%-31%-98%-88%-87%92%96%127%122%23%-97%-5%32%-20%-59%103%-37%60%-127%101%-107%-17%86%-62%-58%-57%116%91%-109%112%-110%-112%91%56%103%98%-18%30%-35%-40%-45%-55%-55%62%5%-14%-69%19%9%23%-100%93%70%3%-67%0%-98%-10%100%-7%2%8%-13%59%6%92%88%-101%-103%-53%-72%48%29%-44%-33%-94%29%-112%-119%102%-46%-4%8%-90%-65%-25%-38%92%-80%105%124%36%-64%-78%-4%55%3%6%-17%-102%88%7%6%23%115%57%-9%16%24%100%-102%-87%10%-100%-82%103%34%-25%-62%21%-67%46%17%-88%-117%-119%45%-10%17%92%-72%-83%90%94%-55%-11%-105%80%76%125%115%25%97%-72%-16%-61%-77%-78%51%117%46%83%-119%94%111%3%-14%-70%-39%41%-76%106%41%23%-80%-104%-14%-43%-48%-58%113%7%-48%76%57%29%29%49%-10%119%4%-57%37%108%-11%-6%72%9%91%101%-126%-118%52%-62%114%-49%-40%-56%30%91%-11%-26%97%55%-31%63%-90%-18%-67%-49%-104%90%15%-24%-49%-72%112%49%-15%64%-16%92%-90%-66%-104%-85%-115%43%-96%21%-17%49%95%55%79%29%80%-9%26%78%-31%-82%-52%-67%65%-104%-11%82%-42%108%-101%100%-31%-18%113%126%20%35%-50%-87%-84%-53%118%-77%104%-12%-13%-13%87%-28%-67%-107%95%112%97%121%13%-47%-13%-112%-88%-58%-71%79%-100%110%23%36%-10%126%48%40%122%-79%-68%-96%-84%112%-24%-44%121%-73%-104%93%123%-37%2%-53%13%-7%-113%24%-38%7%-59%42%-113%125%125%-54%77%4%50%58%62%67%-33%-61%-58%-36%59%-50%92%105%112%115%-71%-15%24%-9%-85%71%101%-49%88%-106%96%65%-32%-17%-99%-29%105%-119%-61%-11%-112%-89%-23%75%-102%-118%94%88%64%-84%-54%61%123%-120%76%-32%-72%-22%50%-117%80%-23%61%-61%-111%54%-10%-23%-116%113%-91%-10%126%-93%112%-49%-120%84%113%71%87%124%55%50%19%63%126%-30%107%-56%-119%127%85%-33%-55%68%13%84%-78%76%-21%-111%87%80%85%127%-113%52%127%-106%-93%40%45%-7%85%122%-99%-9%87%123%-27%-81%52%88%93%29%-39%124%31%90%-17%-66%-94%-101%-30%-43%61%-105%-38%40%77%33%53%-33%-71%-123%99%-7%104%103%126%73%95%13%-72%-71%-110%-119%-88%-45%110%32%-82%-17%25%-67%-97%-20%-33%-74%-72%31%-12%-7%-31%74%22%9%25%-66%-37%36%97%127%-4%-13%-76%-67%-119%-4%-68%116%-38%-84%-83%4%-61%-69%51%-18%-89%102%-77%25%-10%-115%-22%-121%-2%3%52%51%-49%67%-105%-19%90%17%0%0%0%7%116%73%77%69%7%-36%1%6%14%1%5%-46%-52%-24%92%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_0rGQEDrWEeGMCcwsbpLuFA" source="image_papyrus">
+ <details xmi:id="_0rHeMDrWEeGMCcwsbpLuFA" key="image_kind_key" value="icon"/>
+ <details xmi:id="_C7NfsDrXEeGMCcwsbpLuFA" key="image_name_key" value="IconConjUseInterface"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="__nMrwLqNEd-SedGzMDDkww" name="AMIpoll">
+ <icon xmi:id="_JXZ1gDiyEeGiupyIkgMHVw" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%84%0%0%0%101%8%3%0%0%0%-28%-109%52%-5%0%0%0%4%103%65%77%65%0%0%-79%-113%11%-4%97%5%0%0%0%-52%80%76%84%69%0%0%0%-81%-81%-81%-85%-85%-85%-107%-107%-107%-111%-111%-111%-115%-115%-115%-119%-119%-119%119%119%119%115%115%115%111%111%111%107%107%107%85%85%85%81%81%81%77%77%77%73%73%73%69%69%69%-18%-18%-18%-22%-22%-22%-26%-26%-26%51%51%51%-30%-30%-30%47%47%47%43%43%43%39%39%39%-52%-52%-52%-56%-56%-56%-60%-60%-60%17%17%17%-64%-64%-64%13%13%13%9%9%9%5%5%5%-86%-86%-86%-90%-90%-90%-94%-94%-94%-98%-98%-98%-102%-102%-102%-120%-120%-120%-124%-124%-124%-128%-128%-128%124%124%124%102%102%102%98%98%98%94%94%94%90%90%90%86%86%86%82%82%82%-1%-1%-1%-5%-5%-5%-9%-9%-9%68%68%68%-13%-13%-13%64%64%64%60%60%60%56%56%56%52%52%52%-35%-35%-35%-39%-39%-39%34%34%34%-47%-47%-47%30%30%30%-51%-51%-51%26%26%26%24%24%24%22%22%22%-69%-69%-69%-73%-73%-73%-77%-77%-77%-33%61%-9%-93%0%0%0%61%116%69%88%116%83%111%102%116%119%97%114%101%0%88%86%32%118%101%114%115%105%111%110%32%51%46%49%48%97%45%106%117%109%98%111%70%105%120%43%69%110%104%32%111%102%32%50%48%48%56%49%50%49%54%32%40%105%110%116%101%114%105%109%33%41%-80%-32%124%-127%0%0%3%41%73%68%65%84%104%-127%-83%-39%125%91%-38%48%16%0%-16%-29%101%12%-76%32%32%69%17%-95%88%-107%23%-69%45%-43%90%-83%5%117%-32%-9%-1%78%-125%103%-37%67%47%109%115%-105%54%-9%119%-8%61%41%73%-109%-69%43%-120%-14%17%92%86%-105%86%56%-116%15%49%12%-83%-42%26%74%-126%-35%-54%106%8%82%84%74%-95%-125%-58%-117%12%30%98%84%28%125%-84%-74%-99%44%18%-96%87%20%125%-84%127%100%-117%0%83%81%12%85%-112%0%-61%98%-24%-83%-126%4%120%42%-126%-66%61%-87%72%-128%7%125%-44%-97%79%-43%38%-52%-75%-47%-2%25%65%2%-72%-70%-24%104%67%-102%-80%-43%68%107%57%59%19%69%-92%-121%46%25%36%-128%-81%-123%54%115%-99%-15%-85%-41%-88%110%15%81%-83%-51%-123%6%-22%63%100%-125%-45%-50%-3%-91%52%-108%-113%-98%100%-110%-81%-75%94%122%40%27%-99%103%-111%-42%58%115%44%23%-67%-31%-109%108%116%-108%-34%75%-101%93%-18%104%30%-38%77%-17%-7%102%-112%63%-100%-121%-2%72%-19%-95%47%-43%112%22%122%39%-101%118%-92%28%-49%65%-93%-119%100%-122%-118%71%-25%-94%-14%-61%119%8%-109%-125%110%37%-13%-52%-89%126%65%-93%-66%116%-81%15%-87%121%114%-48%26%54%63%-6%-28%47%104%-44%-57%91%-44%-71%-94%77%26%-67%-59%19%-99%51%76%26%-75%-15%102%34%23%-119%-125%86%-16%-61%-65%113%76%18%-75%16%-38%98%-103%20%-38%67%-89%-45%-17%-82%17%20%47%-45%61%-49%-92%-48%48%105%-114%-103%19%37%-48%1%-102%104%-109%105%18%-88%-117%-48%-127%25%-44%67%123%-108%107%18%104%-100%68%-17%-52%-96%17%122%-6%-116%11%-66%8%58%75%-102%54%-37%84%-93%40%-127%96%-66%77%36%-118%-18%-111%-118%33%-12%60%-119%50%14%103%22%58%78%-104%19%-66%-87%68%-125%-126%-21%116%64%-3%-111%91%91%36%-93%-27%-3%-115%95%73%-12%84%11%29%93%0%39%60%29%-12%-115%42%-117%-2%-59%82%7%125%-26%-103%-80%-48%65%57%69%-116%54%-54%13%45%-108%-7%-105%-62%119%29%-12%39%19%-43%90%-3%-63%-104%6%15%-47%-42%65%69%-60%91%127%-51%55%74%116%-81%-73%-57%-72%-114%-114%-15%-103%64%29%77%52%55%-48%5%-51%-53%120%104%20%85%-93%51%67%-24%-73%36%-70%50%-124%-94%-108%111%104%8%-19%-93%-11%103%-25%18%-60%-67%-113%106%-120%-70%33%116%-107%68%-49%13%-95%51%-12%-4%-20%77%-91%70%-5%-24%96%100%-33%-4%68%126%-118%58%112%83%51%-7%-87%-108%75%114%-49%84%2%13%-48%113%-53%77%-91%-87%-22%-28%20%77%-107%-7%86%81%-24%14%-95%78%94%43%70%15%-107%42%-66%23%35%21%-97%-76%85%121%-41%63%93%69%-93%20%29%-100%107%19%-88%92%70%27%-87%-9%83%-99%-119%11%19%-99%9%113%-123%81%70%121%-50%-23%-10%120%-110%-6%108%-96%-37%35%6%-87%-66%20%81%-3%-80%58%104%-82%-124%-62%69%-7%14%90%-6%15%-128%-119%-14%110%-27%-95%65%44%-85%112%82%-70%43%41%46%-45%-55%-31%38%-65%-80%-30%118%122%-85%41%116%-97%-77%-107%-20%-12%74%-119%-59%-1%-80%-34%-53%-95%57%93%126%-69%94%-90%123%46%-35%-41%-57%112%-98%23%35%-23%29%51%-13%69%98%106%91%75%-41%-35%109%-65%92%-9%74%19%21%-115%92%-11%24%15%-70%40%-25%43%-113%-89%-115%-118%119%-14%123%-44%-87%62%42%122%29%2%13%11%-96%-5%13%-85%-82%-68%-118%-95%34%82%78%-42%46%-122%10%113%-93%-8%103%-29%-94%-88%-22%11%111%113%84%-59%-106%64%-9%-73%108%-59%-54%-36%-75%-91%-48%125%-12%-22%97%-38%13%74%-94%-5%8%118%45%27%-61%81%121%-12%16%-2%-70%-46%-16%-38%97%24%-57%113%24%-74%-9%71%-31%31%12%-33%-99%51%8%-119%86%-81%0%0%0%7%116%73%77%69%7%-36%1%6%14%1%45%-25%121%64%-90%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_3DWg4DrWEeGMCcwsbpLuFA" source="image_papyrus">
+ <details xmi:id="_3DXH8DrWEeGMCcwsbpLuFA" key="image_kind_key" value="icon"/>
+ <details xmi:id="_9f8J0DrWEeGMCcwsbpLuFA" key="image_name_key" value="IconAMIPoll"/>
+ </eAnnotations>
+ </icon>
+ <icon xmi:id="_3-hIoDrWEeGMCcwsbpLuFA" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%119%0%0%0%92%8%3%0%0%0%99%-116%-38%77%0%0%0%4%103%65%77%65%0%0%-79%-113%11%-4%97%5%0%0%0%-43%80%76%84%69%0%0%0%-81%-81%-81%-85%-85%-85%-103%-103%-103%-107%-107%-107%-111%-111%-111%-115%-115%-115%-119%-119%-119%119%119%119%115%115%115%111%111%111%107%107%107%85%85%85%81%81%81%77%77%77%73%73%73%69%69%69%-18%-18%-18%-22%-22%-22%-26%-26%-26%51%51%51%-30%-30%-30%47%47%47%43%43%43%39%39%39%35%35%35%-52%-52%-52%-56%-56%-56%-60%-60%-60%17%17%17%-64%-64%-64%13%13%13%-68%-68%-68%9%9%9%5%5%5%-86%-86%-86%-90%-90%-90%-94%-94%-94%-98%-98%-98%-102%-102%-102%-120%-120%-120%-124%-124%-124%-128%-128%-128%124%124%124%120%120%120%102%102%102%98%98%98%94%94%94%90%90%90%86%86%86%-1%-1%-1%-5%-5%-5%-9%-9%-9%68%68%68%-13%-13%-13%64%64%64%60%60%60%56%56%56%52%52%52%-35%-35%-35%-39%-39%-39%-43%-43%-43%34%34%34%-47%-47%-47%30%30%30%-51%-51%-51%26%26%26%22%22%22%-69%-69%-69%-73%-73%-73%-77%-77%-77%-71%82%-104%50%0%0%0%61%116%69%88%116%83%111%102%116%119%97%114%101%0%88%86%32%118%101%114%115%105%111%110%32%51%46%49%48%97%45%106%117%109%98%111%70%105%120%43%69%110%104%32%111%102%32%50%48%48%56%49%50%49%54%32%40%105%110%116%101%114%105%109%33%41%-80%-32%124%-127%0%0%4%-59%73%68%65%84%104%-127%-59%-102%109%91%-30%58%16%-122%11%-118%40%-88%108%-83%2%-53%-117%93%123%4%-75%-20%110%53%-83%69%-91%-108%30%20%-1%-1%79%58%-107%-77%72%38%77%-109%73%-126%-41%62%95%-55%-52%77%94%-102%-52%76%98%-111%29%104%-2%-74%26%-115%-22%-29%81%-27%-83%31%35%77%44%51%98%-68%58%60%-19%120%22%-91%-27%-76%57%-70%-8%90%-18%-62%127%6%-56%-83%58%-65%-34%-61%47%-30%94%28%-76%-7%-52%63%122%109%-4%-5%5%-36%-59%73%73%79%105%-75%43%59%-26%14%78%-28%-48%-75%-70%-29%-78%-31%-42%-32%94%96%-87%107%-14%96%71%-36%-80%-18%42%96%115%5%-50%46%-72%-117%-82%26%53%-41%-16%-38%-100%-69%127%-91%-116%-51%-43%-116%-52%-72%-15%-67%14%53%87%123%102%-62%117%94%52%-79%-106%-27%-78%-53%75%-127%-101%-88%79%45%5%102%-66%101%60%119%-66%44%117%58%124%-71%15%38%-66%-1%59%-104%-106%-73%-15%-58%122%-36%-92%-60%101%-89%89%-95%63%-108%120%-32%79%75%-42%94%85%-121%-21%100%60%87%-39%36%-31%-76%-75%111%-98%-72%61%-2%-95%-50%-115%121%115%43%-40%127%23%15%-100%-3%-37%-19%41%115%91%69%47%-35%-107%-48%34%-31%-20%-90%-53%-19%-116%-32%-72%-11%-30%127%-81%75%14%88%66%86%-33%11%86%45%53%-18%-96%48%104%47%-123%-115%-128%-93%-8%119%1%92%87%-31%-38%25%107%-34%-112%118%-10%127%-115%-39%51%-60%-21%43%112%27%-84%113%13%71%-51%-43%103%-65%-66%78%-120%-26%-10%-104%81%-10%-86%114%-101%79%37%-20%88%-43%-48%-36%103%3%44%33%51%-90%-57%-18%5%-110%59%102%-2%-16%88%106%1%-107%48%115%28%32%-71%41%52%-13%21%-79%-124%92%-62%121%-14%18%20%-73%2%-79%-33%-112%43%-103%-42%29%116%-47%68%113%97%-108%-4%-54%13%-106%36%10%-65%1%31%87%14%-126%-5%6%-1%-21%72%3%-101%-81%45%120%66%77%16%-36%0%88%60%106%97%-39%-111%-50%-28%-36%8%44%70%-113%119%-22%97%20%-62%-59%121%41%-27%94%-125%-10%-57%-102%88%-10%99%12%-92%92%120%-2%45%-76%-71%33%-40%61%-36%80%-62%13%-63%48%-73%-124%109%-59%58%0%29%-24%75%-72%125%-48%-102%23%-9%99%-27%-128%-51%-29%78%-62%5%-21%-48%45%70%-3%10%2%51%54%-107%112%31%-103%-43%96%-96%17%-19%-22%42%18%115%95%-23%-58%122%123%-58%70%51%-72%66%-123%92%27%-76%-59%-124%54%2%-127%-120%-76%-14%-121%27%-49%120%-86%-46%77%51%51%44%-36%-7%110%63%-72%-47%-92%-115%-88%86%-24%-18%-111%27%-127%47%-23%-34%66%-89%-46%13%67%46%56%80%-97%44%18%103%40%-84%-75%111%-56%-99%-45%-50%-50%45%-46%-60%97%13%-105%51%-77%-96%83%-117%12%-111%92%113%90%34%87%8%-71%9%18%107%-67%25%114%9%-19%-52%-77%46%-1%10%-41%-75%-20%50%14%43%65%-47%15%-91%-104%118%-106%-49%47%-74%106%-79%-21%117%85%45%3%49%58%48%-28%-10%104%103%-7%-9%75%30%112%-36%95%-122%-36%127%104%103%-45%-100%27%-6%-120%93%50%-1%-117%-122%92%-97%118%-42%92%-97%11%73%-19%-8%-119%39%80%39%27%26%114%65%-35%-95%38%60%7%35%-48%-31%-98%-88%-87%92%96%127%122%23%-97%-5%32%-20%-59%103%-37%60%-127%101%-107%-17%86%-62%-58%-57%116%91%-109%112%-110%-112%91%56%103%98%-18%30%-35%-40%-45%-55%-55%62%5%-14%-69%19%9%23%-100%93%70%3%-67%0%-98%-10%100%-7%2%8%-13%59%6%92%88%-101%-103%-53%-72%48%29%-44%-33%-94%29%-112%-119%102%-46%-4%8%-90%-65%-25%-38%92%-80%105%124%36%-64%-78%-4%55%3%6%-17%-102%88%7%6%23%115%57%-9%16%24%100%-102%-87%10%-100%-82%103%34%-25%-62%21%-67%46%17%-88%-117%-119%45%-10%17%92%-72%-83%90%94%-55%-11%-105%80%76%125%115%25%97%-72%-16%-61%-77%-78%51%117%46%83%-119%94%111%3%-14%-70%-39%41%-76%106%41%23%-80%-104%-14%-43%-48%-58%113%7%-48%76%57%29%29%49%-10%119%4%-57%37%108%-11%-6%72%9%91%101%-126%-118%52%-62%114%-49%-40%-56%30%91%-11%-26%97%55%-31%63%-90%-18%-67%-49%-104%90%15%-24%-49%-72%112%49%-15%64%-16%92%-90%-66%-104%-85%-115%43%-96%21%-17%49%95%55%79%29%80%-9%26%78%-31%-82%-52%-67%65%-104%-11%82%-42%108%-101%100%-31%-18%113%126%20%35%-50%-87%-84%-53%118%-77%104%-12%-13%-13%87%-28%-67%-107%95%112%97%121%13%-47%-13%-112%-88%-58%-71%79%-100%110%23%36%-10%126%48%40%122%-79%-68%-96%-84%112%-24%-44%121%-73%-104%93%123%-37%2%-53%13%-7%-113%24%-38%7%-59%42%-113%125%125%-54%77%4%50%58%62%67%-33%-61%-58%-36%59%-50%92%105%112%115%-71%-15%24%-9%-85%71%101%-49%88%-106%96%65%-32%-17%-99%-29%105%-119%-61%-11%-112%-89%-23%75%-102%-118%94%88%64%-84%-54%61%123%-120%76%-32%-72%-22%50%-117%80%-23%61%-61%-111%54%-10%-23%-116%113%-91%-10%126%-93%112%-49%-120%84%113%71%87%124%55%50%19%63%126%-30%107%-56%-119%127%85%-33%-55%68%13%84%-78%76%-21%-111%87%80%85%127%-113%52%127%-106%-93%40%45%-7%85%122%-99%-9%87%123%-27%-81%52%88%93%29%-39%124%31%90%-17%-66%-94%-101%-30%-43%61%-105%-38%40%77%33%53%-33%-71%-123%99%-7%104%103%126%73%95%13%-72%-71%-110%-119%-88%-45%110%32%-82%-17%25%-67%-97%-20%-33%-74%-72%31%-12%-7%-31%74%22%9%25%-66%-37%36%97%127%-4%-13%-76%-67%-119%-4%-68%116%-38%-84%-83%4%-61%-69%51%-18%-89%102%-77%25%-10%-115%-22%-121%-2%3%52%51%-49%67%-105%-19%90%17%0%0%0%7%116%73%77%69%7%-36%1%6%14%1%5%-46%-52%-24%92%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus">
+ <eAnnotations xmi:id="_54LY8DrWEeGMCcwsbpLuFA" source="image_papyrus">
+ <details xmi:id="_54MnEDrWEeGMCcwsbpLuFA" key="image_kind_key" value="icon"/>
+ <details xmi:id="_ACEvYDrXEeGMCcwsbpLuFA" key="image_name_key" value="IconConjAMIPoll"/>
+ </eAnnotations>
+ </icon>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_AQZZwLqOEd-SedGzMDDkww" name="AMIcallback">
+ <icon xmi:id="_KoY8QDiyEeGiupyIkgMHVw" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%72%0%0%0%104%8%3%0%0%0%101%-97%70%67%0%0%0%4%103%65%77%65%0%0%-79%-113%11%-4%97%5%0%0%0%-43%80%76%84%69%0%0%0%-81%-81%-81%-85%-85%-85%-103%-103%-103%-107%-107%-107%-111%-111%-111%-115%-115%-115%-119%-119%-119%119%119%119%115%115%115%111%111%111%107%107%107%103%103%103%85%85%85%81%81%81%77%77%77%73%73%73%69%69%69%-18%-18%-18%-22%-22%-22%-26%-26%-26%51%51%51%-30%-30%-30%47%47%47%-34%-34%-34%43%43%43%39%39%39%35%35%35%-52%-52%-52%-56%-56%-56%-60%-60%-60%17%17%17%-64%-64%-64%13%13%13%-68%-68%-68%9%9%9%5%5%5%-86%-86%-86%-90%-90%-90%-94%-94%-94%-98%-98%-98%-102%-102%-102%-120%-120%-120%-124%-124%-124%-128%-128%-128%124%124%124%102%102%102%98%98%98%94%94%94%90%90%90%86%86%86%-1%-1%-1%-5%-5%-5%-9%-9%-9%68%68%68%-13%-13%-13%64%64%64%60%60%60%56%56%56%52%52%52%-35%-35%-35%-39%-39%-39%-43%-43%-43%34%34%34%-47%-47%-47%30%30%30%26%26%26%22%22%22%-69%-69%-69%-73%-73%-73%-77%-77%-77%-51%-46%-59%107%0%0%0%61%116%69%88%116%83%111%102%116%119%97%114%101%0%88%86%32%118%101%114%115%105%111%110%32%51%46%49%48%97%45%106%117%109%98%111%70%105%120%43%69%110%104%32%111%102%32%50%48%48%56%49%50%49%54%32%40%105%110%116%101%114%105%109%33%41%-80%-32%124%-127%0%0%3%-13%73%68%65%84%88%-123%-75%-39%109%67%-86%48%20%0%-32%-39%53%75%-67%105%26%-23%-51%74%52%73%45%-13%-86%13%-13%37%-55%-105%-44%-1%-1%-109%-82%-70%13%6%-116%-77%-93%113%-49%-73%-28%-12%48%-74%113%-40%-128%80%116%12%55%-39%-4%116%78%-56%-14%-13%-6%-9%-13%40%120%-108%32%21%-69%121%85%39%82%52%-14%109%-65%-123%-124%-102%-9%36%20%-85%-92%125%44%84%-67%13%51%-5%-72%-33%30%7%117%-44%-52%62%-78%110%-93%-12%-48%-80%31%-19%16%82%40%98%-95%-30%-89%-12%111%-26%52%-105%-51%-68%79%-66%-91%-97%-26%51%28%100%23%-68%-50%-51%-82%-59%-123%84%47%-67%-50%-65%27%-95%-96%-116%-56%-81%-65%-7%-122%-37%62%119%-101%-107%-73%17%-48%-117%-37%23%70%-24%-102%-35%-66%-21%-22%33%-93%-63%115%51%-74%-30%104%-57%-30%71%23%90%72%-100%-76%-93%62%-36%-30%-121%-57%58%-56%-31%-89%-20%71%37%116%-71%-76%-47%64%57%-106%118%59%-116%-52%-56%-77%-116%50%12%-35%-16%6%-43%-12%109%126%0%-95%54%75%-54%65%-115%-50%-120%-127%-125%-96%-100%56%-101%-66%-43%101%8%26%-78%-79%-81%64%14%-91%31%-20%108%14%0%85%-7%20%-126%-95%36%-53%106%6%-96%-46%-52%-117%95%-18%-48%66%-15%-59%-78%82%62%40%41%-33%-42%34%28%24%-78%89%86%90%-122%54%10%-122%-112%80%-103%15%4%59%-7%64%-122%6%74%72%-29%-48%-54%33%107%34%-25%77%-108%-112%-22%118%-107%99%-50%38%-101%30%-102%105%32%-106%-107%-43%67%-64%13%-78%15%-125%101%117%-62%80%-91%-59%-29%-110%-91%-92%96%40%-63%-78%90%97%104%18%56%-41%68%-15%-33%82%-16%17%122%4%32%58%61%-4%109%-35%64%-114%-51%70%-1%-101%66%16%127%48%-66%65%16%-81%16%61%16%90%-80%-92%70%-88%-18%123%49%92%-79%-100%45%8%-15%-71%-74%59%93%100%-16%70%-101%67%24%58%-29%51%-96%29%-27%60%89%-18%-56%-126%16%-17%110%98%85%-43%-114%99%-78%-29%-53%-95%14%-86%-15%38%-103%79%42%103%-79%-108%90%12%67%-18%-125%-51%82%76%-53%103%-79%-124%27%-37%122%104%84%22%119%-54%-57%34%112%89%110%-83%88%30%70%85%3%-47%-46%74%-28%-109%-63%-38%43%4%-43%-65%-30%113%77%-22%-20%12%58%-120%62%74%107%80%115%-48%105%-83%-41%-83%-117%-98%-89%19%43%65%113%-112%-41%-91%-54%112%-121%65%15%81%67%93%94%14%81%113%-85%21%2%-94%118%-38%-118%112%-6%94%65%-57%64%-14%16%-55%-31%27%72%28%-76%-21%-87%92%-35%-81%52%-14%-2%-46%-119%-123%-10%91%-111%94%69%40%-53%65%104%51%-126%-121%14%81%122%-36%38%-86%-54%-57%-63%-111%80%116%-60%9%57%-25%111%44%-106%63%-125%-38%-127%73%114%42%84%12%12%-21%-55%80%45%56%-51%78%-123%30%-30%-126%-24%-8%4%-56%72%-68%-20%6%-89%37%-105%114%66%111%-6%-26%81%-112%-109%-54%-117%-62%50%-10%65%94%96%-26%81%45%39%13%-78%-68%-75%56%14%58%43%-5%26%-33%61%17%26%-11%2%-35%-103%60%13%-86%-122%106%110%-30%36%40%21%46%-109%-2%81%67%66%41%9%88%-26%95%55%-50%-20%107%45%-41%36%44%-44%116%21%43%-89%92%9%32%-95%-124%123%93%-3%63%-22%22%-29%-96%-110%-104%-77%-26%-103%-102%-63%66%124%-57%73%-54%-91%40%7%7%-119%5%87%5%88%4%98%-96%-30%-73%-34%65%65%124%-28%-83%47%-64%65%65%108%-37%2%47%-109%49%16%-33%-58%-107%-31%109%18%2%-30%-101%-19%103%-48%65%64%35%54%23%87%-102%125%-101%30%-30%-101%-19%46%-123%67%15%-99%51%72%-77%71%70%64%108%105%100%106%28%5%52%-99%-7%-29%-18%-16%-21%-57%-15%-112%58%-46%113%65%-16%108%-4%95%-48%117%92%-48%107%92%-48%-80%16%13%-127%-81%-75%-126%-48%-18%-2%-68%-32%-117%-73%-105%-106%27%-20%21%-76%-26%117%20%-26%-19%113%-102%53%-87%-88%73%-45%67%-4%85%-61%86%-109%-90%-121%28%6%93%-1%24%18%5%82%-13%-42%6%1%-15%89%-95%-71%73%16%-112%-63%42%-101%-75%0%-77%48%31%15%-82%88%-109%-32%-94%-115%-127%120%-115%-124%-117%36%-22%-69%-56%59%-105%-96%119%82%40%-56%48%-11%18%-18%-109%79%91%-36%114%-23%-56%126%66%126%59%18%-53%17%82%-114%26%59%36%52%114%-117%94%-93%-89%94%2%96%63%-117%21%-35%-3%44%33%-123%-74%-30%21%55%22%-94%-122%36%17%82%-97%78%38%19%-33%-73%9%52%68%-115%80%-39%-13%125%-100%-64%67%-69%103%110%-61%15%-7%-54%-17%49%16%117%62%99%-126%-88%-99%24%-57%3%-19%98%-47%-81%-57%3%-19%-30%-95%-35%43%-49%119%113%46%-1%-8%15%83%120%-125%-89%63%57%-45%-36%0%0%0%7%116%73%77%69%7%-36%1%6%14%1%32%-103%-56%60%27%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus"/>
+ <icon xmi:id="_WTUY0ENnEeGoAtSeIK7WLg" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%72%0%0%0%104%8%3%0%0%0%101%-97%70%67%0%0%0%4%103%65%77%65%0%0%-79%-113%11%-4%97%5%0%0%0%-43%80%76%84%69%0%0%0%-81%-81%-81%-85%-85%-85%-103%-103%-103%-107%-107%-107%-111%-111%-111%-115%-115%-115%-119%-119%-119%119%119%119%115%115%115%111%111%111%107%107%107%103%103%103%85%85%85%81%81%81%77%77%77%73%73%73%69%69%69%-18%-18%-18%-22%-22%-22%-26%-26%-26%51%51%51%-30%-30%-30%47%47%47%-34%-34%-34%43%43%43%39%39%39%35%35%35%-52%-52%-52%-56%-56%-56%-60%-60%-60%17%17%17%-64%-64%-64%13%13%13%-68%-68%-68%9%9%9%5%5%5%-86%-86%-86%-90%-90%-90%-94%-94%-94%-98%-98%-98%-102%-102%-102%-120%-120%-120%-124%-124%-124%-128%-128%-128%124%124%124%102%102%102%98%98%98%94%94%94%90%90%90%86%86%86%-1%-1%-1%-5%-5%-5%-9%-9%-9%68%68%68%-13%-13%-13%64%64%64%60%60%60%56%56%56%52%52%52%-35%-35%-35%-39%-39%-39%-43%-43%-43%34%34%34%-47%-47%-47%30%30%30%26%26%26%22%22%22%-69%-69%-69%-73%-73%-73%-77%-77%-77%-51%-46%-59%107%0%0%0%61%116%69%88%116%83%111%102%116%119%97%114%101%0%88%86%32%118%101%114%115%105%111%110%32%51%46%49%48%97%45%106%117%109%98%111%70%105%120%43%69%110%104%32%111%102%32%50%48%48%56%49%50%49%54%32%40%105%110%116%101%114%105%109%33%41%-80%-32%124%-127%0%0%3%-13%73%68%65%84%88%-123%-75%-39%109%67%-86%48%20%0%-32%-39%53%75%-67%105%26%-23%-51%74%52%73%45%-13%-86%13%-13%37%-55%-105%-44%-1%-1%-109%-82%-70%13%6%-116%-77%-93%113%-49%-73%-28%-12%48%-74%113%-40%-128%80%116%12%55%-39%-4%116%78%-56%-14%-13%-6%-9%-13%40%120%-108%32%21%-69%121%85%39%82%52%-14%109%-65%-123%-124%-102%-9%36%20%-85%-92%125%44%84%-67%13%51%-5%-72%-33%30%7%117%-44%-52%62%-78%110%-93%-12%-48%-80%31%-19%16%82%40%98%-95%-30%-89%-12%111%-26%52%-105%-51%-68%79%-66%-91%-97%-26%51%28%100%23%-68%-50%-51%-82%-59%-123%84%47%-67%-50%-65%27%-95%-96%-116%-56%-81%-65%-7%-122%-37%62%119%-101%-107%-73%17%-48%-117%-37%23%70%-24%-102%-35%-66%-21%-22%33%-93%-63%115%51%-74%-30%104%-57%-30%71%23%90%72%-100%-76%-93%62%-36%-30%-121%-57%58%-56%-31%-89%-20%71%37%116%-71%-76%-47%64%57%-106%118%59%-116%-52%-56%-77%-116%50%12%-35%-16%6%-43%-12%109%126%0%-95%54%75%-54%65%-115%-50%-120%-127%-125%-96%-100%56%-101%-66%-43%101%8%26%-78%-79%-81%64%14%-91%31%-20%108%14%0%85%-7%20%-126%-95%36%-53%106%6%-96%-46%-52%-117%95%-18%-48%66%-15%-59%-78%82%62%40%41%-33%-42%34%28%24%-78%89%86%90%-122%54%10%-122%-112%80%-103%15%4%59%-7%64%-122%6%74%72%-29%-48%-54%33%107%34%-25%77%-108%-112%-22%118%-107%99%-50%38%-101%30%-102%105%32%-106%-107%-43%67%-64%13%-78%15%-125%101%117%-62%80%-91%-59%-29%-110%-91%-92%96%40%-63%-78%90%97%104%18%56%-41%68%-15%-33%82%-16%17%122%4%32%58%61%-4%109%-35%64%-114%-51%70%-1%-101%66%16%127%48%-66%65%16%-81%16%61%16%90%-80%-92%70%-88%-18%123%49%92%-79%-100%45%8%-15%-71%-74%59%93%100%-16%70%-101%67%24%58%-29%51%-96%29%-27%60%89%-18%-56%-126%16%-17%110%98%85%-43%-114%99%-78%-29%-53%-95%14%-86%-15%38%-103%79%42%103%-79%-108%90%12%67%-18%-125%-51%82%76%-53%103%-79%-124%27%-37%122%104%84%22%119%-54%-57%34%112%89%110%-83%88%30%70%85%3%-47%-46%74%-28%-109%-63%-38%43%4%-43%-65%-30%113%77%-22%-20%12%58%-120%62%74%107%80%115%-48%105%-83%-41%-83%-117%-98%-89%19%43%65%113%-112%-41%-91%-54%112%-121%65%15%81%67%93%94%14%81%113%-85%21%2%-94%118%-38%-118%112%-6%94%65%-57%64%-14%16%-55%-31%27%72%28%-76%-21%-87%92%-35%-81%52%-14%-2%-46%-119%-123%-10%91%-111%94%69%40%-53%65%104%51%-126%-121%14%81%122%-36%38%-86%-54%-57%-63%-111%80%116%-60%9%57%-25%111%44%-106%63%-125%-38%-127%73%114%42%84%12%12%-21%-55%80%45%56%-51%78%-123%30%-30%-126%-24%-8%4%-56%72%-68%-20%6%-89%37%-105%114%66%111%-6%-26%81%-112%-109%-54%-117%-62%50%-10%65%94%96%-26%81%45%39%13%-78%-68%-75%56%14%58%43%-5%26%-33%61%17%26%-11%2%-35%-103%60%13%-86%-122%106%110%-30%36%40%21%46%-109%-2%81%67%66%41%9%88%-26%95%55%-50%-20%107%45%-41%36%44%-44%116%21%43%-89%92%9%32%-95%-124%123%93%-3%63%-22%22%-29%-96%-110%-104%-77%-26%-103%-102%-63%66%124%-57%73%-54%-91%40%7%7%-119%5%87%5%88%4%98%-96%-30%-73%-34%65%65%124%-28%-83%47%-64%65%65%108%-37%2%47%-109%49%16%-33%-58%-107%-31%109%18%2%-30%-101%-19%103%-48%65%64%35%54%23%87%-102%125%-101%30%-30%-101%-19%46%-123%67%15%-99%51%72%-77%71%70%64%108%105%100%106%28%5%52%-99%-7%-29%-18%-16%-21%-57%-15%-112%58%-46%113%65%-16%108%-4%95%-48%117%92%-48%107%92%-48%-80%16%13%-127%-81%-75%-126%-48%-18%-2%-68%-32%-117%-73%-105%-106%27%-20%21%-76%-26%117%20%-26%-19%113%-102%53%-87%-88%73%-45%67%-4%85%-61%86%-109%-90%-121%28%6%93%-1%24%18%5%82%-13%-42%6%1%-15%89%-95%-71%73%16%-112%-63%42%-101%-75%0%-77%48%31%15%-82%88%-109%-32%-94%-115%-127%120%-115%-124%-117%36%-22%-69%-56%59%-105%-96%119%82%40%-56%48%-11%18%-18%-109%79%91%-36%114%-23%-56%126%66%126%59%18%-53%17%82%-114%26%59%36%52%114%-117%94%-93%-89%94%2%96%63%-117%21%-35%-3%44%33%-123%-74%-30%21%55%22%-94%-122%36%17%82%-97%78%38%19%-33%-73%9%52%68%-115%80%-39%-13%125%-100%-64%67%-69%103%110%-61%15%-7%-54%-17%49%16%117%62%99%-126%-88%-99%24%-57%3%-19%98%-47%-81%-57%3%-19%-30%-95%-35%43%-49%119%113%46%-1%-8%15%83%120%-125%-89%63%57%-45%-36%0%0%0%7%116%73%77%69%7%-36%1%6%14%1%32%-103%-56%60%27%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_GjnlcC8qEeKx7OxAiA06uw" name="PushProdPullCons">
+ <icon xmi:id="_0I0rMEMLEeKGIL695HkFYQ" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%112%0%0%0%103%8%0%0%0%0%-3%88%-103%-76%0%0%7%56%73%68%65%84%104%-127%-75%-102%123%80%21%85%28%-57%-9%-18%-67%92%121%-91%40%-124%38%70%64%-26%11%-33%-118%-29%115%124%84%-90%83%106%-91%-93%2%-115%83%-90%102%-90%-7%-56%-55%-41%-104%58%-26%-116%-40%56%-102%-64%-116%-88%53%101%62%-54%102%-14%81%26%86%102%-58%4%78%102%-120%14%89%62%72%5%-15%9%72%112%-111%-57%-62%-23%42%23%-10%123%118%-49%-18%-98%-35%-69%-2%-2%-29%-100%-33%-2%62%-105%-35%-13%123%-100%-33%57%2%-31%23%-23%-20%-87%-101%-116%-31%-102%-69%38%108%16%-127%31%-105%-38%78%16%-100%83%47%-46%-93%-43%-97%116%17%-59%94%-23%53%-10%3%-85%-34%116%9%15%36%-106%34%86%39%63%28%20%-109%-1%-77%29%-72%-92%-111%39%8%-29%-85%96%52%-75%105%116%90%-75%-51%-64%-116%22%62%-53%66%-28%101%121%-76%122%96%-45%-88%-72%-76%-34%86%-32%-31%80%-95%89%-66%-105%-121%47%61%-39%60%-22%78%-77%19%120%-90%-83%-52%19%-14%-28%-15%-62%56%121%56%116%-97%125%-64%-62%-98%-64%-21%120%93%-98%-88%26%12%19%109%-114%-39%5%44%123%22%-52%10%91%112%-22%-101%64%-104%-119%62%103%15%80%74%114%-128%-43%23%-53%113%-50%-25%22%62%-23%117%-51%22%-32%42%39%-40%-20%83%76%79%-106%-67%-128%-60%81%-58%65%-57%24%-72%-93%5%88%-20%-112%-81%-100%-66%-103%-128%-60%-55%30%-65%-127%-103%-32%16%66%-21%-29%106%-123%11%79%-125%-126%56%-73%-42%79%96%126%52%-104%11%-38%-55%82%-55%121%28%84%2%-42%-7%7%-68%-34%11%95%-40%-70%58%-90%-46%-63%-57%64%39%-28%115%127%-128%-98%-25%-112%55%-29%-66%-122%-38%118%-4%-52%97%-121%-83%3%-91%-23%-24%16%99%52%51%66%-3%-121%34%-24%69%-99%-78%12%92%-29%2%59%61%-117%-75%21%107%-26%-32%-101%-24%-10%-113%69%-32%23%24%70%-94%114%-11%126%90%-59%68%36%14%101%21%6%-58%-64%19%-83%-64%70%-85%31%-12%120%-124%-108%12%69%-30%-72%50%11%64%72%61%-34%-46%-30%-45%6%125%32%-71%26%15%-22%-30%76%-83%-11%-91%13%-68%-35%7%127%-14%74%-74%67%-96%-28%70%-127%126%-64%7%-110%73%-96%-121%-118%-111%111%104%-2%96%-112%-93%97%-16%68%96%-70%73%-32%76%116%-120%81%-9%56%120%-124%-20%13%-126%103%66%-65%50%5%92%-113%14%-47%-11%10%23%-113%-44%111%-62%-68%18%-98%101%2%-72%-41%13%79%70%-98%-26%-29%121%-35%113%41%126%-121%-40%-13%-36%-64%-109%-24%16%-63%-103%-68%60%66%42%95%67%98%127%86%-88%96%1%11%48%67%56%-73%25%57%4%74%-39%88%36%14%47%-27%2%-106%80%14%-79%-62%-40%33%80%-118%-6%-31%-61%83%-85%84%10%106%-96%-12%18%46%-48%100%-11%35%-6%-110%31%11%79%59%22%-87%-36%81%13%-100%-117%-111%127%-104%118%-116%-46%-110%19%88%-61%6%108%52%4%110%70%-121%-120%-27%116%8%74%14%-32%-110%11%82%-26%99%37%112%63%58%68%-60%31%22%120%-92%126%43%102%-103%-106%-118%-88%-81%0%-2%-114%-31%41%-8%59%43%60%66%106%87%99%0%104%-105%71%77%-46%-64%43%88%-127%9%105%90%1%-40%72%60%-77%-48%76%-89%34%77%96%101%95%84%92%96%84%-15%105%75%-7%-85%104%104%48%-106%-57%8%-84%-101%-128%106%-109%121%-73%-104%44%-71%51%4%77%-31%30%22%-127%-117%-47%1%19%-52%59%4%-54%-91%46%96%-53%49%67%-2%56%0%-92%98%125%76%-127%95%60%-17%-14%123%2%-84%57%87%49%-128%-103%-104%-51%-38%-24%-106%122%92%114%-76%53%-40%115%103%-88%-128%-25%-38%-64%-68%-21%-96%-103%-120%-83%33%-69%-15%63%8%57%-92%0%-34%-120%-63%-81%-68%-103%-77%67%-96%43%13%31%81%-7%56%-121%2%86%12%66%-34%60%-21%14%-127%82%-77%16%-115%-58%92%4%96%-35%100%-100%-102%-32%-113%67%-96%84%38%-94%-39%-34%55%101%-32%10%116%-120%-34%37%54%-15%-68%-7%120%36%18%71%120%-102%-128%59%-112%-41%94%111%103%96%86%-118%-79%-1%-31%72%-108%26%-127%-57%48%67%-124%-8%-17%16%40%-25%-79%60%118%-66%-1%16%120%1%-13%-105%75%-93%-100%-76%44%89%-24%110%-31%69%94%96%113%71%124%-49%41%118%56%4%37%-5%-63%29%-59%84%47%-112%-6%-82%-13%-52%-107%76%60%-46%-112%14%-18%56%64%18%-14%112%-63%-116%54%-20%122%88%-112%44%-8%100%125%37%97%62%-16%-30%-17%60%2%-34%5%-88%114%29%-21%-119%-48%94%-2%51%-20%-46%35%-32%-35%-22%15%-1%81%-40%95%68%-64%125%-28%86%27%66%-74%66%42%38%-127%125%71%-94%-41%45%54%-94%79%88%-84%-102%-76%-91%-10%61%92%-110%-61%-68%-91%-65%112%59%0%70%66%-71%55%74%124%-46%-80%5%19%70%-41%-85%-28%-127%-29%83%91%-84%-88%-117%-122%70%-52%-56%1%76%-119%17%15%-1%27%111%-92%-103%-126%-60%78%-73%108%-28%-3%22%1%-106%-125%15%18%31%-16%-2%112%-22%61%87%-40%-58%43%120%6%-20%-70%55%-111%38%32%41%-19%-122%-60%41%-4%-89%44%-6%82%58%2%-84%58%23%18%25%72%10%-80%37%35%44%-78%39%-68%121%-110%-48%-24%-53%77%-91%105%99%2%-2%19%-73%20%-62%70%59%2%120%-35%114%52%57%-80%-71%-8%-10%-43%52%71%-80%1%-23%-38%-25%127%0%104%-56%64%-121%-120%-109%79%115%-102%-86%-74%109%-72%13%13%57%-18%55%48%19%-33%89%120%-74%60%-47%92%-105%-82%68%98%100%30%-53%-120%9%57%-35%14%-84%5%-19%-127%25%-71%-14%-98%-123%121%42%-90%72%109%-60%-124%20%-10%0%91%1%41%56%37%3%-21%-88%-114%-57%0%127%-10%50%-9%-80%115%-19%-104%69%109%51%97%51%83%-47%-101%90%-57%60%-3%60%-74%120%94%71%67%99%-24%62%8%110%-41%-118%-30%80%-15%109%-85%1%64%90%-125%11%52%-31%6%61%75%-19%-128%-13%-15%4%66%88%109%113%-57%77%117%-82%-97%82%30%-27%-48%123%-4%-97%67%64%-41%-75%-35%-110%59%-2%68%117%-82%127%84%78%43%-70%24%123%48%59%90%-22%98%-100%-61%70%93%-32%103%-86%121%101%-97%-122%-38%98%69%-28%-104%-26%81%-67%54%-41%90%-75%-126%-86%19%-75%0%3%64%-76%-39%124%124%15%-5%18%-30%116%-58%-70%83%1%-21%38%82%59%41%115%-123%99%-19%108%92%117%35%24%-35%75%70%115%-81%18%-49%117%-123%-25%-71%111%4%120%-91%-98%-6%32%-35%-103%71%57%-116%126%-23%45%-20%120%-16%53%-12%125%-14%101%48%60%24%-59%-114%-57%-52%-114%112%123%36%46%-31%-34%127%-1%18%14%-113%-75%-44%88%-30%-58%61%111%-25%22%-50%124%76%29%-107%6%102%104%104%-79%-69%-6%-5%49%88%4%127%-51%-59%-93%-70%93%-30%50%-109%39%51%105%24%0%-62%127%-27%-32%81%53%-67%-112%100%-6%-20%105%57%-70%99%7%-29%-126%-68%6%119%97%-62%112%-19%-66%-124%22%80%-102%-122%-18%-40%-29%95%35%-32%-57%88%20%-59%-21%-88%107%-98%-82%-47%-57%-65%35%13%2%-64%1%60%119%-114%-52%-42%-47%-44%62%63%-92%-49%-13%18%43%-11%120%39%35%65%53%84%119%-111%-23%-100%-112%-46%-3%-24%-7%58%1%-32%114%103%80%12%-40%-84%-57%-45%61%3%-50%69%71%118%-90%104%22%-28%119%71%-127%-98%-72%80%-33%109%117%79%-71%-113%96%62%14%-38%-87%-111%-113%-85%-88%19%-82%-119%6%-101%33%-3%-117%3%25%-72%-10%90%-79%-113%-39%-22%-105%-95%7%13%49%-38%-18%25%92%-115%88%-117%-25%52%109%-103%-7%120%43%54%-50%-30%12%27%117%6%64%-23%29%-4%-7%-99%24%-7%-8%80%75%80%-32%-120%73%70%-73%77%60%-44%9%-60%32%-43%11%59%-125%-103%37%100%-105%33%-49%-8%62%-51%93%-22%4%-30%21%69%62%46%-60%-30%-39%-99%-62%54%97%14%72%-82%117%71%-30%108%-86%91%92%54%26%-25%-34%-30%-23%36%115%-36%-119%58%-117%45%79%-9%-73%56%-75%1%121%-29%-54%-75%44%-104%4%-110%99%-104%-113%-57%-62%-65%113%37%6%38%-6%-23%-36%70%49%9%36%-69%-96%86%-23%12%123%-123%108%8%12%-86%-102%-34%31%32%-39%36%7%-128%104%-72%-69%-106%41%-13%-62%-114%-14%-15%56%-127%-46%-30%-26%0%48%6%-118%-37%-13%-51%-25%75%-116%-102%-34%47%-96%55%94%-6%-14%-79%115%55%-116%-42%-114%-9%-15%-60%85%-36%-115%15%-34%-5%-91%37%-109%26%-119%115%-88%-22%-35%87%-88%-119%-17%62%-126%43%-69%82%90%127%-105%-69%-25%94%-123%-27%-53%-55%-34%72%26%-67%-61%68%99%-121%-1%82%50%33%-27%-84%-46%-81%-28%-52%-33%-90%-6%72%-1%3%78%-120%-67%33%108%33%82%26%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus"/>
+ <icon xmi:id="_12mboEMLEeKGIL695HkFYQ" content="-119%80%78%71%13%10%26%10%0%0%0%13%73%72%68%82%0%0%0%112%0%0%0%103%8%0%0%0%0%-3%88%-103%-76%0%0%7%56%73%68%65%84%104%-127%-75%-102%123%80%21%85%28%-57%-9%-18%-67%92%121%-91%40%-124%38%70%64%-26%11%-33%-118%-29%115%124%84%-90%83%106%-91%-93%2%-115%83%-90%102%-90%-7%-56%-55%-41%-104%58%-26%-116%-40%56%-102%-64%-116%-88%53%101%62%-54%102%-14%81%26%86%102%-58%4%78%102%-120%14%89%62%72%5%-15%9%72%112%-111%-57%-62%-23%42%23%-10%123%118%-49%-18%-98%-35%-69%-2%-2%-29%-100%-33%-2%62%-105%-35%-13%123%-100%-33%57%2%-31%23%-23%-20%-87%-101%-116%-31%-102%-69%38%108%16%-127%31%-105%-38%78%16%-100%83%47%-46%-93%-43%-97%116%17%-59%94%-23%53%-10%3%-85%-34%116%9%15%36%-106%34%86%39%63%28%20%-109%-1%-77%29%-72%-92%-111%39%8%-29%-85%96%52%-75%105%116%90%-75%-51%-64%-116%22%62%-53%66%-28%101%121%-76%122%96%-45%-88%-72%-76%-34%86%-32%-31%80%-95%89%-66%-105%-121%47%61%-39%60%-22%78%-77%19%120%-90%-83%-52%19%-14%-28%-15%-62%56%121%56%116%-97%125%-64%-62%-98%-64%-21%120%93%-98%-88%26%12%19%109%-114%-39%5%44%123%22%-52%10%91%112%-22%-101%64%-104%-119%62%103%15%80%74%114%-128%-43%23%-53%113%-50%-25%22%62%-23%117%-51%22%-32%42%39%-40%-20%83%76%79%-106%-67%-128%-60%81%-58%65%-57%24%-72%-93%5%88%-20%-112%-81%-100%-66%-103%-128%-60%-55%30%-65%-127%-103%-32%16%66%-21%-29%106%-123%11%79%-125%-126%56%-73%-42%79%96%126%52%-104%11%-38%-55%82%-55%121%28%84%2%-42%-7%7%-68%-34%11%95%-40%-70%58%-90%-46%-63%-57%64%39%-28%115%127%-128%-98%-25%-112%55%-29%-66%-122%-38%118%-4%-52%97%-121%-83%3%-91%-23%-24%16%99%52%51%66%-3%-121%34%-24%69%-99%-78%12%92%-29%2%59%61%-117%-75%21%107%-26%-32%-101%-24%-10%-113%69%-32%23%24%70%-94%114%-11%126%90%-59%68%36%14%101%21%6%-58%-64%19%-83%-64%70%-85%31%-12%120%-124%-108%12%69%-30%-72%50%11%64%72%61%-34%-46%-30%-45%6%125%32%-71%26%15%-22%-30%76%-83%-11%-91%13%-68%-35%7%127%-14%74%-74%67%-96%-28%70%-127%126%-64%7%-110%73%-96%-121%-118%-111%111%104%-2%96%-112%-93%97%-16%68%96%-70%73%-32%76%116%-120%81%-9%56%120%-124%-20%13%-126%103%66%-65%50%5%92%-113%14%-47%-11%10%23%-113%-44%111%-62%-68%18%-98%101%2%-72%-41%13%79%70%-98%-26%-29%121%-35%113%41%126%-121%-40%-13%-36%-64%-109%-24%16%-63%-103%-68%60%66%42%95%67%98%127%86%-88%96%1%11%48%67%56%-73%25%57%4%74%-39%88%36%14%47%-27%2%-106%80%14%-79%-62%-40%33%80%-118%-6%-31%-61%83%-85%84%10%106%-96%-12%18%46%-48%100%-11%35%-6%-110%31%11%79%59%22%-87%-36%81%13%-100%-117%-111%127%-104%118%-116%-46%-110%19%88%-61%6%108%52%4%110%70%-121%-120%-27%116%8%74%14%-32%-110%11%82%-26%99%37%112%63%58%68%-60%31%22%120%-92%126%43%102%-103%-106%-118%-88%-81%0%-2%-114%-31%41%-8%59%43%60%66%106%87%99%0%104%-105%71%77%-46%-64%43%88%-127%9%105%90%1%-40%72%60%-77%-48%76%-89%34%77%96%101%95%84%92%96%84%-15%105%75%-7%-85%104%104%48%-106%-57%8%-84%-101%-128%106%-109%121%-73%-104%44%-71%51%4%77%-31%30%22%-127%-117%-47%1%19%-52%59%4%-54%-91%46%96%-53%49%67%-2%56%0%-92%98%125%76%-127%95%60%-17%-14%123%2%-84%57%87%49%-128%-103%-104%-51%-38%-24%-106%122%92%114%-76%53%-40%115%103%-88%-128%-25%-38%-64%-68%-21%-96%-103%-120%-83%33%-69%-15%63%8%57%-92%0%-34%-120%-63%-81%-68%-103%-77%67%-96%43%13%31%81%-7%56%-121%2%86%12%66%-34%60%-21%14%-127%82%-77%16%-115%-58%92%4%96%-35%100%-100%-102%-32%-113%67%-96%84%38%-94%-39%-34%55%101%-32%10%116%-120%-34%37%54%-15%-68%-7%120%36%18%71%120%-102%-128%59%-112%-41%94%111%103%96%86%-118%-79%-1%-31%72%-108%26%-127%-57%48%67%-124%-8%-17%16%40%-25%-79%60%118%-66%-1%16%120%1%-13%-105%75%-93%-100%-76%44%89%-24%110%-31%69%94%96%113%71%124%-49%41%118%56%4%37%-5%-63%29%-59%84%47%-112%-6%-82%-13%-52%-107%76%60%-46%-112%14%-18%56%64%18%-14%112%-63%-116%54%-20%122%88%-112%44%-8%100%125%37%97%62%-16%-30%-17%60%2%-34%5%-88%114%29%-21%-119%-48%94%-2%51%-20%-46%35%-32%-35%-22%15%-1%81%-40%95%68%-64%125%-28%86%27%66%-74%66%42%38%-127%125%71%-94%-41%45%54%-94%79%88%-84%-102%-76%-91%-10%61%92%-110%-61%-68%-91%-65%112%59%0%70%66%-71%55%74%124%-46%-80%5%19%70%-41%-85%-28%-127%-29%83%91%-84%-88%-117%-122%70%-52%-56%1%76%-119%17%15%-1%27%111%-92%-103%-126%-60%78%-73%108%-28%-3%22%1%-106%-125%15%18%31%-16%-2%112%-22%61%87%-40%-58%43%120%6%-20%-70%55%-111%38%32%41%-19%-122%-60%41%-4%-89%44%-6%82%58%2%-84%58%23%18%25%72%10%-80%37%35%44%-78%39%-68%121%-110%-48%-24%-53%77%-91%105%99%2%-2%19%-73%20%-62%70%59%2%120%-35%114%52%57%-80%-71%-8%-10%-43%52%71%-80%1%-23%-38%-25%127%0%104%-56%64%-121%-120%-109%79%115%-102%-86%-74%109%-72%13%13%57%-18%55%48%19%-33%89%120%-74%60%-47%92%-105%-82%68%98%100%30%-53%-120%9%57%-35%14%-84%5%-19%-127%25%-71%-14%-98%-123%121%42%-90%72%109%-60%-124%20%-10%0%91%1%41%56%37%3%-21%-88%-114%-57%0%127%-10%50%-9%-80%115%-19%-104%69%109%51%97%51%83%-47%-101%90%-57%60%-3%60%-74%120%94%71%67%99%-24%62%8%110%-41%-118%-30%80%-15%109%-85%1%64%90%-125%11%52%-31%6%61%75%-19%-128%-13%-15%4%66%88%109%113%-57%77%117%-82%-97%82%30%-27%-48%123%-4%-97%67%64%-41%-75%-35%-110%59%-2%68%117%-82%127%84%78%43%-70%24%123%48%59%90%-22%98%-100%-61%70%93%-32%103%-86%121%101%-97%-122%-38%98%69%-28%-104%-26%81%-67%54%-41%90%-75%-126%-86%19%-75%0%3%64%-76%-39%124%124%15%-5%18%-30%116%-58%-70%83%1%-21%38%82%59%41%115%-123%99%-19%108%92%117%35%24%-35%75%70%115%-81%18%-49%117%-123%-25%-71%111%4%120%-91%-98%-6%32%-35%-103%71%57%-116%126%-23%45%-20%120%-16%53%-12%125%-14%101%48%60%24%-59%-114%-57%-52%-114%112%123%36%46%-31%-34%127%-1%18%14%-113%-75%-44%88%-30%-58%61%111%-25%22%-50%124%76%29%-107%6%102%104%104%-79%-69%-6%-5%49%88%4%127%-51%-59%-93%-70%93%-30%50%-109%39%51%105%24%0%-62%127%-27%-32%81%53%-67%-112%100%-6%-20%105%57%-70%99%7%-29%-126%-68%6%119%97%-62%112%-19%-66%-124%22%80%-102%-122%-18%-40%-29%95%35%-32%-57%88%20%-59%-21%-88%107%-98%-82%-47%-57%-65%35%13%2%-64%1%60%119%-114%-52%-42%-47%-44%62%63%-92%-49%-13%18%43%-11%120%39%35%65%53%84%119%-111%-23%-100%-112%-46%-3%-24%-7%58%1%-32%114%103%80%12%-40%-84%-57%-45%61%3%-50%69%71%118%-90%104%22%-28%119%71%-127%-98%-72%80%-33%109%117%79%-71%-113%96%62%14%-38%-87%-111%-113%-85%-88%19%-82%-119%6%-101%33%-3%-117%3%25%-72%-10%90%-79%-113%-39%-22%-105%-95%7%13%49%-38%-18%25%92%-115%88%-117%-25%52%109%-103%-7%120%43%54%-50%-30%12%27%117%6%64%-23%29%-4%-7%-99%24%-7%-8%80%75%80%-32%-120%73%70%-73%77%60%-44%9%-60%32%-43%11%59%-125%-103%37%100%-105%33%-49%-8%62%-51%93%-22%4%-30%21%69%62%46%-60%-30%-39%-99%-62%54%97%14%72%-82%117%71%-30%108%-86%91%92%54%26%-25%-34%-30%-23%36%115%-36%-119%58%-117%45%79%-9%-73%56%-75%1%121%-29%-54%-75%44%-104%4%-110%99%-104%-113%-57%-62%-65%113%37%6%38%-6%-23%-36%70%49%9%36%-69%-96%86%-23%12%123%-123%108%8%12%-86%-102%-34%31%32%-39%36%7%-128%104%-72%-69%-106%41%-13%-62%-114%-14%-15%56%-127%-46%-30%-26%0%48%6%-118%-37%-13%-51%-25%75%-116%-102%-34%47%-96%55%94%-6%-14%-79%115%55%-116%-42%-114%-9%-15%-60%85%-36%-115%15%-34%-5%-91%37%-109%26%-119%115%-88%-22%-35%87%-88%-119%-17%62%-126%43%-69%82%90%127%-105%-69%-25%94%-123%-27%-53%-55%-34%72%26%-67%-61%68%99%-121%-1%82%50%33%-27%-84%-46%-81%-28%-52%-33%-90%-6%72%-1%3%78%-120%-67%33%108%33%82%26%0%0%0%0%73%69%78%68%-82%66%96%-126%" format="Papyrus"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_HmnpEJsrEd61Eo3nmu3JhQ" name="StdPorts">
+ <ownedComment xmi:id="_Yq-O8Nt2Ed6nqsBVkgJEEA" annotatedElement="_-WNegNtxEd6nqsBVkgJEEA">
+ <body>Is called during component activation &amp; deactivation. The two functions may not block i.e. return control to the caller after &quot;a very short&quot; period</body>
+ </ownedComment>
+ <ownedComment xmi:id="_OcN78Nt2Ed6nqsBVkgJEEA" annotatedElement="_N6fa4JsrEd61Eo3nmu3JhQ">
+ <body>Is called during startup. Expected to block. Only one component instance per node may define it.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_N6fa4JsrEd61Eo3nmu3JhQ" name="Cstart" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_OfiosJsrEd61Eo3nmu3JhQ" name="start" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3cU3wCS-Ed-A_I32T0fkaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3cXUACS-Ed-A_I32T0fkaA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_xtlE8ARAEd--t-uhRn9OBA" name="ContainerServices">
+ <ownedComment xmi:id="_hGEOAMT8Ed-zx4a_r4xAYw" annotatedElement="_SiY_AP-EEd6628OhKk_dpg">
+ <body>A thread service supporting the LifeCycle port. Once started, it calls the activate operation (via the required port rLC) of a connected component in a new thread of a specific priority (a configuration attribute). This C++ implementation is based on the POSIX pthread library. It will further assume that the execution is done with root privileges, since these are required to set the thread priority. The thread properties assume round-robin (SCHED_RR) scheduling.
+</body>
+ </ownedComment>
+ <ownedComment xmi:id="_EuvHYCXREeGX6PuSE-DJlQ" annotatedElement="_5J9coCXQEeGX6PuSE-DJlQ">
+ <body> Interceptor variant of thread (inherits all, only difference to Thread superclass: tagged as connector)</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SiY_AP-EEd6628OhKk_dpg" clientDependency="_lrFSQDz9Ed-v9PxuTj6Elw _wCkVcNYGEd-CgJIavLpOxQ" name="Thread">
+ <ownedComment xmi:id="_lCtoICnOEeGxrprK9wB9iA" annotatedElement="_rVfYoMGJEd-Mveea1W_olA">
+ <body>Priority of the thread. The interpretation of the value is OS specific. In case of POSIX; priorities are only taken into accound for threads with a FIFO and round-robin scheduliung policy.</body>
+ </ownedComment>
+ <generalization xmi:id="_6bsEkARAEd--t-uhRn9OBA" general="_-WNegNtxEd6nqsBVkgJEEA"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_ZjdOAP-EEd6628OhKk_dpg" name="rLC" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_rVfYoMGJEd-Mveea1W_olA" name="priority" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_e6XsEFjmEeKaM_PspnG53g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_e6ckkFjmEeKaM_PspnG53g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_e6njsFjmEeKaM_PspnG53g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_lrFSQDz9Ed-v9PxuTj6Elw" name="derived realization of ILifeCycle" client="_SiY_AP-EEd6628OhKk_dpg">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MWW4MAQyEd--t-uhRn9OBA" name="staticAct" specification="_yv198P-EEd6628OhKk_dpg">
+ <language>C/C++</language>
+ <body>((Thread*) arg)->rLC->activate();
+return NULL;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_oP6UcED4Ed-_DOja_sRgWA" name="activate" specification="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <language>C/C++</language>
+ <body>// create thread
+pthread_t pt;
+pthread_create (&amp;pt, NULL, staticAct, (void *) this);
+
+// set priority of thread
+struct sched_param schedParam;
+schedParam.sched_priority = priority;
+pthread_setschedparam (pt, SCHED_RR, &amp;schedParam);
+// TODO: check return code (in particular, SCHED_RR only works for root)
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_yv198P-EEd6628OhKk_dpg" name="staticAct" isStatic="true" method="_MWW4MAQyEd--t-uhRn9OBA">
+ <ownedParameter xmi:id="_1TXqoP-EEd6628OhKk_dpg" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3MCccP-EEd6628OhKk_dpg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3MDDgP-EEd6628OhKk_dpg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3MDqkP-EEd6628OhKk_dpg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_BywjgP-FEd6628OhKk_dpg" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_JmxyMD16Ed-Bk-AHd6yyoA" name="activate" method="_oP6UcED4Ed-_DOja_sRgWA"/>
+ <ownedOperation xmi:id="_JqB6gD16Ed-Bk-AHd6yyoA" name="deactivate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_wCkVcNYGEd-CgJIavLpOxQ" name="ImplRequirement" client="_SiY_AP-EEd6628OhKk_dpg" supplier="_ea234NYGEd-CgJIavLpOxQ"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_WkkjoPNUEeCovO8AYZymZQ" name="CallEvent_">
+ <ownedAttribute xmi:id="_YKtbAPNUEeCovO8AYZymZQ" name="operationID" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aDHHEPNUEeCovO8AYZymZQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aDIVMPNUEeCovO8AYZymZQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_aDKxcPNUEeCovO8AYZymZQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_gQGNwPNUEeCovO8AYZymZQ" name="kind" visibility="public" type="_jQjHAPNUEeCovO8AYZymZQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_imLUUPNUEeCovO8AYZymZQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_imL7YPNUEeCovO8AYZymZQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_imuG4PNUEeCovO8AYZymZQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_-_HCMBI0EeGU49ezpRnvLg" name="portID">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-_LToBI0EeGU49ezpRnvLg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-_L6sBI0EeGU49ezpRnvLg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_qzHgkPNUEeCovO8AYZymZQ" name="params" visibility="public" type="_OU5asFaNEeKxltxu9uR4dg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sMOBgPNUEeCovO8AYZymZQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sMPPoPNUEeCovO8AYZymZQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sMRE0PNUEeCovO8AYZymZQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_JRmo0PNAEeCovO8AYZymZQ" clientDependency="_mI0xEPQXEeCovO8AYZymZQ" name="EventPool">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_MzO8gPNAEeCovO8AYZymZQ" name="control" visibility="public" type="_omxU4PNAEeCovO8AYZymZQ" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_N-OI8PNAEeCovO8AYZymZQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_N-PXEPNAEeCovO8AYZymZQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_N-RzUPNAEeCovO8AYZymZQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_k-OpoPN8EeCovO8AYZymZQ" name="events" visibility="public" type="_WkkjoPNUEeCovO8AYZymZQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mr7hkPN8EeCovO8AYZymZQ" value="20"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mr-k4PN8EeCovO8AYZymZQ" value="20"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_msGgsPN8EeCovO8AYZymZQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="__a1A0PQXEeCovO8AYZymZQ" name="m_size" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A1N7MPQYEeCovO8AYZymZQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A1OiQPQYEeCovO8AYZymZQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_A1QXcPQYEeCovO8AYZymZQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_KnS5QPQYEeCovO8AYZymZQ" name="m_cond" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/osal.uml#_QWlVgPRTEeCUGrV0Hl4JwQ"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KyZ9EPQYEeCovO8AYZymZQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KyakIPQYEeCovO8AYZymZQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_KydncPQYEeCovO8AYZymZQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ig_MUCSlEeG6GJ4vU06VYQ" name="ID_TIMEOUT" isStatic="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IjAlkCSlEeG6GJ4vU06VYQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IjCawCSlEeG6GJ4vU06VYQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_SjUM4CSlEeG6GJ4vU06VYQ" name="" value="-1"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_mI0xEPQXEeCovO8AYZymZQ" name="derived realization of IPoolControl" client="_JRmo0PNAEeCovO8AYZymZQ" supplier="_omxU4PNAEeCovO8AYZymZQ" contract="_omxU4PNAEeCovO8AYZymZQ"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2HjeoPQXEeCovO8AYZymZQ" name="writeEvent" specification="_f1HmEPQREeCovO8AYZymZQ0">
+ <language>C/C++</language>
+ <body>events[0] = event;
+m_size = 1;
+m_cond.signal();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_5Sw2YPQXEeCovO8AYZymZQ" name="size" specification="_FBMo4PQXEeCovO8AYZymZQ0">
+ <language>C/C++</language>
+ <body>return m_size;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9xRCAPQXEeCovO8AYZymZQ" name="readEvent" specification="_tK0poPQWEeCovO8AYZymZQ0">
+ <language>C/C++</language>
+ <body>OS_AL::Time::TimeVal wakeup = OS_AL::Time::TimeVal::current();
+wakeup += timeout;
+int retCode = m_cond.waitUpto (wakeup);
+if (retCode == ETIMEDOUT) {
+ CallEvent_ event;
+ event.operationID = ID_TIMEOUT;
+ return event;
+}
+m_size = 0;
+return events[0];</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JoG14PRUEeCKVJwdD4MMsg" name="EventPool" specification="_lrF08PRTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>m_cond.lock();</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_tK0poPQWEeCovO8AYZymZQ0" name="readEvent" method="_9xRCAPQXEeCovO8AYZymZQ">
+ <ownedParameter xmi:id="_HUTnoCVyEeGaL60JjVj19Q" name="timeout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HUWq8CVyEeGaL60JjVj19Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HUXSACVyEeGaL60JjVj19Q" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_HUZHMCVyEeGaL60JjVj19Q" type="_WkkjoPNUEeCovO8AYZymZQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HUbjcCVyEeGaL60JjVj19Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HUcxkCVyEeGaL60JjVj19Q" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FBMo4PQXEeCovO8AYZymZQ0" name="size" method="_5Sw2YPQXEeCovO8AYZymZQ">
+ <ownedParameter xmi:id="_mKtAYPQXEeCovO8AYZymZQ" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mKvcoPQXEeCovO8AYZymZQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mKwqwPQXEeCovO8AYZymZQ" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_f1HmEPQREeCovO8AYZymZQ0" name="writeEvent" method="_2HjeoPQXEeCovO8AYZymZQ">
+ <ownedParameter xmi:id="_HRdvACVyEeGaL60JjVj19Q" name="event" type="_WkkjoPNUEeCovO8AYZymZQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HUNhACVyEeGaL60JjVj19Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HUOvICVyEeGaL60JjVj19Q" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_lrF08PRTEeCUGrV0Hl4JwQ" name="EventPool" method="_JoG14PRUEeCKVJwdD4MMsg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_elkpwPQREeCovO8AYZymZQ" name="IWriteEvent">
+ <ownedOperation xmi:id="_f1HmEPQREeCovO8AYZymZQ" name="writeEvent" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_wAdzUPQREeCovO8AYZymZQ">
+ <body>&lt;&lt;TextualRepresentation>>public abstract writeEvent (in event:BasicCalls::ContainerServices::Event) ;</body>
+ </ownedComment>
+ <ownedParameter xmi:id="__4qMgCUQEeGXBt65HZzY7g" name="event" type="_WkkjoPNUEeCovO8AYZymZQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__4raoCUQEeGXBt65HZzY7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__4sowCUQEeGXBt65HZzY7g" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_jQjHAPNUEeCovO8AYZymZQ" name="EventKind">
+ <ownedLiteral xmi:id="_jv4uYPNUEeCovO8AYZymZQ" name="CallEvent"/>
+ <ownedLiteral xmi:id="_kuDm0PNUEeCovO8AYZymZQ" name="SignalEvent"/>
+ <ownedLiteral xmi:id="_ljD8MPNUEeCovO8AYZymZQ" name="TimeEvent"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_omxU4PNAEeCovO8AYZymZQ" name="IPoolControl">
+ <generalization xmi:id="_feaHgPQXEeCovO8AYZymZQ" general="_elkpwPQREeCovO8AYZymZQ"/>
+ <generalization xmi:id="_GwxT0CUREeGXBt65HZzY7g" general="_DY2VwCUREeGXBt65HZzY7g"/>
+ <ownedOperation xmi:id="_FBMo4PQXEeCovO8AYZymZQ" name="size" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_NaRMoPQXEeCovO8AYZymZQ">
+ <body>&lt;&lt;TextualRepresentation>>public abstract size () : BasicCalls::Long ;</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_RlkvcPQXEeCovO8AYZymZQ" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rll9kPQXEeCovO8AYZymZQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RlmkoPQXEeCovO8AYZymZQ" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_DY2VwCUREeGXBt65HZzY7g" name="IReadEvent">
+ <ownedOperation xmi:id="_tK0poPQWEeCovO8AYZymZQ" name="readEvent" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_xPdjwPQWEeCovO8AYZymZQ">
+ <body>&lt;&lt;TextualRepresentation>>public abstract readEvent(in timeout : BasicCalls::Long) : BasicCalls::ContainerServices::Event ;</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_PnwykPRREeCUGrV0Hl4JwQ" name="timeout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PofyYPRREeCUGrV0Hl4JwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Pow4IPRREeCUGrV0Hl4JwQ" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Po7QMPRREeCUGrV0Hl4JwQ" type="_WkkjoPNUEeCovO8AYZymZQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PpWG8PRREeCUGrV0Hl4JwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ppl-kPRREeCUGrV0Hl4JwQ" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5J9coCXQEeGX6PuSE-DJlQ" name="ThreadInterceptor">
+ <generalization xmi:id="_9thucCXQEeGX6PuSE-DJlQ" general="_SiY_AP-EEd6628OhKk_dpg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_9V8OQCjYEeGFbebITJYb9g" clientDependency="_F9_-UCjbEeGFbebITJYb9g _SXkHQCo0EeGxrprK9wB9iA" name="PeriodicTimer">
+ <ownedComment xmi:id="_zLeSkCnOEeGxrprK9wB9iA" annotatedElement="_tmNeoCjbEeGFbebITJYb9g">
+ <body>The period length of the perdioci timer in ticks. Currently, a tick corresponds to 1 ms (simulation time in the underlying OS abstraction layer). It is planned to support VSL expressions, i.e. a value/unit pair.</body>
+ </ownedComment>
+ <generalization xmi:id="_Y6lPACjZEeGFbebITJYb9g" general="_-WNegNtxEd6nqsBVkgJEEA"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_ATRiECjZEeGFbebITJYb9g" name="tick" visibility="public" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_Xb-y0AweEd6it_RkGhz_AA"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E3y2ICjZEeGFbebITJYb9g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E30EQCjZEeGFbebITJYb9g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_E33HkCjZEeGFbebITJYb9g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_tmNeoCjbEeGFbebITJYb9g" name="periodLength" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tmmgMCjbEeGFbebITJYb9g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tmnHQCjbEeGFbebITJYb9g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_w262ACnOEeGxrprK9wB9iA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_F9_-UCjbEeGFbebITJYb9g" name="derived realization of ILifeCycle" client="_9V8OQCjYEeGFbebITJYb9g">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RMkvkCjbEeGFbebITJYb9g" name="activate" specification="_F-cDMCjbEeGFbebITJYb9g">
+ <language>C/C++</language>
+ <body>OS_AL::Time::Timer timer;
+OS_AL::Time::TimeVal time = OS_AL::Time::TimeVal::current();
+OS_AL::Time::TimeVal period(periodLength);
+for (;;) {
+ tick->tick();
+ time += period;
+ timer.wakeUp(time);
+}</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_F-cDMCjbEeGFbebITJYb9g" name="activate" method="_RMkvkCjbEeGFbebITJYb9g"/>
+ <ownedOperation xmi:id="_F-iJ0CjbEeGFbebITJYb9g" name="deactivate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1sCBICjZEeGFbebITJYb9g" name="PeriodicTimerRule">
+ <ownedAttribute xmi:id="_6yVMkCjZEeGFbebITJYb9g" name="timer" visibility="public" type="_9V8OQCjYEeGFbebITJYb9g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_54aFgCjaEeGFbebITJYb9g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_54bToCjaEeGFbebITJYb9g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_54eW8CjaEeGFbebITJYb9g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-X6zMCjZEeGFbebITJYb9g" name="PeriodicTimerWithThread">
+ <ownedAttribute xmi:id="_ARs_UCjaEeGFbebITJYb9g" name="timer" visibility="public" type="_9V8OQCjYEeGFbebITJYb9g" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k_FtQCjaEeGFbebITJYb9g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k_G7YCjaEeGFbebITJYb9g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_k_J-sCjaEeGFbebITJYb9g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_RMqEkCjaEeGFbebITJYb9g" name="thread" visibility="public" type="_SiY_AP-EEd6628OhKk_dpg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j8bWYCjaEeGFbebITJYb9g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j8ckgCjaEeGFbebITJYb9g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_j8eZsCjaEeGFbebITJYb9g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_3NSGwCkAEeGDDbdzqSb4UA" name="tick" visibility="public" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_Xb-y0AweEd6it_RkGhz_AA"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_30IrYCkAEeGDDbdzqSb4UA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_30LusCkAEeGDDbdzqSb4UA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_30QnMCkAEeGDDbdzqSb4UA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_iDCL0CjaEeGFbebITJYb9g" name="Connector1">
+ <end xmi:id="_iDCy4CjaEeGFbebITJYb9g" partWithPort="_RMqEkCjaEeGFbebITJYb9g" role="_ZjdOAP-EEd6628OhKk_dpg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iDCy4ijaEeGFbebITJYb9g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iDCy4SjaEeGFbebITJYb9g" value="1"/>
+ </end>
+ <end xmi:id="_iDCy4yjaEeGFbebITJYb9g" partWithPort="_ARs_UCjaEeGFbebITJYb9g" role="__SLXgNtxEd6nqsBVkgJEEA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iDCy5SjaEeGFbebITJYb9g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iDCy5CjaEeGFbebITJYb9g" value="1"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_84IJsCkAEeGDDbdzqSb4UA" name="Connector2">
+ <end xmi:id="_84JX0CkAEeGDDbdzqSb4UA" partWithPort="_ARs_UCjaEeGFbebITJYb9g" role="_ATRiECjZEeGFbebITJYb9g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_84JX0ikAEeGDDbdzqSb4UA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_84JX0SkAEeGDDbdzqSb4UA" value="1"/>
+ </end>
+ <end xmi:id="_84L0ECkAEeGDDbdzqSb4UA" role="_3NSGwCkAEeGDDbdzqSb4UA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_84L0EikAEeGDDbdzqSb4UA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_84L0ESkAEeGDDbdzqSb4UA" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_SXkHQCo0EeGxrprK9wB9iA" name="Dependency1" client="_9V8OQCjYEeGFbebITJYb9g">
+ <supplier xmi:type="uml:Class" href="pathmap://QML_CORE/osal.uml#_ETakYDj8Edy0Rd6V_tf1-Q"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:DataType" xmi:id="_OU5asFaNEeKxltxu9uR4dg" name="ParamValues">
+ <ownedAttribute xmi:id="_RW82cFaNEeKxltxu9uR4dg" name="values" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_IYEXcB-VEd6nGq8wpI2tjg"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TAmU0FaNEeKxltxu9uR4dg" value="200"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TAqmQFaNEeKxltxu9uR4dg" value="200"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_TCDGUFaNEeKxltxu9uR4dg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:DataType" xmi:id="_Y8dPQFaNEeKxltxu9uR4dg" name="QoS">
+ <ownedAttribute xmi:id="_fYeQcFaNEeKxltxu9uR4dg" name="deadline" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_-5FTMB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gFUvYFaNEeKxltxu9uR4dg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gFYZwFaNEeKxltxu9uR4dg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_gFfHcFaNEeKxltxu9uR4dg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_oUVYMFaNEeKxltxu9uR4dg" name="period" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_-5FTMB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rUQF8FaNEeKxltxu9uR4dg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rUSiMFaNEeKxltxu9uR4dg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rW6_cFaNEeKxltxu9uR4dg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xXGZMFaNEeKxltxu9uR4dg" name="readyTime" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_-5FTMB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yjbCYFaNEeKxltxu9uR4dg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yjcQgFaNEeKxltxu9uR4dg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yjeswFaNEeKxltxu9uR4dg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_-WNegNtxEd6nqsBVkgJEEA" name="LifeCycle" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="__SLXgNtxEd6nqsBVkgJEEA" name="lc" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_57__MCS-Ed-A_I32T0fkaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_58tJ0CS-Ed-A_I32T0fkaA" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_y4qB4ARJEd--t-uhRn9OBA" name="containerRules">
+ <ownedComment xmi:id="_q-kFUMTJEd-cLazKlAeYsQ" annotatedElement="_14WtMARJEd--t-uhRn9OBA">
+ <body>This rule adds an interceptor for the lifecycle (lc) port. It will use the Thread implementation that executes the activate method in a new thread of a given priority (property of the interceptor implementation)</body>
+ </ownedComment>
+ <ownedComment xmi:id="_H0IrsDbgEeGdqp2YT1LwWw" annotatedElement="_1sCBICjZEeGFbebITJYb9g">
+ <body>Adds a periodic timer to the container</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_14WtMARJEd--t-uhRn9OBA" name="runStartThread">
+ <ownedAttribute xmi:id="_mvN04PTWEeCn1-FCrfecFg" name="start" visibility="public" type="_5J9coCXQEeGX6PuSE-DJlQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nPVfYPTWEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nPXUkPTWEeCn1-FCrfecFg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="__4GvgPQTEeCovO8AYZymZQ" name="AddEventPool"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_wSPIcF0NEd-12d_h0i1xhQ" name="deployment">
+ <packagedElement xmi:type="uml:Package" xmi:id="_dKFEcCp9EeG1Y7BvjQ0T-w" name="operatingSystems">
+ <packagedElement xmi:type="uml:Class" xmi:id="_17yx8F0NEd-12d_h0i1xhQ" name="vxWorks"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_zVs5cF0NEd-12d_h0i1xhQ" name="Linux"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_4RuHgF0NEd-12d_h0i1xhQ" name="ose/ck"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="__1uEcF0NEd-12d_h0i1xhQ" name="OSEK"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_onKy0Cp9EeG1Y7BvjQ0T-w" name="Cygwin"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_f2AfMCp9EeG1Y7BvjQ0T-w" name="architectures">
+ <packagedElement xmi:type="uml:Class" xmi:id="_PFcW8F0OEd-12d_h0i1xhQ" name="GenericPowerPC"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_CxQBcF0OEd-12d_h0i1xhQ" name="StandardPC"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_KjufQF0OEd-12d_h0i1xhQ" name="GenericARM7"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_uFRRUH7dEd-FNNgSS03RxQ" name="configOptions">
+ <packagedElement xmi:type="uml:Class" xmi:id="_29YhgH7dEd-FNNgSS03RxQ" name="Distribution">
+ <ownedComment xmi:id="_INNDgH7eEd-FNNgSS03RxQ">
+ <body>Use for distributed applications</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3myD0H7dEd-FNNgSS03RxQ" name="Debug">
+ <ownedComment xmi:id="_9u2OQH7dEd-FNNgSS03RxQ">
+ <body>Use for debugging in general</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_7JeHcH7dEd-FNNgSS03RxQ" name="Trace">
+ <ownedComment xmi:id="_MzHesH7eEd-FNNgSS03RxQ">
+ <body>Use for tracing.</body>
+ </ownedComment>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_I19MANYGEd-CgJIavLpOxQ" name="pthread">
+ <packagedElement xmi:type="uml:Class" xmi:id="_ea234NYGEd-CgJIavLpOxQ" name="pthread"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_m7SIwOUYEd-P08Bciq_LqQ" name="perClass">
+ <ownedTemplateSignature xmi:id="_rNm5kOUYEd-P08Bciq_LqQ" parameter="_wfwIoOUYEd-P08Bciq_LqQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_wfwIoOUYEd-P08Bciq_LqQ" parameteredElement="_6uRBMOuqEeCTfOY57pgE3w">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_6uRBMOuqEeCTfOY57pgE3w" name="T" templateParameter="_wfwIoOUYEd-P08Bciq_LqQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_QQPDUCQeEeGj_4swHBbKwg" name="PortIDs">
+ <ownedLiteral xmi:id="_QQPDUSQeEeGj_4swHBbKwg" name="PORTID_[name/]"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_RPCMoOxIEd-2rr_yAeKkjQ" name="methodCall_comp">
+ <ownedComment xmi:id="_q1w5MK8qEeCXIcykFPsB8Q" annotatedElement="_RPCMoOxIEd-2rr_yAeKkjQ">
+ <body>Elements in this package depend not only on the Interface I (which is a non-owned template parameter taken from the methodCall signature), but also on a class parameter T, which is bound to the component within a container binding.
+Be aware that the number of instantiated template packages will be considerably larger compared to a dependency of the interface only</body>
+ </ownedComment>
+ <ownedTemplateSignature xmi:id="_ewC6kOxIEd-2rr_yAeKkjQ" parameter="_WzWVUPfBEd2TbIfwytOyPA _QBCTAOxJEd-2rr_yAeKkjQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_QBCTAOxJEd-2rr_yAeKkjQ" parameteredElement="_zILRsPPlEd-BP4i7K5Y1eA">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_zILRsPPlEd-BP4i7K5Y1eA" name="T" templateParameter="_QBCTAOxJEd-2rr_yAeKkjQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="__lTvkPN0EeCovO8AYZymZQ" name="methodCall_size">
+ <ownedTemplateSignature xmi:id="_EfH-MPN1EeCovO8AYZymZQ" parameter="_WzWVUPfBEd2TbIfwytOyPA _TbLb4PN3EeCovO8AYZymZQ">
+ <ownedParameter xmi:id="_TbLb4PN3EeCovO8AYZymZQ" parameteredElement="_VGE3cPN3EeCovO8AYZymZQ">
+ <ownedParameteredElement xmi:type="uml:LiteralInteger" xmi:id="_VGE3cPN3EeCovO8AYZymZQ" name="size" templateParameter="_TbLb4PN3EeCovO8AYZymZQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_gEZXADY7EeKvFqG4YPX3sg" name="methodCall_port">
+ <ownedTemplateSignature xmi:id="_kCZdoDY7EeKvFqG4YPX3sg" parameter="_WzWVUPfBEd2TbIfwytOyPA _udDzwDY9EeKvFqG4YPX3sg">
+ <ownedParameter xmi:type="uml:ConnectableElementTemplateParameter" xmi:id="_udDzwDY9EeKvFqG4YPX3sg" parameteredElement="_9GMAUDY9EeKvFqG4YPX3sg">
+ <ownedParameteredElement xmi:type="uml:Port" xmi:id="_9GMAUDY9EeKvFqG4YPX3sg" name="P" templateParameter="_udDzwDY9EeKvFqG4YPX3sg"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <profileApplication xmi:id="_O6TiIjLUEd26WNosUASSSw">
+ <eAnnotations xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_ugrx4AHIEd6pm-KfUZMnnQ">
+ <eAnnotations xmi:id="_ugztsAHIEd6pm-KfUZMnnQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_u03PkFRxEd6GqrP6fkWBoQ">
+ <eAnnotations xmi:id="_u1sWAFRxEd6GqrP6fkWBoQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:Port xmi:id="_u1uLMFRxEd6GqrP6fkWBoQ" base_Port="_P4xVsNtuEd2eM5kqcby5ZA" kind="_9Fif4FRxEd6GqrP6fkWBoQ" conjugated="true"/>
+ <FCM:Port xmi:id="_u1uLMVRxEd6GqrP6fkWBoQ" base_Port="_Qk0jYNtuEd2eM5kqcby5ZA" kind="_wySlkFRxEd6GqrP6fkWBoQ" conjugated="true"/>
+ <FCM:Port xmi:id="_u1uLM1RxEd6GqrP6fkWBoQ" base_Port="_rSCxUAytEd6it_RkGhz_AA" kind="_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ <FCM:Port xmi:id="_u1uyQFRxEd6GqrP6fkWBoQ" base_Port="_r5Va0AytEd6it_RkGhz_AA" kind="_wySlkFRxEd6GqrP6fkWBoQ"/>
+ <FCM:PortKind xmi:id="_wySlkFRxEd6GqrP6fkWBoQ" base_Class="_Wtq4sFDlEd6cwecVIgl9nw" providedInterface="_ZzlzMPfBEd2TbIfwytOyPA" providedMappingRule="_nh0TwFdmEd6EBOtlOYpqKw"/>
+ <FCM:PortKind xmi:id="_x5mL4FRxEd6GqrP6fkWBoQ" base_Class="_Wtq4sVDlEd6cwecVIgl9nw" requiredMappingRule="_ZpvdUHU5Ed6R5tffIPrlPg"/>
+ <FCM:PortKind xmi:id="_9Fif4FRxEd6GqrP6fkWBoQ" base_Class="_Wtrfw1DlEd6cwecVIgl9nw" requiredInterface="_ZzlzMPfBEd2TbIfwytOyPA" requiredMappingRule="_hluocFdpEd6EBOtlOYpqKw"/>
+ <FCM:PortKind xmi:id="_pE6GUFR1Ed6GqrP6fkWBoQ" base_Class="_Wtq4slDlEd6cwecVIgl9nw" providedMappingRule="_eKwKYHU5Ed6R5tffIPrlPg"/>
+ <FCM:PortKind xmi:id="_qOK0cFR1Ed6GqrP6fkWBoQ" base_Class="_WtrfwlDlEd6cwecVIgl9nw" requiredMappingRule="_dW32YHU5Ed6R5tffIPrlPg"/>
+ <FCM:InteractionComponent xmi:id="_s8OWIFR1Ed6GqrP6fkWBoQ" base_Class="_KxQBELuXEd2TTr3gJIvazw"/>
+ <FCM:InteractionComponent xmi:id="_vEYVcFR1Ed6GqrP6fkWBoQ" base_Class="_Zx2ZUA1jEd6tvthBDl600Q"/>
+ <FCM:InteractionComponent xmi:id="_wT-8IFR1Ed6GqrP6fkWBoQ" base_Class="_jOU60A1jEd6tvthBDl600Q"/>
+ <l2:ModelLibrary xmi:id="_CQiMQFtQEd6p9KQoJ8hRoA" base_Package="_O6TiIDLUEd26WNosUASSSw"/>
+ <Cpp:CppInclude xmi:id="_sJry0JsqEd61Eo3nmu3JhQ" body="BootLoader bootloader;&#xA;&#xA;int main (int argc, char* argv[])&#xA;{&#xA; bootloader.init ();&#xA; return 0;&#xA;}&#xA;" base_class="_1RehUAGpEd6eR-dxi5su4Q"/>
+ <FCM:Port xmi:id="_OfjPwJsrEd61Eo3nmu3JhQ" base_Port="_OfiosJsrEd61Eo3nmu3JhQ" kind="_wySlkFRxEd6GqrP6fkWBoQ"/>
+ <FCM:Port xmi:id="__SL-kNtxEd6nqsBVkgJEEA" base_Port="__SLXgNtxEd6nqsBVkgJEEA" kind="_wySlkFRxEd6GqrP6fkWBoQ"/>
+ <FCM:Port xmi:id="_Zjd1EP-EEd6628OhKk_dpg" base_Port="_ZjdOAP-EEd6628OhKk_dpg" kind="_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ <Cpp:CppPtr xmi:id="_Aw8hMP-FEd6628OhKk_dpg" base_parameter="_1TXqoP-EEd6628OhKk_dpg"/>
+ <Cpp:CppPtr xmi:id="_NjCToP-FEd6628OhKk_dpg" base_parameter="_BywjgP-FEd6628OhKk_dpg"/>
+ <FCM:DerivedElement xmi:id="_u9zyYARIEd--t-uhRn9OBA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:InteractionComponent xmi:id="_5hzVkARIEd--t-uhRn9OBA" base_Class="_cxVEsK-iEd6DndT7kDY1-A"/>
+ <FCM:ContainerRule xmi:id="_3Jq5MARLEd-OidZzGKCpzg" base_Class="_14WtMARJEd--t-uhRn9OBA" portSet="__SL-kNtxEd6nqsBVkgJEEA" interceptor="_u9ykQARIEd--t-uhRn9OBA" interceptorImpl="_u9ykQARIEd--t-uhRn9OBA"/>
+ <Cpp:CppInclude xmi:id="_Q7TVYBJcEd-QgZm_R1AKbA" body="#include &lt;pthread.h>" base_class="_SiY_AP-EEd6628OhKk_dpg"/>
+ <FCM:Port xmi:id="_WhfjKylYEd-eoo60eNyGlg"/>
+ <FCM:DerivedElement xmi:id="_CvwokClZEd-eoo60eNyGlg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_FzffUClZEd-eoo60eNyGlg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_M0_fQClxEd-eoo60eNyGlg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_TDYesClyEd-eoo60eNyGlg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_T2uAIClyEd-eoo60eNyGlg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_W_pf8ClyEd-eoo60eNyGlg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_egrzAClzEd-eoo60eNyGlg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:InteractionComponent xmi:id="_efp4QClzEd-eoo60eNyGlg" base_Class="_Whe8EClYEd-eoo60eNyGlg"/>
+ <FCM:DerivedElement xmi:id="_cWdkwCsAEd-uZPFNCty7PQ">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:Port xmi:id="_N0to8Cu4Ed-uZPFNCty7PQ" base_Port="_N0tB4Cu4Ed-uZPFNCty7PQ" kind="_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ <l2:Create xmi:id="_WFy8ECu9Ed-uZPFNCty7PQ" base_BehavioralFeature="_JM4I4Cu9Ed-uZPFNCty7PQ"/>
+ <Cpp:CppExternClass xmi:id="_EbeZ8Cu-Ed-uZPFNCty7PQ" name="semaphore.h" base_class="_BY-fwCnxEd-eoo60eNyGlg"/>
+ <Cpp:CppExternClass xmi:id="_7tUvUCvDEd-uZPFNCty7PQ" name="pthread.h" base_class="_5KatsCvDEd-uZPFNCty7PQ"/>
+ <Cpp:CppPtr xmi:id="_G6PMUCvHEd-uZPFNCty7PQ" base_parameter="_Dn-xYCvHEd-uZPFNCty7PQ"/>
+ <Cpp:CppPtr xmi:id="_NPp2QCvHEd-uZPFNCty7PQ" base_parameter="_IdnDkCvHEd-uZPFNCty7PQ"/>
+ <Cpp:CppConst xmi:id="_dtZbECvHEd-uZPFNCty7PQ" base_property="_Xq00oCvHEd-uZPFNCty7PQ"/>
+ <FCM:DerivedElement xmi:id="_uCGF8DAXEd-lz72LqmDbzA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_fYvj8DNZEd-0bO2vHbUkEA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:Template xmi:id="_iOmWwDNZEd-0bO2vHbUkEA" base_Element="_KOvHsPiREd2UhpY2Y3WUyg" kind="LoopOperations" templateParam="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <FCM:Template xmi:id="_qcrLcDNZEd-0bO2vHbUkEA" base_Element="__y0hwJ08Ed6l5bTPBsl00Q" kind="LoopOperations" formalParam="_ZzlzMPfBEd2TbIfwytOyPA" templateParam="_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <FCM:DerivedElement xmi:id="_K9PRoDNwEd-1k-POY2IaLg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_JqAFUD16Ed-Bk-AHd6yyoA" base_Element="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_JqEWwD16Ed-Bk-AHd6yyoA" base_Element="_JqB6gD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_RTu-gED2Ed-_DOja_sRgWA" base_Element="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_RUIAEED2Ed-_DOja_sRgWA" base_Element="_JqB6gD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppPtr xmi:id="_5048MED6Ed-_DOja_sRgWA" base_property="_2fcqYED6Ed-_DOja_sRgWA"/>
+ <FCM:DerivedElement xmi:id="_xsrykEJFEd-Ps4Bfh0j9LQ" base_Element="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_xs0VcEJFEd-Ps4Bfh0j9LQ" base_Element="_JqB6gD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_qBaUMFJEEd-OfYmxqPWG5g" base_Element="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_qBeloFJEEd-OfYmxqPWG5g" base_Element="_JqB6gD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_t--FUF0NEd-12d_h0i1xhQ" base_Element="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_t_EzAF0NEd-12d_h0i1xhQ" base_Element="_JqB6gD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:OperatingSystem xmi:id="_1eULwF0NEd-12d_h0i1xhQ" base_Class="_zVs5cF0NEd-12d_h0i1xhQ"/>
+ <FCM:OperatingSystem xmi:id="_3MI_gF0NEd-12d_h0i1xhQ" base_Class="_17yx8F0NEd-12d_h0i1xhQ"/>
+ <FCM:OperatingSystem xmi:id="_8h8mkF0NEd-12d_h0i1xhQ" base_Class="_4RuHgF0NEd-12d_h0i1xhQ"/>
+ <FCM:OperatingSystem xmi:id="_BL7pcF0OEd-12d_h0i1xhQ" base_Class="__1uEcF0NEd-12d_h0i1xhQ"/>
+ <FCM:TargetArchitecture xmi:id="_FYOqwF0OEd-12d_h0i1xhQ" base_Class="_CxQBcF0OEd-12d_h0i1xhQ"/>
+ <FCM:TargetArchitecture xmi:id="_W5gJIF0OEd-12d_h0i1xhQ" base_Class="_KjufQF0OEd-12d_h0i1xhQ"/>
+ <FCM:TargetArchitecture xmi:id="_YHIZ4F0OEd-12d_h0i1xhQ" base_Class="_PFcW8F0OEd-12d_h0i1xhQ"/>
+ <FCM:DerivedElement xmi:id="_FWe6IG4sEd-0rs2VEGIwsA" base_Element="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_FWlAwG4sEd-0rs2VEGIwsA" base_Element="_JqB6gD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_9Kl8IG4-Ed-J1L578xi-WA" base_Element="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_9K4QAG4-Ed-J1L578xi-WA" base_Element="_JqB6gD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_Si_2kG5fEd-5CZIeuHpHAg" base_Element="_JmxyMD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_SjXqAG5fEd-5CZIeuHpHAg" base_Element="_JqB6gD16Ed-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:ConfigOption xmi:id="_tA2KcH7eEd-FNNgSS03RxQ" base_Class="_3myD0H7dEd-FNNgSS03RxQ"/>
+ <FCM:ConfigOption xmi:id="_t2ziEH7eEd-FNNgSS03RxQ" base_Class="_29YhgH7dEd-FNNgSS03RxQ"/>
+ <FCM:ConfigOption xmi:id="_u6LqoH7eEd-FNNgSS03RxQ" base_Class="_7JeHcH7dEd-FNNgSS03RxQ"/>
+ <FCM:Template xmi:id="_3IqLUKE1Ed-r8p-5QgO3cg" base_Element="_pXzxjkJ1Ed-Ps4Bfh0j9LQ" kind="LoopOperations"/>
+ <FCM:Template xmi:id="_9u11IKE1Ed-r8p-5QgO3cg" base_Element="_2bwsEClzEd-eoo60eNyGlg" kind="LoopOperations"/>
+ <FCM:PortKind xmi:id="_H5-aQLqOEd-SedGzMDDkww" base_Class="_AQZZwLqOEd-SedGzMDDkww"/>
+ <FCM:PortKind xmi:id="_KtgR0LqOEd-SedGzMDDkww" base_Class="__nMrwLqNEd-SedGzMDDkww"/>
+ <FCM:ConfigurationProperty xmi:id="_s0fGMMGJEd-Mveea1W_olA" base_Property="_rVfYoMGJEd-Mveea1W_olA"/>
+ <FCM:CppLibrary xmi:id="_OQ81ENYGEd-CgJIavLpOxQ" base_Package="_I19MANYGEd-CgJIavLpOxQ">
+ <libs>pthread</libs>
+ </FCM:CppLibrary>
+ <Cpp:CppExternClass xmi:id="_p8NbMNYGEd-CgJIavLpOxQ" name="pthread.h" base_class="_ea234NYGEd-CgJIavLpOxQ"/>
+ <FCM:InteractionComponent xmi:id="_8BUh8NdwEd-ZnqCk2P2ZKg" base_Class="_3itBkNdwEd-ZnqCk2P2ZKg"/>
+ <FCM:Template xmi:id="_CTIeQNdxEd-ZnqCk2P2ZKg" base_Element="_3itBoddwEd-ZnqCk2P2ZKg" kind="LoopOperations"/>
+ <Cpp:CppType xmi:id="_68Aa4No9Ed-wvpj-p-V_QQ" definition="union {&#xA;&lt;%for (ownedOperations) {%>&#xA;struct Op_&lt;%name%> {&#xA;&lt;%for (ownedParameters) {%>&#xA;&lt;%cppType%> &lt;%name%>;&#xA;&lt;%}%>&#xA;} op_&lt;%name%>;&#xA;&lt;%}%>&#xA;};" base_primitivetype="_xOqL0No9Ed-wvpj-p-V_QQ"/>
+ <FCM:InteractionComponent xmi:id="_xaHRQDJKEeCAhMtIsY9HwA" base_Class="_pXzKcEJ1Ed-Ps4Bfh0j9LQ"/>
+ <FCM:Port xmi:id="_wz4-ULaaEeCj_-LEBuGpmA" base_Port="__SLXgNtxEd6nqsBVkgJEEA"/>
+ <FCM:Port xmi:id="_xdIvoLaaEeCj_-LEBuGpmA" base_Port="_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <FCM:Port xmi:id="_MzPjkPNAEeCovO8AYZymZQ" base_Port="_MzO8gPNAEeCovO8AYZymZQ" kind="_wySlkFRxEd6GqrP6fkWBoQ"/>
+ <FCM:Template xmi:id="_c_dkcPNJEeCovO8AYZymZQ" base_Element="_aGt1sPNJEeCovO8AYZymZQ" kind="LoopOperations"/>
+ <FCM:ImplementationProperties xmi:id="_WIe68PQMEeCovO8AYZymZQ" base_Class="__uJRYPNGEeCovO8AYZymZQ"/>
+ <FCM:ContainerRule xmi:id="_F1wZsPQUEeCovO8AYZymZQ" base_Class="__4GvgPQTEeCovO8AYZymZQ" extensionKind="Aggregation" extension="_WhKAAPQUEeCovO8AYZymZQ"/>
+ <FCM:DerivedElement xmi:id="_mKpWAPQXEeCovO8AYZymZQ" base_Element="_tK0poPQWEeCovO8AYZymZQ0" source="_tK0poPQWEeCovO8AYZymZQ"/>
+ <FCM:DerivedElement xmi:id="_mK0VIPQXEeCovO8AYZymZQ" base_Element="_FBMo4PQXEeCovO8AYZymZQ0" source="_FBMo4PQXEeCovO8AYZymZQ"/>
+ <FCM:DerivedElement xmi:id="_mK7C0PQXEeCovO8AYZymZQ" base_Element="_f1HmEPQREeCovO8AYZymZQ0" source="_f1HmEPQREeCovO8AYZymZQ"/>
+ <l2:Create xmi:id="_o4VNAPRTEeCUGrV0Hl4JwQ" base_BehavioralFeature="_lrF08PRTEeCUGrV0Hl4JwQ"/>
+ <FCM:InterceptionRule xmi:id="_qlcF8AJzEeG0Lb1KYG16fA" interceptionSet="__SLXgNtxEd6nqsBVkgJEEA" base_Property="_mvN04PTWEeCn1-FCrfecFg" portSet="__SL-kNtxEd6nqsBVkgJEEA"/>
+ <FCM:Template xmi:id="_QUZxoCQeEeGj_4swHBbKwg" base_Element="_QQPDUSQeEeGj_4swHBbKwg" kind="LoopPorts"/>
+ <Cpp:CppConst xmi:id="_MGjk0CSlEeG6GJ4vU06VYQ" base_property="_Ig_MUCSlEeG6GJ4vU06VYQ"/>
+ <Cpp:CppInclude xmi:id="_Yx49gCaeEeG4fZdVXNtoOQ" body="#include &lt;errno.h>" base_class="_JRmo0PNAEeCovO8AYZymZQ"/>
+ <FCM:InteractionComponent xmi:id="_OXit8CfwEeG6iME5Q8XPKw" base_Class="_5J9coCXQEeGX6PuSE-DJlQ"/>
+ <FCM:Port xmi:id="_ATRiESjZEeGFbebITJYb9g" base_Port="_ATRiECjZEeGFbebITJYb9g" kind="_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ <FCM:ContainerRule xmi:id="_MS45QCjaEeGFbebITJYb9g" base_Class="_1sCBICjZEeGFbebITJYb9g"/>
+ <FCM:DerivedElement xmi:id="_F-g7sCjbEeGFbebITJYb9g" base_Element="_F-cDMCjbEeGFbebITJYb9g">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_F-l0MCjbEeGFbebITJYb9g" base_Element="_F-iJ0CjbEeGFbebITJYb9g">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:ConfigurationProperty xmi:id="_zVumMCjbEeGFbebITJYb9g" base_Property="_tmNeoCjbEeGFbebITJYb9g"/>
+ <FCM:Port xmi:id="_3NSGwSkAEeGDDbdzqSb4UA" base_Port="_3NSGwCkAEeGDDbdzqSb4UA" kind="_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ <FCM:OperatingSystem xmi:id="_r4nVcCp9EeG1Y7BvjQ0T-w" base_Class="_onKy0Cp9EeG1Y7BvjQ0T-w"/>
+ <FCM:Port xmi:id="_-nlmgENqEeGoAtSeIK7WLg" base_Port="_-nk_cENqEeGoAtSeIK7WLg" kind="_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ <FCM:Port xmi:id="_9gJEAENvEeGoAtSeIK7WLg" base_Port="_9gIc8ENvEeGoAtSeIK7WLg" kind="_pE6GUFR1Ed6GqrP6fkWBoQ"/>
+ <FCM:Port xmi:id="_MhIhgENxEeGoAtSeIK7WLg" base_Port="_MhH6cENxEeGoAtSeIK7WLg" kind="_pE6GUFR1Ed6GqrP6fkWBoQ"/>
+ <FCM:Port xmi:id="_Zd6hAENxEeGoAtSeIK7WLg" base_Port="_Zd558ENxEeGoAtSeIK7WLg" kind="_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ <FCM:Port xmi:id="_i6QeoEN8EeGfhclnRyNzoA" base_Port="_i5SOQEN8EeGfhclnRyNzoA" kind="_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ <FCM:Port xmi:id="_0KaqgF7pEeGEmrrwB1vhPg" base_Port="_0KY1UF7pEeGEmrrwB1vhPg" kind="_wySlkFRxEd6GqrP6fkWBoQ" conjugated="true"/>
+ <FCM:Template xmi:id="_GNBM8F7tEeGEmrrwB1vhPg" base_Element="_ChD4kF7tEeGEmrrwB1vhPg" kind="LoopOperations"/>
+ <FCM:InteractionComponent xmi:id="_UBcmIF7tEeGEmrrwB1vhPg" base_Class="_Mo2kwF7pEeGEmrrwB1vhPg"/>
+ <FCM:InteractionComponent xmi:id="_Z3Zs4F7tEeGEmrrwB1vhPg" base_Class="_TLShkF7qEeGEmrrwB1vhPg"/>
+ <FCM:PortKind xmi:id="_SrCqQC8qEeKx7OxAiA06uw" base_Class="_GjnlcC8qEeKx7OxAiA06uw"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.di
new file mode 100644
index 00000000000..590d764ad54
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.di
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <di:SashWindowsMngr>
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="fifo.notation#_tANfhSiLEeC_VbmKpDkWDw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="fifo.notation#_tAH_8CiLEeC_VbmKpDkWDw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="fifo.notation#_tAH_8iiLEeC_VbmKpDkWDw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="fifo.notation#_OBa8YK8wEeCXIcykFPsB8Q"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="fifo.notation#_A5pi4K_2EeC6ALhykKLu_g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="fifo.notation#_sVGAsP3IEeC1YdT2qA0bjA"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="/0/@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="fifo.notation#_tAH_8CiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="fifo.notation#_tAH_8iiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="fifo.notation#_tANfhSiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="fifo.notation#_OBa8YK8wEeCXIcykFPsB8Q"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="fifo.notation#_A5pi4K_2EeC6ALhykKLu_g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="fifo.notation#_sVGAsP3IEeC1YdT2qA0bjA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+ </di:SashWindowsMngr>
+ <di:TabFolder/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.notation
new file mode 100644
index 00000000000..9f4fa25c06a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.notation
@@ -0,0 +1,1362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_tAH_8CiLEeC_VbmKpDkWDw" type="PapyrusUMLClassDiagram" name="DefaultDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_tAH_8SiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Model" href="fifo.uml#_ePwqkHLmEd6R5tffIPrlPg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_tAH_8iiLEeC_VbmKpDkWDw" type="CompositeStructure" name="Composite diagram of DataExchange" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_tAH_8yiLEeC_VbmKpDkWDw" type="2073">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAH_9CiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAInACiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAInASiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAInAiiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAInAyiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAInBCiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KQJp4C_gEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KQKQ8C_gEeKl_vDGXh-OPw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KQKQ8S_gEeKl_vDGXh-OPw" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KQKQ8i_gEeKl_vDGXh-OPw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KQKQ8y_gEeKl_vDGXh-OPw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KQKQ9C_gEeKl_vDGXh-OPw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAInBSiLEeC_VbmKpDkWDw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAInBiiLEeC_VbmKpDkWDw" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAInByiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tAInCCiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAInCSiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAInCiiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAInCyiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAInDCiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAInDSiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAInDiiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TpPwIDvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YuekkDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YuekkTvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YuekkjvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YuekkzvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YufLoDvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAInDyiLEeC_VbmKpDkWDw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SPljQDFrEeCz5-DK9j5azg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Up7EAEsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAInECiLEeC_VbmKpDkWDw" x="19"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAInESiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAInEiiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAInEyiLEeC_VbmKpDkWDw" x="-10" y="54" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KnLAYDFrEeCz5-DK9j5azg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KnLncDFrEeCz5-DK9j5azg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KnLncTFrEeCz5-DK9j5azg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KnMOgDFrEeCz5-DK9j5azg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KnMOgTFrEeCz5-DK9j5azg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KnMOgjFrEeCz5-DK9j5azg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KnMOgzFrEeCz5-DK9j5azg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VzA5ADvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WWOTwDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WWO60DvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WWO60TvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WWO60jvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WWO60zvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KnMOhDFrEeCz5-DK9j5azg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SvsmsDFrEeCz5-DK9j5azg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VRzjYEsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KnMOhTFrEeCz5-DK9j5azg" x="-45"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KnMOhjFrEeCz5-DK9j5azg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_KnMOhzFrEeCz5-DK9j5azg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KnLAYTFrEeCz5-DK9j5azg" x="189" y="54"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tAKcMCiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Class" href="fifo.uml#_wh_EwHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAKcMSiLEeC_VbmKpDkWDw" x="315" y="234" width="199" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tAKcMiiLEeC_VbmKpDkWDw" type="2073">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAKcMyiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAKcNCiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAKcNSiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAKcNiiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAKcNyiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAKcOCiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Jfdz0C_gEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jfea4C_gEeKl_vDGXh-OPw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jfea4S_gEeKl_vDGXh-OPw" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jfea4i_gEeKl_vDGXh-OPw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jfea4y_gEeKl_vDGXh-OPw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jfea5C_gEeKl_vDGXh-OPw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAKcOSiLEeC_VbmKpDkWDw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAKcOiiLEeC_VbmKpDkWDw" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAKcOyiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tAKcPCiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAKcPSiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAKcPiiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAKcPyiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALDQCiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALDQSiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALDQiiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QnPXsDvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RKfOsDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RKfOsTvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RKfOsjvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RKfOszvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RKfOtDvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tALDQyiLEeC_VbmKpDkWDw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Rf_5YDFrEeCz5-DK9j5azg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WfamAEsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tALDRCiLEeC_VbmKpDkWDw" x="28" y="2"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tALDRSiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tALDRiiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tALDRyiLEeC_VbmKpDkWDw" x="-10" y="52" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ItWYADFrEeCz5-DK9j5azg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItYNMDFrEeCz5-DK9j5azg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ItYNMTFrEeCz5-DK9j5azg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItY0QDFrEeCz5-DK9j5azg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ItY0QTFrEeCz5-DK9j5azg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ItZbUDFrEeCz5-DK9j5azg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ItZbUTFrEeCz5-DK9j5azg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SCoXoDvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SXw6IDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SXxhMDvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SXxhMTvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SXxhMjvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SXxhMzvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ItZbUjFrEeCz5-DK9j5azg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q-OpEDFrEeCz5-DK9j5azg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_V6fUAEsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ItZbUzFrEeCz5-DK9j5azg" x="-54" y="2"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ItZbVDFrEeCz5-DK9j5azg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ItZbVTFrEeCz5-DK9j5azg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_TRsvoHLoEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ItWYATFrEeCz5-DK9j5azg" x="189" y="52"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tALDSCiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Class" href="fifo.uml#_zc4voHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tALDSSiLEeC_VbmKpDkWDw" x="72" y="234" width="199" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tALDSiiLEeC_VbmKpDkWDw" type="2073">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALDSyiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALDTCiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALDTSiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALDTiiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALDTyiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALDUCiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tALDUSiLEeC_VbmKpDkWDw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tALDUiiLEeC_VbmKpDkWDw" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tALDUyiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tALDVCiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALDVSiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALDViiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALDVyiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALDWCiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALDWSiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALDWiiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L7vR4DvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MccLMDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MccLMTvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MccLMjvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MccyQDvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MccyQTvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tALDWyiLEeC_VbmKpDkWDw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TPGEwEsREeKoOoLe6CnFrA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TZMb8EsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tALDXCiLEeC_VbmKpDkWDw" x="19" y="1"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tALDXSiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tALDXiiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tALqUCiLEeC_VbmKpDkWDw" x="-10" y="53" width="20" height="20"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tALqUSiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Class" href="fifo.uml#_unqQoHLnEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tALqUiiLEeC_VbmKpDkWDw" x="225" y="36" width="145" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tALqUyiLEeC_VbmKpDkWDw" type="2073">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALqVCiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALqVSiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALqViiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALqVyiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALqWCiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALqWSiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tALqWiiLEeC_VbmKpDkWDw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tALqWyiLEeC_VbmKpDkWDw" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tALqXCiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tALqXSiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALqXiiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALqXyiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALqYCiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALqYSiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALqYiiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALqYyiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NxQpEDvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PbnSEDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PbnSETvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PbnSEjvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PbnSEzvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PbnSFDvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tALqZCiLEeC_VbmKpDkWDw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T5gTsEsREeKoOoLe6CnFrA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UAbbEEsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tALqZSiLEeC_VbmKpDkWDw" x="-99" y="1"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tALqZiiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tALqZyiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tALqaCiLEeC_VbmKpDkWDw" x="108" y="54" width="20" height="20"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tALqaSiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Class" href="fifo.uml#_wtZ1IHLnEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tALqaiiLEeC_VbmKpDkWDw" x="396" y="35" width="118" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tALqayiLEeC_VbmKpDkWDw" type="2073">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tALqbCiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tALqbSiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAMRYCiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAMRYSiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAMRYiiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAMRYyiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAMRZCiLEeC_VbmKpDkWDw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAMRZSiLEeC_VbmKpDkWDw" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAMRZiiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tAMRZyiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAMRaCiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAMRaSiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAMRaiiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAMRayiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAMRbCiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAMRbSiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Nr5gMDFsEeCz5-DK9j5azg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K0gkEDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K0gkETvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K0gkEjvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K0gkEzvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_K0hLIDvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAMRbiiLEeC_VbmKpDkWDw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_STibcEsREeKoOoLe6CnFrA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SrEKoEsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAMRbyiLEeC_VbmKpDkWDw" x="-99" y="1"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAMRcCiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAMRcSiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_TRsvoHLoEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAMRciiLEeC_VbmKpDkWDw" x="90" y="52" width="20" height="20"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tAMRcyiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Class" href="fifo.uml#_yqYfMHLnEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAMRdCiLEeC_VbmKpDkWDw" x="72" y="37" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gLeHIC_fEeKl_vDGXh-OPw" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gLgjYC_fEeKl_vDGXh-OPw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gLgjYS_fEeKl_vDGXh-OPw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gLgjYi_fEeKl_vDGXh-OPw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gLgjYy_fEeKl_vDGXh-OPw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gLhKcC_fEeKl_vDGXh-OPw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gLhKcS_fEeKl_vDGXh-OPw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hb1vMC_gEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hb1vMS_gEeKl_vDGXh-OPw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hb1vMi_gEeKl_vDGXh-OPw" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hb1vMy_gEeKl_vDGXh-OPw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hb2WQC_gEeKl_vDGXh-OPw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Hb29UC_gEeKl_vDGXh-OPw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gLhKci_fEeKl_vDGXh-OPw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gLhKcy_fEeKl_vDGXh-OPw" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gLhKdC_fEeKl_vDGXh-OPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gLhKdS_fEeKl_vDGXh-OPw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_h-mRoC_fEeKl_vDGXh-OPw" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_h-m4sC_fEeKl_vDGXh-OPw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_h-m4sS_fEeKl_vDGXh-OPw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_h-nfwC_fEeKl_vDGXh-OPw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_h-nfwS_fEeKl_vDGXh-OPw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_h-nfwi_fEeKl_vDGXh-OPw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_h-nfwy_fEeKl_vDGXh-OPw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DPo_EC_hEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYirsEsREeKoOoLe6CnFrA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYirsUsREeKoOoLe6CnFrA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYirsksREeKoOoLe6CnFrA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYjSwEsREeKoOoLe6CnFrA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hYjSwUsREeKoOoLe6CnFrA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_h-nfxC_fEeKl_vDGXh-OPw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CUpy8C_gEeKl_vDGXh-OPw" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_becEwEsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_h-nfxS_fEeKl_vDGXh-OPw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_h-nfxi_fEeKl_vDGXh-OPw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_h-nfxy_fEeKl_vDGXh-OPw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_h9XikC_fEeKl_vDGXh-OPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_h-mRoS_fEeKl_vDGXh-OPw" x="87" y="42" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jadysC_fEeKl_vDGXh-OPw" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jadysi_fEeKl_vDGXh-OPw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jaeZwC_fEeKl_vDGXh-OPw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jaeZwS_fEeKl_vDGXh-OPw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jaeZwi_fEeKl_vDGXh-OPw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jaeZwy_fEeKl_vDGXh-OPw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jaeZxC_fEeKl_vDGXh-OPw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9QuJkC_gEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_engugEsREeKoOoLe6CnFrA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_engugUsREeKoOoLe6CnFrA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_enhVkEsREeKoOoLe6CnFrA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_enhVkUsREeKoOoLe6CnFrA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_enhVkksREeKoOoLe6CnFrA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jaeZxS_fEeKl_vDGXh-OPw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HtJsMC_hEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H5WVIC_hEeKl_vDGXh-OPw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H5WVIS_hEeKl_vDGXh-OPw" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H5WVIi_hEeKl_vDGXh-OPw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H5W8MC_hEeKl_vDGXh-OPw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H5W8MS_hEeKl_vDGXh-OPw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B_YtkC_gEeKl_vDGXh-OPw" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cCZGYEsREeKoOoLe6CnFrA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jaeZxi_fEeKl_vDGXh-OPw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jaeZxy_fEeKl_vDGXh-OPw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jaeZyC_fEeKl_vDGXh-OPw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_jaXsEC_fEeKl_vDGXh-OPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jadysS_fEeKl_vDGXh-OPw" x="-10" y="42" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_gKLGoC_fEeKl_vDGXh-OPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gLeHIS_fEeKl_vDGXh-OPw" x="77" y="390" width="167" height="97"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_tAMRdSiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Package" href="fifo.uml#_qlssgHLmEd6R5tffIPrlPg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_tAMRdiiLEeC_VbmKpDkWDw" type="4015" source="_tAH_8yiLEeC_VbmKpDkWDw" target="_tALDSiiLEeC_VbmKpDkWDw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAMRdyiLEeC_VbmKpDkWDw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAMReCiLEeC_VbmKpDkWDw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tAMReSiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_6zGSwHLnEd6R5tffIPrlPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tAM4cCiLEeC_VbmKpDkWDw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAM4cSiLEeC_VbmKpDkWDw" id="(0.1407035175879397,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAM4ciiLEeC_VbmKpDkWDw" id="(0.8440366972477065,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_tAM4cyiLEeC_VbmKpDkWDw" type="4015" source="_tAH_8yiLEeC_VbmKpDkWDw" target="_tALqUyiLEeC_VbmKpDkWDw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAM4dCiLEeC_VbmKpDkWDw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAM4dSiLEeC_VbmKpDkWDw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tAM4diiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_9mPv0HLnEd6R5tffIPrlPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tAM4dyiLEeC_VbmKpDkWDw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__1nYIDvQEeGgAdAmWw4pyQ" id="(0.7386934673366834,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAM4eSiLEeC_VbmKpDkWDw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_tAM4eiiLEeC_VbmKpDkWDw" type="4015" source="_tAKcMiiLEeC_VbmKpDkWDw" target="_tALqayiLEeC_VbmKpDkWDw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAM4eyiLEeC_VbmKpDkWDw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAM4fCiLEeC_VbmKpDkWDw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tAM4fSiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_Dc1vwHLoEd6R5tffIPrlPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tAM4fiiLEeC_VbmKpDkWDw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAM4fyiLEeC_VbmKpDkWDw" id="(0.21052631578947367,0.07)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAM4gCiLEeC_VbmKpDkWDw"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_tAM4gSiLEeC_VbmKpDkWDw" type="4015" source="_tAKcMiiLEeC_VbmKpDkWDw" target="_tALDSiiLEeC_VbmKpDkWDw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAM4giiLEeC_VbmKpDkWDw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAM4gyiLEeC_VbmKpDkWDw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tAM4hCiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_ELTYQHLoEd6R5tffIPrlPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tAM4hSiLEeC_VbmKpDkWDw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAM4hiiLEeC_VbmKpDkWDw" id="(0.8994974874371859,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAM4hyiLEeC_VbmKpDkWDw" id="(0.19310344827586207,0.96)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_tAM4iCiLEeC_VbmKpDkWDw" width="100" height="100"/>
+ <notation:Location xmi:id="_tAM4iSiLEeC_VbmKpDkWDw" x="309" y="232"/>
+ <notation:Location xmi:id="_tAM4iiiLEeC_VbmKpDkWDw" x="140" y="236"/>
+ <notation:Location xmi:id="_tAM4iyiLEeC_VbmKpDkWDw" x="231" y="19"/>
+ <notation:Location xmi:id="_tAM4jCiLEeC_VbmKpDkWDw" x="395" y="21"/>
+ <notation:Location xmi:id="_tAM4jSiLEeC_VbmKpDkWDw" x="68" y="20"/>
+ <notation:Size xmi:id="_tAM4jiiLEeC_VbmKpDkWDw" width="20" height="20"/>
+ <notation:Location xmi:id="_tANfgCiLEeC_VbmKpDkWDw" x="221" y="79"/>
+ <notation:Location xmi:id="_tANfgSiLEeC_VbmKpDkWDw" x="299" y="278"/>
+ <notation:Location xmi:id="_tANfgiiLEeC_VbmKpDkWDw" x="130" y="281"/>
+ <notation:Location xmi:id="_tANfgyiLEeC_VbmKpDkWDw" x="485" y="68"/>
+ <notation:Location xmi:id="_tANfhCiLEeC_VbmKpDkWDw" x="58" y="72"/>
+ <notation:Diagram xmi:id="_tANfhSiLEeC_VbmKpDkWDw" type="CompositeStructure" name="Composite diagram of FIFO" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_tANfhiiLEeC_VbmKpDkWDw" type="2073">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANfhyiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANfiCiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANfiSiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANfiiiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANfiyiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANfjCiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tANfjSiLEeC_VbmKpDkWDw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tANfjiiLEeC_VbmKpDkWDw" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tANfjyiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tANfkCiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANfkSiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANfkiiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANfkyiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANflCiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANflSiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANfliiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_god_oDvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hCK5EDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hCK5ETvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hCLgIDvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hCLgITvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hCLgIjvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tANflyiLEeC_VbmKpDkWDw" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tANfmCiLEeC_VbmKpDkWDw" x="-116"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tANfmSiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tANfmiiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tANfmyiLEeC_VbmKpDkWDw" x="-10" y="36" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tANfnCiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANfnSiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANfniiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANfnyiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANfoCiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tANfoSiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tANfoiiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_h-xrQDvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_igIE0DvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_igIE0TvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_igIE0jvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_igIE0zvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_igIr4DvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tANfoyiLEeC_VbmKpDkWDw" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tANfpCiLEeC_VbmKpDkWDw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tANfpSiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tANfpiiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tANfpyiLEeC_VbmKpDkWDw" x="639" y="36" width="20" height="20"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tANfqCiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Class" href="fifo.uml#_wh_EwHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAOGkCiLEeC_VbmKpDkWDw" x="144" y="90" width="649" height="70"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tAOGkSiLEeC_VbmKpDkWDw" type="2073" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGkiiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGkyiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGlCiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGlSiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGliiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGlyiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_drM34C_hEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_drNe8C_hEeKl_vDGXh-OPw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_drNe8S_hEeKl_vDGXh-OPw" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_drNe8i_hEeKl_vDGXh-OPw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_drNe8y_hEeKl_vDGXh-OPw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_drNe9C_hEeKl_vDGXh-OPw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAOGmCiLEeC_VbmKpDkWDw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAOGmSiLEeC_VbmKpDkWDw" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_tAOGmiiLEeC_VbmKpDkWDw" type="3070">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGmyiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGnCiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGnSiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGniiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGnyiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGoCiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAOGoSiLEeC_VbmKpDkWDw" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAOGoiiLEeC_VbmKpDkWDw" visible="false" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAOGoyiLEeC_VbmKpDkWDw"/>
+ </children>
+ <element xmi:type="uml:Property" href="fifo.uml#_zNeIsBGZEd-rfYlCjUOxJQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAOGpCiLEeC_VbmKpDkWDw" x="26" y="18" width="152" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KNylwLnQEeCxXoyQxQ47PQ" type="3097" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KNzM0LnQEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KNzM0bnQEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KNzM0rnQEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KNzM07nQEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KNzz4LnQEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KNzz4bnQEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KNzz4rnQEeCxXoyQxQ47PQ" type="5150"/>
+ <element xmi:type="uml:Comment" href="fifo.uml#_EiDM8K_2EeC6ALhykKLu_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KNylwbnQEeCxXoyQxQ47PQ" x="26" y="74" width="235" height="29"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_QL0qcLnQEeCxXoyQxQ47PQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QL14kLnQEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QL14kbnQEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QL14krnQEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QL14k7nQEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QL2foLnQEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QL2fobnQEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QL2fornQEeCxXoyQxQ47PQ" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QL2fo7nQEeCxXoyQxQ47PQ" visible="false" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QL2fpLnQEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Property" href="fifo.uml#_XDRnoHUIEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QL0qcbnQEeCxXoyQxQ47PQ" x="206" y="18" width="109" height="37"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAOGpSiLEeC_VbmKpDkWDw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tAOGpiiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGpyiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGqCiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGqSiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGqiiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGqyiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGrCiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jgadIDvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lBxiMDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lBxiMTvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lByJQDvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lByJQTvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lByJQjvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAOGrSiLEeC_VbmKpDkWDw" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAOGriiLEeC_VbmKpDkWDw" x="-121" y="-5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAOGryiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAOGsCiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAOGsSiLEeC_VbmKpDkWDw" x="-10" y="41" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tAOGsiiLEeC_VbmKpDkWDw" type="3069">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGsyiLEeC_VbmKpDkWDw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGtCiLEeC_VbmKpDkWDw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGtSiLEeC_VbmKpDkWDw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGtiiLEeC_VbmKpDkWDw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tAOGtyiLEeC_VbmKpDkWDw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tAOGuCiLEeC_VbmKpDkWDw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_m-dRUDvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nbNewDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nbNewTvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nbNewjvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nbNewzvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nbNexDvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAOGuSiLEeC_VbmKpDkWDw" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAOGuiiLEeC_VbmKpDkWDw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tAOtoCiLEeC_VbmKpDkWDw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAOtoSiLEeC_VbmKpDkWDw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAOtoiiLEeC_VbmKpDkWDw" x="216" y="40" width="20" height="20"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tAOtoyiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Class" href="fifo.uml#_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tAOtpCiLEeC_VbmKpDkWDw" x="149" y="198" width="356" height="159"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qOCU0JjDEeCDMc6Lh9wKtQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qOExEJjDEeCDMc6Lh9wKtQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qOExEZjDEeCDMc6Lh9wKtQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qOExEpjDEeCDMc6Lh9wKtQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qOExE5jDEeCDMc6Lh9wKtQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qOExFJjDEeCDMc6Lh9wKtQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qOFYIJjDEeCDMc6Lh9wKtQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_csel0C_hEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_csel0S_hEeKl_vDGXh-OPw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_csfM4C_hEeKl_vDGXh-OPw" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_csfM4S_hEeKl_vDGXh-OPw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_csfM4i_hEeKl_vDGXh-OPw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_csfM4y_hEeKl_vDGXh-OPw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qOFYIZjDEeCDMc6Lh9wKtQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qOFYIpjDEeCDMc6Lh9wKtQ" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qOFYI5jDEeCDMc6Lh9wKtQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sP3psJjDEeCDMc6Lh9wKtQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sP4QwJjDEeCDMc6Lh9wKtQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sP430JjDEeCDMc6Lh9wKtQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sP430ZjDEeCDMc6Lh9wKtQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sP430pjDEeCDMc6Lh9wKtQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sP4305jDEeCDMc6Lh9wKtQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sP431JjDEeCDMc6Lh9wKtQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_obUQ4DvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o03ZUDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o04AYDvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o04AYTvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o04AYjvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_o04AYzvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sP431ZjDEeCDMc6Lh9wKtQ" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sP5e4JjDEeCDMc6Lh9wKtQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sP5e4ZjDEeCDMc6Lh9wKtQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sP5e4pjDEeCDMc6Lh9wKtQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sP3psZjDEeCDMc6Lh9wKtQ" x="-10" y="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_sP6F8JjDEeCDMc6Lh9wKtQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sP6tAJjDEeCDMc6Lh9wKtQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sP7UEJjDEeCDMc6Lh9wKtQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sP7UEZjDEeCDMc6Lh9wKtQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sP7UEpjDEeCDMc6Lh9wKtQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sP7UE5jDEeCDMc6Lh9wKtQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sP7UFJjDEeCDMc6Lh9wKtQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_prb08DvQEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qF6xgDvQEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qF6xgTvQEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qF6xgjvQEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qF6xgzvQEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qF6xhDvQEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sP7UFZjDEeCDMc6Lh9wKtQ" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sP7UFpjDEeCDMc6Lh9wKtQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sP77IJjDEeCDMc6Lh9wKtQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_sP77IZjDEeCDMc6Lh9wKtQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sP6F8ZjDEeCDMc6Lh9wKtQ" x="197" y="64"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_dr0doDqNEeCd_O2fHA8dPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qOCU0ZjDEeCDMc6Lh9wKtQ" x="585" y="198" width="207" height="154"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EhxuYJjEEeCDMc6Lh9wKtQ" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EhyVcJjEEeCDMc6Lh9wKtQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ehy8gJjEEeCDMc6Lh9wKtQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ehy8gZjEEeCDMc6Lh9wKtQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ehy8gpjEEeCDMc6Lh9wKtQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ehy8g5jEEeCDMc6Lh9wKtQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ehy8hJjEEeCDMc6Lh9wKtQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ehy8hZjEEeCDMc6Lh9wKtQ" type="5192"/>
+ <element xmi:type="uml:Comment" href="fifo.uml#_PwZ2MDqOEeCd_O2fHA8dPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EhxuYZjEEeCDMc6Lh9wKtQ" x="594" y="378" width="206"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_DfErALnQEeCxXoyQxQ47PQ" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DfF5ILnQEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DfF5IbnQEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DfGgMLnQEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DfGgMbnQEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DfGgMrnQEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DfGgM7nQEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_DfGgNLnQEeCxXoyQxQ47PQ" type="5192"/>
+ <element xmi:type="uml:Comment" href="fifo.uml#_K_UZoDF2EeCpQdhNuFCtew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DfErAbnQEeCxXoyQxQ47PQ" x="152" y="383" width="353" height="50"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rzv8YC_gEeKl_vDGXh-OPw" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzwjcC_gEeKl_vDGXh-OPw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzwjcS_gEeKl_vDGXh-OPw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzwjci_gEeKl_vDGXh-OPw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzwjcy_gEeKl_vDGXh-OPw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rzwjdC_gEeKl_vDGXh-OPw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rzxKgC_gEeKl_vDGXh-OPw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rzxKgS_gEeKl_vDGXh-OPw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rzxKgi_gEeKl_vDGXh-OPw" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rzxKgy_gEeKl_vDGXh-OPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rzxKhC_gEeKl_vDGXh-OPw"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_gKLGoC_fEeKl_vDGXh-OPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rzv8YS_gEeKl_vDGXh-OPw" x="945" y="90" width="163" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tChcoC_gEeKl_vDGXh-OPw" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tCiDsC_gEeKl_vDGXh-OPw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tCiDsS_gEeKl_vDGXh-OPw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tCiDsi_gEeKl_vDGXh-OPw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tCiDsy_gEeKl_vDGXh-OPw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tCiDtC_gEeKl_vDGXh-OPw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tCiDtS_gEeKl_vDGXh-OPw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ovRpUC_hEeKl_vDGXh-OPw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ovSQYC_hEeKl_vDGXh-OPw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ovSQYS_hEeKl_vDGXh-OPw" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ovSQYi_hEeKl_vDGXh-OPw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ovSQYy_hEeKl_vDGXh-OPw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ovSQZC_hEeKl_vDGXh-OPw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tCiDti_gEeKl_vDGXh-OPw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_tCiDty_gEeKl_vDGXh-OPw" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_tCiDuC_gEeKl_vDGXh-OPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tCiDuS_gEeKl_vDGXh-OPw"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_qZQUUC_gEeKl_vDGXh-OPw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tChcoS_gEeKl_vDGXh-OPw" x="945" y="198" width="163" height="163"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_tAOtpSiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Package" href="fifo.uml#_RTeboHPpEd6R5tffIPrlPg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_tAOtpiiLEeC_VbmKpDkWDw" type="4015" source="_tAOGkSiLEeC_VbmKpDkWDw" target="_tANfhiiLEeC_VbmKpDkWDw">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tAOtpyiLEeC_VbmKpDkWDw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tAOtqCiLEeC_VbmKpDkWDw" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_tAOtqSiLEeC_VbmKpDkWDw"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_Z4Oq8HPpEd6R5tffIPrlPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tAOtqiiLEeC_VbmKpDkWDw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAOtqyiLEeC_VbmKpDkWDw"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tAOtrCiLEeC_VbmKpDkWDw" id="(0.2835130970724191,0.8428571428571429)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_1QD30JjDEeCDMc6Lh9wKtQ" type="4015" source="_qOCU0JjDEeCDMc6Lh9wKtQ" target="_tANfhiiLEeC_VbmKpDkWDw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1QFtAJjDEeCDMc6Lh9wKtQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1QFtAZjDEeCDMc6Lh9wKtQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1QD30ZjDEeCDMc6Lh9wKtQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_dr0dozqNEeCd_O2fHA8dPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1QD30pjDEeCDMc6Lh9wKtQ" points="[-90, -68, 131, 99]$[-175, -132, 46, 35]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1uVvQJjDEeCDMc6Lh9wKtQ" id="(0.8212634822804314,0.7857142857142857)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JrVpMJjEEeCDMc6Lh9wKtQ" type="4002" source="_EhxuYJjEEeCDMc6Lh9wKtQ" target="_qOCU0JjDEeCDMc6Lh9wKtQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_JrVpMZjEEeCDMc6Lh9wKtQ" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JrVpMpjEEeCDMc6Lh9wKtQ" points="[-7, -30, 7, 33]$[-16, -47, -2, 16]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Jr64AJjEEeCDMc6Lh9wKtQ" id="(0.46859903381642515,0.8832116788321168)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_DgRk4LnQEeCxXoyQxQ47PQ" type="4002" source="_DfErALnQEeCxXoyQxQ47PQ" target="_tAOGkSiLEeC_VbmKpDkWDw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_DgRk4bnQEeCxXoyQxQ47PQ" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DgRk4rnQEeCxXoyQxQ47PQ" points="[0, 0, -262, -286]$[197, 216, -65, -70]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_tdNGgEDrEeGa5NwyW9TCXg" type="4002" source="_KNylwLnQEeCxXoyQxQ47PQ" target="_QL0qcLnQEeCxXoyQxQ47PQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_tdNGgUDrEeGa5NwyW9TCXg" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tdNGgkDrEeGa5NwyW9TCXg" points="[-6, -4, 0, 47]$[-26, -60, -20, -9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdeMQEDrEeGa5NwyW9TCXg" id="(0.9361702127659575,0.1111111111111111)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tdeMQUDrEeGa5NwyW9TCXg" id="(0.3119266055045872,0.24324324324324326)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_vmUPEC_gEeKl_vDGXh-OPw" type="4015" source="_tChcoC_gEeKl_vDGXh-OPw" target="_rzv8YC_gEeKl_vDGXh-OPw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_vmVdMC_gEeKl_vDGXh-OPw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vmVdMS_gEeKl_vDGXh-OPw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_vmUPES_gEeKl_vDGXh-OPw" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_qZQUUS_gEeKl_vDGXh-OPw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vmUPEi_gEeKl_vDGXh-OPw" points="[-67, -20, 478, 137]$[-424, -122, 121, 35]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_wbwCQC_gEeKl_vDGXh-OPw" id="(0.5061728395061729,0.9464285714285714)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Location xmi:id="_tAOtrSiLEeC_VbmKpDkWDw" x="235" y="92"/>
+ <notation:Location xmi:id="_tAOtriiLEeC_VbmKpDkWDw" x="225" y="150"/>
+ <notation:Location xmi:id="_tAOtryiLEeC_VbmKpDkWDw" x="325" y="146"/>
+ <notation:Size xmi:id="_tAOtsCiLEeC_VbmKpDkWDw" width="226" height="141"/>
+ <notation:Location xmi:id="_tAOtsSiLEeC_VbmKpDkWDw" x="172" y="281"/>
+ <notation:Size xmi:id="_tAOtsiiLEeC_VbmKpDkWDw" width="152" height="38"/>
+ <notation:Location xmi:id="_tAOtsyiLEeC_VbmKpDkWDw" x="38" y="79"/>
+ <notation:Location xmi:id="_tAOttCiLEeC_VbmKpDkWDw" x="162" y="322"/>
+ <notation:Location xmi:id="_tAOttSiLEeC_VbmKpDkWDw" x="388" y="321"/>
+ <notation:Diagram xmi:id="_OBa8YK8wEeCXIcykFPsB8Q" type="PapyrusUMLClassDiagram" name="Pkg. Template: DataExchange_size" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_R4yPgK8wEeCXIcykFPsB8Q" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R4y2kK8wEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R4y2ka8wEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R4zdoK8wEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R4zdoa8wEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R4zdoq8wEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R4zdo68wEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_R4zdpK8wEeCXIcykFPsB8Q" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_R4zdpa8wEeCXIcykFPsB8Q" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_9_UVQK8wEeCXIcykFPsB8Q" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9_U8UK8wEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9_U8Ua8wEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9_U8Uq8wEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9_VjYK8wEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9_VjYa8wEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9_VjYq8wEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9_VjY68wEeCXIcykFPsB8Q" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9_VjZK8wEeCXIcykFPsB8Q" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9_VjZa8wEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9_VjZq8wEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9_VjZ68wEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9_VjaK8wEeCXIcykFPsB8Q" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9_Vjaa8wEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9_Vjaq8wEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9_Vja68wEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_9_VjbK8wEeCXIcykFPsB8Q" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_9_Vjba8wEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_9_Vjbq8wEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9_Vjb68wEeCXIcykFPsB8Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_DA0VYK4iEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9_UVQa8wEeCXIcykFPsB8Q" x="40" y="123" width="163" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cPvm0K8xEeCXIcykFPsB8Q" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cPwN4K8xEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cPwN4a8xEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cPwN4q8xEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cPwN468xEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cPwN5K8xEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cPwN5a8xEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_cPwN5q8xEeCXIcykFPsB8Q" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cPwN568xEeCXIcykFPsB8Q" visible="false" type="7011">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cPwN6K8xEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cPwN6a8xEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cPwN6q8xEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cPwN668xEeCXIcykFPsB8Q" visible="false" type="7012">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cPwN7K8xEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cPwN7a8xEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cPwN7q8xEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_cPwN768xEeCXIcykFPsB8Q" visible="false" type="7013">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cPwN8K8xEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cPwN8a8xEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cPwN8q8xEeCXIcykFPsB8Q"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_wh_EwHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cPvm0a8xEeCXIcykFPsB8Q" x="40" y="33" width="163" height="57"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R4zdpq8wEeCXIcykFPsB8Q"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Sz-scK8wEeCXIcykFPsB8Q" type="3033" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Sz_TgK8wEeCXIcykFPsB8Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Sz_Tga8wEeCXIcykFPsB8Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Sz_Tgq8wEeCXIcykFPsB8Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Sz_Tg68wEeCXIcykFPsB8Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Sz_ThK8wEeCXIcykFPsB8Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Sz_6kK8wEeCXIcykFPsB8Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Sz_6ka8wEeCXIcykFPsB8Q" type="7038">
+ <children xmi:type="notation:Shape" xmi:id="_p2CS0K8wEeCXIcykFPsB8Q" type="3016" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:TemplateParameter" href="fifo.uml#_H5vB4K8vEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_p2CS0a8wEeCXIcykFPsB8Q" x="25" y="12"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Sz_6kq8wEeCXIcykFPsB8Q"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Sz_6k68wEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sz_6lK8wEeCXIcykFPsB8Q"/>
+ </children>
+ <element xmi:type="uml:TemplateSignature" href="fifo.uml#_1AfgcK8tEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sz-sca8wEeCXIcykFPsB8Q" x="60" y="6"/>
+ </children>
+ <element xmi:type="uml:Package" href="fifo.uml#_uBS5sK8tEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R4yPga8wEeCXIcykFPsB8Q" x="99" y="121" width="370" height="222"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_OBa8Ya8wEeCXIcykFPsB8Q"/>
+ <element xmi:type="uml:Package" href="fifo.uml#_uBS5sK8tEeCXIcykFPsB8Q"/>
+ <edges xmi:type="notation:Connector" xmi:id="_cQhp8K8xEeCXIcykFPsB8Q" type="4002" source="_9_UVQK8wEeCXIcykFPsB8Q" target="_cPvm0K8xEeCXIcykFPsB8Q" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_cQiRAK8xEeCXIcykFPsB8Q" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cQiRAa8xEeCXIcykFPsB8Q" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_cQhp8a8xEeCXIcykFPsB8Q" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_DA0VY64iEeCXIcykFPsB8Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cQhp8q8xEeCXIcykFPsB8Q" points="[-61, -23, 38, 15]$[-99, -38, 0, 0]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_A5pi4K_2EeC6ALhykKLu_g" type="PapyrusUMLClassDiagram" name="FIFO" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_BddakK_2EeC6ALhykKLu_g" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Bdgd4K_2EeC6ALhykKLu_g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Bdgd4a_2EeC6ALhykKLu_g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BdhE8K_2EeC6ALhykKLu_g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BdhE8a_2EeC6ALhykKLu_g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BdhsAK_2EeC6ALhykKLu_g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BdhsAa_2EeC6ALhykKLu_g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BdhsAq_2EeC6ALhykKLu_g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BdhsA6_2EeC6ALhykKLu_g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_Drta0K_2EeC6ALhykKLu_g" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="fifo.uml#_XDRnoHUIEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Drta0a_2EeC6ALhykKLu_g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFfRMAO7EeGb-spUJr9V6w" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="fifo.uml#_6iV9wHUHEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFfRMQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFf4QAO7EeGb-spUJr9V6w" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="fifo.uml#_RlKZIHUIEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFf4QQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFgfUAO7EeGb-spUJr9V6w" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="fifo.uml#_XcO6MHUIEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFgfUQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFhtcAO7EeGb-spUJr9V6w" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="fifo.uml#_zNeIsBGZEd-rfYlCjUOxJQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFhtcQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFjioAO7EeGb-spUJr9V6w" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Port" href="fifo.uml#_xHb7MHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFjioQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFkJsAO7EeGb-spUJr9V6w" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Port" href="fifo.uml#_xcu1wHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFkJsQO7EeGb-spUJr9V6w"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BdhsBK_2EeC6ALhykKLu_g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BdhsBa_2EeC6ALhykKLu_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdhsBq_2EeC6ALhykKLu_g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BdhsB6_2EeC6ALhykKLu_g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_ZFbm0AO7EeGb-spUJr9V6w" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="fifo.uml#_EYsdUP68Ed6Zw96O-tCw7A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFbm0QO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFcN4AO7EeGb-spUJr9V6w" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="fifo.uml#_EYx84P68Ed6Zw96O-tCw7A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFcN4QO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFdcAAO7EeGb-spUJr9V6w" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="fifo.uml#_AnQ3QBI9Ed-XjYZ05V-9-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFdcAQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFeqIAO7EeGb-spUJr9V6w" type="3013" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6MmcAAO7EeGb-spUJr9V6w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6MnDEAO7EeGb-spUJr9V6w" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6MnqIAO7EeGb-spUJr9V6w" key="StereotypeList" value="FCM::Template"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6MnqIQO7EeGb-spUJr9V6w" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6MnqIgO7EeGb-spUJr9V6w" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6MnqIwO7EeGb-spUJr9V6w" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="fifo.uml#_5IpEwK8xEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFeqIQO7EeGb-spUJr9V6w"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BdhsCK_2EeC6ALhykKLu_g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BdhsCa_2EeC6ALhykKLu_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdhsCq_2EeC6ALhykKLu_g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BdhsC6_2EeC6ALhykKLu_g" visible="false" type="7019">
+ <children xmi:type="notation:Shape" xmi:id="_ZFWuUAO7EeGb-spUJr9V6w" type="3014" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:OpaqueBehavior" href="fifo.uml#_FjGlgP69Ed6Zw96O-tCw7A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFWuUQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFYjgAO7EeGb-spUJr9V6w" type="3014" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:OpaqueBehavior" href="fifo.uml#_IwXLsP69Ed6Zw96O-tCw7A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFYjgQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFZKkAO7EeGb-spUJr9V6w" type="3014" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:OpaqueBehavior" href="fifo.uml#__Ha0IBJHEd-XjYZ05V-9-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFZKkQO7EeGb-spUJr9V6w"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZFaYsAO7EeGb-spUJr9V6w" type="3014" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:OpaqueBehavior" href="fifo.uml#_QzOqwK8yEeCXIcykFPsB8Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZFaYsQO7EeGb-spUJr9V6w"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BdhsDK_2EeC6ALhykKLu_g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BdhsDa_2EeC6ALhykKLu_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BdhsDq_2EeC6ALhykKLu_g"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Bddaka_2EeC6ALhykKLu_g" x="36" y="153" width="199"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_EnQdEK_2EeC6ALhykKLu_g" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EnREIK_2EeC6ALhykKLu_g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EnREIa_2EeC6ALhykKLu_g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EnREIq_2EeC6ALhykKLu_g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EnREI6_2EeC6ALhykKLu_g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EnREJK_2EeC6ALhykKLu_g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EnREJa_2EeC6ALhykKLu_g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_EnREJq_2EeC6ALhykKLu_g" type="5038"/>
+ <element xmi:type="uml:Comment" href="fifo.uml#_EiDM8K_2EeC6ALhykKLu_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EnQdEa_2EeC6ALhykKLu_g" x="281" y="110"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lVZHMK_2EeC6ALhykKLu_g" type="2097" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lVaVUK_2EeC6ALhykKLu_g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lVaVUa_2EeC6ALhykKLu_g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lVa8YK_2EeC6ALhykKLu_g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lVa8Ya_2EeC6ALhykKLu_g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lVa8Yq_2EeC6ALhykKLu_g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lVa8Y6_2EeC6ALhykKLu_g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lVa8ZK_2EeC6ALhykKLu_g" type="5157"/>
+ <element xmi:type="uml:Property" href="fifo.uml#_XDRnoHUIEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lVZHMa_2EeC6ALhykKLu_g" x="310" y="198"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_8G4iAK_2EeC6ALhykKLu_g" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8G5JEK_2EeC6ALhykKLu_g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8G5JEa_2EeC6ALhykKLu_g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8G5JEq_2EeC6ALhykKLu_g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8G5JE6_2EeC6ALhykKLu_g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8G5wIK_2EeC6ALhykKLu_g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8G5wIa_2EeC6ALhykKLu_g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8G5wIq_2EeC6ALhykKLu_g" type="5038"/>
+ <element xmi:type="uml:Comment" href="fifo.uml#_K_UZoDF2EeCpQdhNuFCtew"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8G4iAa_2EeC6ALhykKLu_g" x="36" y="54" width="181"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_A5pi4a_2EeC6ALhykKLu_g"/>
+ <element xmi:type="uml:Package" href="fifo.uml#_RTeboHPpEd6R5tffIPrlPg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_j06y8K_2EeC6ALhykKLu_g" type="4013" source="_EnQdEK_2EeC6ALhykKLu_g" target="_lVZHMK_2EeC6ALhykKLu_g" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_j06y8a_2EeC6ALhykKLu_g" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_j06y8q_2EeC6ALhykKLu_g" points="[-59, 15, 114, -48]$[-115, 13, 58, -50]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mDuM0K_2EeC6ALhykKLu_g" id="(0.51,0.1)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_-Ji9UK_2EeC6ALhykKLu_g" type="4013" source="_8G4iAK_2EeC6ALhykKLu_g" target="_BddakK_2EeC6ALhykKLu_g" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_-Ji9Ua_2EeC6ALhykKLu_g" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-Ji9Uq_2EeC6ALhykKLu_g" points="[2, 9, -12, -48]$[12, 48, -2, -9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-KKBUK_2EeC6ALhykKLu_g" id="(0.6187845303867403,0.85)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-KKBUa_2EeC6ALhykKLu_g" id="(0.4632352941176471,0.09)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_sVGAsP3IEeC1YdT2qA0bjA" type="PapyrusUMLClassDiagram" name="PackageTemplate" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_t8v7AP3IEeC1YdT2qA0bjA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t8wiEP3IEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t8wiEf3IEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t8wiEv3IEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t8wiE_3IEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t8wiFP3IEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t8wiFf3IEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t8wiFv3IEeC1YdT2qA0bjA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t8wiF_3IEeC1YdT2qA0bjA" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_y88ecP3IEeC1YdT2qA0bjA" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y89FgP3IEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y89Fgf3IEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y89Fgv3IEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y89Fg_3IEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y89FhP3IEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y89Fhf3IEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KlnY4P3JEeC1YdT2qA0bjA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bbs4M9IEeGUh9zQEFeIMA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bbs4c9IEeGUh9zQEFeIMA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bbs4s9IEeGUh9zQEFeIMA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bbs489IEeGUh9zQEFeIMA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bbs5M9IEeGUh9zQEFeIMA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_y89skP3IEeC1YdT2qA0bjA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_y89skf3IEeC1YdT2qA0bjA" visible="false" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_y89skv3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_y89sk_3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_y89slP3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y89slf3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_y89slv3IEeC1YdT2qA0bjA" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_y89sl_3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_y89smP3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_y89smf3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y89smv3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_y89sm_3IEeC1YdT2qA0bjA" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_y89snP3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_y89snf3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_y89snv3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y89sn_3IEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_wh_EwHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y88ecf3IEeC1YdT2qA0bjA" x="29" y="24" width="298" height="41"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_znvH4P3IEeC1YdT2qA0bjA" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_znvu8P3IEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_znvu8f3IEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_znvu8v3IEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_znvu8_3IEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_znvu9P3IEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_znvu9f3IEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Lw3EAP3JEeC1YdT2qA0bjA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bmE8M9IEeGUh9zQEFeIMA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bmE8c9IEeGUh9zQEFeIMA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bmE8s9IEeGUh9zQEFeIMA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bmE889IEeGUh9zQEFeIMA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bmE9M9IEeGUh9zQEFeIMA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_znvu9v3IEeC1YdT2qA0bjA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_znvu9_3IEeC1YdT2qA0bjA" visible="false" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_znvu-P3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_znvu-f3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_znvu-v3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_znvu-_3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_znvu_P3IEeC1YdT2qA0bjA" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_znvu_f3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_znvu_v3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_znvu__3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_znvvAP3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_znvvAf3IEeC1YdT2qA0bjA" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_znvvAv3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_znvvA_3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_znvvBP3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_znvvBf3IEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_zc4voHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_znvH4f3IEeC1YdT2qA0bjA" x="371" y="24" width="127" height="41"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2-j5wP3IEeC1YdT2qA0bjA" type="3009" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2-kg0P3IEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2-kg0f3IEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2-kg0v3IEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2-kg0_3IEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2-lH4P3IEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2-lH4f3IEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2-lH4v3IEeC1YdT2qA0bjA" type="5017"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2-lH4_3IEeC1YdT2qA0bjA" type="7010">
+ <children xmi:type="notation:Shape" xmi:id="_3sR7YP3IEeC1YdT2qA0bjA" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3sSicP3IEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3sSicf3IEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3sTJgP3IEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3sTJgf3IEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3sTJgv3IEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3sTJg_3IEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NWN4QP3JEeC1YdT2qA0bjA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bzgUM9IEeGUh9zQEFeIMA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bzgUc9IEeGUh9zQEFeIMA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bzgUs9IEeGUh9zQEFeIMA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bzgU89IEeGUh9zQEFeIMA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6bzgVM9IEeGUh9zQEFeIMA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3sTJhP3IEeC1YdT2qA0bjA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3sTJhf3IEeC1YdT2qA0bjA" visible="false" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3sTJhv3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3sTJh_3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3sTJiP3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3sTJif3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3sTJiv3IEeC1YdT2qA0bjA" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3sTJi_3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3sTJjP3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3sTJjf3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3sTJjv3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3sTwkP3IEeC1YdT2qA0bjA" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_3sTwkf3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3sTwkv3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3sTwk_3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3sTwlP3IEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3sR7Yf3IEeC1YdT2qA0bjA" x="14" y="22" width="117" height="41"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5CsUsP3IEeC1YdT2qA0bjA" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5Cs7wP3IEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5Cs7wf3IEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5Cs7wv3IEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5Cs7w_3IEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5Cs7xP3IEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5Cs7xf3IEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OkXGYP3JEeC1YdT2qA0bjA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cDX8M9IEeGUh9zQEFeIMA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cDX8c9IEeGUh9zQEFeIMA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cDX8s9IEeGUh9zQEFeIMA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cDX889IEeGUh9zQEFeIMA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6cD_AM9IEeGUh9zQEFeIMA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5Cs7xv3IEeC1YdT2qA0bjA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5Cs7x_3IEeC1YdT2qA0bjA" visible="false" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5Cs7yP3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5Cs7yf3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5Cs7yv3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5Cs7y_3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5Cs7zP3IEeC1YdT2qA0bjA" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5Cs7zf3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5Cs7zv3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5Cs7z_3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5Cs70P3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5Cs70f3IEeC1YdT2qA0bjA" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5Cs70v3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5Cs70_3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5Cti0P3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5Cti0f3IEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Class" href="fifo.uml#_dr0doDqNEeCd_O2fHA8dPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5CsUsf3IEeC1YdT2qA0bjA" x="148" y="22" width="127" height="41"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2-lH5P3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2-lH5f3IEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Package" href="fifo.uml#_RTeboHPpEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2-j5wf3IEeC1YdT2qA0bjA" x="29" y="114" width="295"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t8wiGP3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t8wiGf3IEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vn2K4P3IEeC1YdT2qA0bjA" type="3033" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vn2x8P3IEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vn3ZAP3IEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vn3ZAf3IEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vn3ZAv3IEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vn3ZA_3IEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vn3ZBP3IEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vn3ZBf3IEeC1YdT2qA0bjA" type="7038">
+ <children xmi:type="notation:Shape" xmi:id="_wTH8gP3IEeC1YdT2qA0bjA" type="3031" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="fifo.uml#_diTcwHLoEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wTH8gf3IEeC1YdT2qA0bjA" x="18" y="9"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vn4AEP3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vn4AEf3IEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vn4AEv3IEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vn4AE_3IEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:TemplateSignature" href="fifo.uml#_cHY98HLoEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vn2K4f3IEeC1YdT2qA0bjA" x="169" y="6"/>
+ </children>
+ <element xmi:type="uml:Package" href="fifo.uml#_qlssgHLmEd6R5tffIPrlPg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t8v7Af3IEeC1YdT2qA0bjA" x="108" y="94" width="557" height="267"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_sVGnwP3IEeC1YdT2qA0bjA"/>
+ <element xmi:type="uml:Package" href="fifo.uml#_qlssgHLmEd6R5tffIPrlPg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_DmN90P3JEeC1YdT2qA0bjA" type="4002" source="_3sR7YP3IEeC1YdT2qA0bjA" target="_y88ecP3IEeC1YdT2qA0bjA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_DmOk4P3JEeC1YdT2qA0bjA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_DmOk4f3JEeC1YdT2qA0bjA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_DmN90f3JEeC1YdT2qA0bjA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_Z4Oq8HPpEd6R5tffIPrlPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DmN90v3JEeC1YdT2qA0bjA" points="[-3, -20, 16, 118]$[-17, -117, 2, 21]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_G0kJIP3JEeC1YdT2qA0bjA" id="(0.2483221476510067,0.975609756097561)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_E3vQEP3JEeC1YdT2qA0bjA" type="4002" source="_5CsUsP3IEeC1YdT2qA0bjA" target="_y88ecP3IEeC1YdT2qA0bjA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_E3weMP3JEeC1YdT2qA0bjA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_E3weMf3JEeC1YdT2qA0bjA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_E3vQEf3JEeC1YdT2qA0bjA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="fifo.uml#_dr0dozqNEeCd_O2fHA8dPg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_E3vQEv3JEeC1YdT2qA0bjA" points="[-23, -20, 129, 118]$[-130, -117, 22, 21]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GEAO4P3JEeC1YdT2qA0bjA" id="(0.7483221476510067,0.8536585365853658)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.uml
new file mode 100644
index 00000000000..8fdc90f57bb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/fifo.uml
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:l2="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_ePwqkHLmEd6R5tffIPrlPg" name="fifo">
+ <elementImport xmi:id="_mcPj0HLmEd6R5tffIPrlPg" alias="BasicCalls">
+ <importedElement xmi:type="uml:Model" href="core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </elementImport>
+ <packageImport xmi:id="_ePwqkXLmEd6R5tffIPrlPg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_cBFXEHLnEd6R5tffIPrlPg">
+ <importedPackage href="core.uml#_QwvnQFDlEd6cwecVIgl9nw"/>
+ </packageImport>
+ <packageImport xmi:id="_F4JYYHUIEd6R5tffIPrlPg">
+ <importedPackage xmi:type="uml:Model" href="corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packageImport xmi:id="_svKG8F72EeGerN33d-RdRg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_uBS5sK8tEeCXIcykFPsB8Q" name="DataExchange_size">
+ <ownedTemplateSignature xmi:id="_1AfgcK8tEeCXIcykFPsB8Q" parameter="_diTcwHLoEd6R5tffIPrlPg _H5vB4K8vEeCXIcykFPsB8Q">
+ <ownedParameter xmi:id="_H5vB4K8vEeCXIcykFPsB8Q" parameteredElement="_OURcYK8vEeCXIcykFPsB8Q">
+ <ownedParameteredElement xmi:type="uml:LiteralInteger" xmi:id="_OURcYK8vEeCXIcykFPsB8Q" name="size" templateParameter="_H5vB4K8vEeCXIcykFPsB8Q"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <packagedElement xmi:type="uml:Class" xmi:id="_DA0VYK4iEeCXIcykFPsB8Q" clientDependency="_DA0Vca4iEeCXIcykFPsB8Q _DA0Vcq4iEeCXIcykFPsB8Q" name="FIFOStaticAlloc_impl">
+ <ownedComment xmi:id="_DA0VYa4iEeCXIcykFPsB8Q" annotatedElement="_DA0VYK4iEeCXIcykFPsB8Q">
+ <body>Implementation stores an attribute (fixed size array) of template data type</body>
+ </ownedComment>
+ <ownedComment xmi:id="_DA0VYq4iEeCXIcykFPsB8Q">
+ <body>This is an implementation of a FIFO of a fixed size (20 elements of the data type it carries).</body>
+ </ownedComment>
+ <generalization xmi:id="_DA0VY64iEeCXIcykFPsB8Q" general="_wh_EwHLmEd6R5tffIPrlPg"/>
+ <ownedAttribute xmi:id="_DA0VZK4iEeCXIcykFPsB8Q" name="m_push_pos" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_DA0VZa4iEeCXIcykFPsB8Q" name="m_pull_pos" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_DA0VZq4iEeCXIcykFPsB8Q" name="m_size" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DA0VaK4iEeCXIcykFPsB8Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DA0VZ64iEeCXIcykFPsB8Q" value="1"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_DA0Vaa4iEeCXIcykFPsB8Q" value="20"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_DA0Vaq4iEeCXIcykFPsB8Q" name="m_filled" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_DA0Va64iEeCXIcykFPsB8Q" name="m_fifo" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DA0Vba4iEeCXIcykFPsB8Q" value="20"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DA0VbK4iEeCXIcykFPsB8Q" value="20"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_DA0Vca4iEeCXIcykFPsB8Q" name="derived realization of D_Push_dataType" client="_DA0VYK4iEeCXIcykFPsB8Q" supplier="_EUZMIf68Ed6Zw96O-tCw7A" contract="_EUZMIf68Ed6Zw96O-tCw7A"/>
+ <interfaceRealization xmi:id="_DA0Vcq4iEeCXIcykFPsB8Q" name="derived realization of D_PullConsumer_dataType" client="_DA0VYK4iEeCXIcykFPsB8Q" supplier="_EYj6cP68Ed6Zw96O-tCw7A" contract="_EYj6cP68Ed6Zw96O-tCw7A"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DA0Vbq4iEeCXIcykFPsB8Q" name="pull" specification="_DA0Vd64iEeCXIcykFPsB8Q">
+ <language>C/C++</language>
+ <body>if (m_filled > 0) {
+ int current_pos = m_pull_pos;
+
+ m_pull_pos ++;
+ m_filled --;
+ if (m_pull_pos == m_size) {
+ m_pull_pos = 0;
+ }
+ return m_fifo [current_pos];
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DA0Vb64iEeCXIcykFPsB8Q" name="push" specification="_DA0Vc64iEeCXIcykFPsB8Q">
+ <language>C/C++</language>
+ <body>// copy passed parameters ...
+if (m_filled &lt; m_size) {
+ m_fifo [m_push_pos] = data;
+ m_push_pos ++;
+ m_filled ++;
+ if (m_push_pos == m_size) {
+ m_push_pos = 0;
+ }
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DA0VcK4iEeCXIcykFPsB8Q" name="hasData" specification="_DA0Ve64iEeCXIcykFPsB8Q">
+ <language>C/C++</language>
+ <body>return (m_filled > 0);</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_DA0Vc64iEeCXIcykFPsB8Q" name="push" method="_DA0Vb64iEeCXIcykFPsB8Q">
+ <ownedParameter xmi:id="_DA0VdK4iEeCXIcykFPsB8Q" name="data" type="_j_050HLoEd6R5tffIPrlPg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DA0Vdq4iEeCXIcykFPsB8Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DA0Vda4iEeCXIcykFPsB8Q" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_DA0Vd64iEeCXIcykFPsB8Q" name="pull" method="_DA0Vbq4iEeCXIcykFPsB8Q">
+ <ownedParameter xmi:id="_5uM1EE2DEeGzNbfAXPgNLA" name="ret" type="_j_050HLoEd6R5tffIPrlPg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5uODME2DEeGzNbfAXPgNLA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5uOqQE2DEeGzNbfAXPgNLA" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_DA0Ve64iEeCXIcykFPsB8Q" name="hasData" method="_DA0VcK4iEeCXIcykFPsB8Q">
+ <ownedParameter xmi:id="_DA0VfK4iEeCXIcykFPsB8Q" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DA0Vfq4iEeCXIcykFPsB8Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DA0Vfa4iEeCXIcykFPsB8Q" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_qlssgHLmEd6R5tffIPrlPg" name="DataExchange">
+ <ownedTemplateSignature xmi:id="_cHY98HLoEd6R5tffIPrlPg" parameter="_diTcwHLoEd6R5tffIPrlPg">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_diTcwHLoEd6R5tffIPrlPg" parameteredElement="_j_050HLoEd6R5tffIPrlPg">
+ <ownedParameteredElement xmi:type="uml:DataType" xmi:id="_j_050HLoEd6R5tffIPrlPg" name="dataType" templateParameter="_diTcwHLoEd6R5tffIPrlPg"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wh_EwHLmEd6R5tffIPrlPg" name="PushPull" isAbstract="true">
+ <generalization xmi:id="_6zGSwHLnEd6R5tffIPrlPg" general="_unqQoHLnEd6R5tffIPrlPg"/>
+ <generalization xmi:id="_9mPv0HLnEd6R5tffIPrlPg" general="_wtZ1IHLnEd6R5tffIPrlPg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_zc4voHLmEd6R5tffIPrlPg" name="PushPush" isAbstract="true">
+ <generalization xmi:id="_Dc1vwHLoEd6R5tffIPrlPg" general="_yqYfMHLnEd6R5tffIPrlPg"/>
+ <generalization xmi:id="_ELTYQHLoEd6R5tffIPrlPg" general="_unqQoHLnEd6R5tffIPrlPg"/>
+ <generalization xmi:id="_ln-VcBkbEeC-d8-mSUonDQ" general="_unqQoHLnEd6R5tffIPrlPg"/>
+ <generalization xmi:id="_minYwBkbEeC-d8-mSUonDQ" general="_yqYfMHLnEd6R5tffIPrlPg"/>
+ <generalization xmi:id="_SYuK8BkeEeC-d8-mSUonDQ" general="_yqYfMHLnEd6R5tffIPrlPg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_unqQoHLnEd6R5tffIPrlPg" name="PushP" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_xHb7MHLmEd6R5tffIPrlPg" name="pushP" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SJlB4DFrEeCz5-DK9j5azg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SLJvMDFrEeCz5-DK9j5azg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_iRXR8P3IEeC1YdT2qA0bjA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wtZ1IHLnEd6R5tffIPrlPg" name="PullC" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_xcu1wHLmEd6R5tffIPrlPg" name="pullC" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VhIMgDFrEeCz5-DK9j5azg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ViKuUDFrEeCz5-DK9j5azg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2az3IC_fEeKl_vDGXh-OPw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_yqYfMHLnEd6R5tffIPrlPg" name="PushC" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_TRsvoHLoEd6R5tffIPrlPg" name="pushC" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QQVBQDFrEeCz5-DK9j5azg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QR2rQDFrEeCz5-DK9j5azg" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_RTeboHPpEd6R5tffIPrlPg" name="FIFO">
+ <ownedComment xmi:id="_PwZ2MDqOEeCd_O2fHA8dPg" annotatedElement="_dr0doDqNEeCd_O2fHA8dPg">
+ <body>Simple storage of last data that has been received. Unlike FIFO, data can be read several times.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_K_UZoDF2EeCpQdhNuFCtew" annotatedElement="_Y1jF8HPpEd6R5tffIPrlPg">
+ <body>This is an implementation of a FIFO of a configurable size (default: 20 elements).</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Y1jF8HPpEd6R5tffIPrlPg" clientDependency="_EYbXkf68Ed6Zw96O-tCw7A _EYrPMf68Ed6Zw96O-tCw7A _y6XsAF72EeGerN33d-RdRg" name="FIFO_impl">
+ <ownedComment xmi:id="_EiDM8K_2EeC6ALhykKLu_g" annotatedElement="_XDRnoHUIEd6R5tffIPrlPg">
+ <body>Configuration attribute: the size of the FIFO
+</body>
+ </ownedComment>
+ <generalization xmi:id="_Z4Oq8HPpEd6R5tffIPrlPg" general="_wh_EwHLmEd6R5tffIPrlPg"/>
+ <generalization xmi:id="_ws_1gF72EeGerN33d-RdRg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:id="_6iV9wHUHEd6R5tffIPrlPg" name="m_push_pos" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_RlKZIHUIEd6R5tffIPrlPg" name="m_pull_pos" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_XDRnoHUIEd6R5tffIPrlPg" name="m_size" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SUhOUBGcEd-rfYlCjUOxJQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SUpKIBGcEd-rfYlCjUOxJQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_T1yz0BGcEd-rfYlCjUOxJQ" value="20"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_XcO6MHUIEd6R5tffIPrlPg" name="m_filled" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zNeIsBGZEd-rfYlCjUOxJQ" name="m_fifo" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q8o1YBGcEd-rfYlCjUOxJQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q8vjEBGcEd-rfYlCjUOxJQ" value="*"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_EYbXkf68Ed6Zw96O-tCw7A" name="derived realization of D_Push_dataType" client="_Y1jF8HPpEd6R5tffIPrlPg" supplier="_EUZMIf68Ed6Zw96O-tCw7A" contract="_EUZMIf68Ed6Zw96O-tCw7A"/>
+ <interfaceRealization xmi:id="_EYrPMf68Ed6Zw96O-tCw7A" name="derived realization of D_PullConsumer_dataType" client="_Y1jF8HPpEd6R5tffIPrlPg" supplier="_EYj6cP68Ed6Zw96O-tCw7A" contract="_EYj6cP68Ed6Zw96O-tCw7A"/>
+ <interfaceRealization xmi:id="_y6XsAF72EeGerN33d-RdRg" name="derived realization of ILifeCycle" client="_Y1jF8HPpEd6R5tffIPrlPg">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FjGlgP69Ed6Zw96O-tCw7A" name="pull" specification="_EYx84P68Ed6Zw96O-tCw7A">
+ <language>C/C++</language>
+ <body>if (m_filled > 0) {
+ int current_pos = m_pull_pos;
+
+ m_pull_pos ++;
+ m_filled --;
+ if (m_pull_pos == m_size) {
+ m_pull_pos = 0;
+ }
+ return m_fifo [current_pos];
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IwXLsP69Ed6Zw96O-tCw7A" name="push" specification="_EYsdUP68Ed6Zw96O-tCw7A">
+ <language>C/C++</language>
+ <body>// copy passed parameters ...
+if (m_filled &lt; m_size) {
+ m_fifo [m_push_pos] = data;
+ m_push_pos ++;
+ m_filled ++;
+ if (m_push_pos == m_size) {
+ m_push_pos = 0;
+ }
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__Ha0IBJHEd-XjYZ05V-9-Q" name="hasData" specification="_AnQ3QBI9Ed-XjYZ05V-9-Q">
+ <language>C/C++</language>
+ <body>return (m_filled > 0);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QzOqwK8yEeCXIcykFPsB8Q" name="activate" specification="_5IpEwK8xEeCXIcykFPsB8Q">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+
+[template public activate(dataType : DataType)]
+
+if (m_size == 0) {
+ cerr &lt;&lt; &quot;Warning: size of FIFO is not properly configured (=0!)&quot; &lt;&lt; endl;
+}
+m_fifo = new [pkgTemplateParameter('dataType')+'[m_size]'/];
+[/template]</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_EYsdUP68Ed6Zw96O-tCw7A" name="push" method="_IwXLsP69Ed6Zw96O-tCw7A">
+ <ownedParameter xmi:id="_EYtEYP68Ed6Zw96O-tCw7A" name="data" type="_j_050HLoEd6R5tffIPrlPg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EYtEYf68Ed6Zw96O-tCw7A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EYtEYv68Ed6Zw96O-tCw7A" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_EYx84P68Ed6Zw96O-tCw7A" name="pull" method="_FjGlgP69Ed6Zw96O-tCw7A">
+ <ownedParameter xmi:id="_EYx84f68Ed6Zw96O-tCw7A" name="ret" type="_j_050HLoEd6R5tffIPrlPg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EYx84v68Ed6Zw96O-tCw7A" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EYx84_68Ed6Zw96O-tCw7A" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AnQ3QBI9Ed-XjYZ05V-9-Q" name="hasData" method="__Ha0IBJHEd-XjYZ05V-9-Q">
+ <ownedParameter xmi:id="_AtKsIBJXEd-QgZm_R1AKbA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AtNIYBJXEd-QgZm_R1AKbA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AtNvcBJXEd-QgZm_R1AKbA" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_5IpEwK8xEeCXIcykFPsB8Q" name="activate" method="_QzOqwK8yEeCXIcykFPsB8Q"/>
+ <ownedOperation xmi:id="_y7cqEF72EeGerN33d-RdRg" name="deactivate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_dr0doDqNEeCd_O2fHA8dPg" clientDependency="_kMR58DqNEeCd_O2fHA8dPg _kMUWMDqNEeCd_O2fHA8dPg" name="KeepLast">
+ <generalization xmi:id="_dr0dozqNEeCd_O2fHA8dPg" general="_wh_EwHLmEd6R5tffIPrlPg"/>
+ <ownedAttribute xmi:id="_dr0dqzqNEeCd_O2fHA8dPg" name="m_data" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dr0drTqNEeCd_O2fHA8dPg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dr0drDqNEeCd_O2fHA8dPg" value="1"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_kMR58DqNEeCd_O2fHA8dPg" name="derived realization of D_Push_dataType" client="_dr0doDqNEeCd_O2fHA8dPg" supplier="_1IdcEDFqEeCz5-DK9j5azg" contract="_1IdcEDFqEeCz5-DK9j5azg"/>
+ <interfaceRealization xmi:id="_kMUWMDqNEeCd_O2fHA8dPg" name="derived realization of D_PullConsumer_dataType" client="_dr0doDqNEeCd_O2fHA8dPg" supplier="_gxOyUDFsEeCz5-DK9j5azg" contract="_gxOyUDFsEeCz5-DK9j5azg"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dr0drjqNEeCd_O2fHA8dPg" name="pull" specification="_dr0dtzqNEeCd_O2fHA8dPg">
+ <language>C/C++</language>
+ <body>return m_data;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dr0drzqNEeCd_O2fHA8dPg" name="push" specification="_dr0dszqNEeCd_O2fHA8dPg">
+ <language>C/C++</language>
+ <body>// copy passed parameter ...
+m_data = data;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dr0dsDqNEeCd_O2fHA8dPg" name="hasData" specification="_dr0duzqNEeCd_O2fHA8dPg">
+ <language>C/C++</language>
+ <body>// only return true, once first data has been received
+return true;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_dr0dszqNEeCd_O2fHA8dPg" name="push" method="_dr0drzqNEeCd_O2fHA8dPg">
+ <ownedParameter xmi:id="_dr0dtDqNEeCd_O2fHA8dPg" name="data" type="_j_050HLoEd6R5tffIPrlPg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dr0dtjqNEeCd_O2fHA8dPg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dr0dtTqNEeCd_O2fHA8dPg" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_dr0dtzqNEeCd_O2fHA8dPg" name="pull" method="_dr0drjqNEeCd_O2fHA8dPg">
+ <ownedParameter xmi:id="_5uB18E2DEeGzNbfAXPgNLA" name="ret" type="_j_050HLoEd6R5tffIPrlPg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5uDEEE2DEeGzNbfAXPgNLA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5uDrIE2DEeGzNbfAXPgNLA" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_dr0duzqNEeCd_O2fHA8dPg" name="hasData" method="_dr0dsDqNEeCd_O2fHA8dPg">
+ <ownedParameter xmi:id="_dr0dvDqNEeCd_O2fHA8dPg" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dr0dvjqNEeCd_O2fHA8dPg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dr0dvTqNEeCd_O2fHA8dPg" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_qZQUUC_gEeKl_vDGXh-OPw" clientDependency="_M8bNcC_hEeKl_vDGXh-OPw" name="KeepLastBidir">
+ <generalization xmi:id="_qZQUUS_gEeKl_vDGXh-OPw" general="_gKLGoC_fEeKl_vDGXh-OPw"/>
+ <ownedAttribute xmi:id="_qZQUUi_gEeKl_vDGXh-OPw" name="m_data" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qZQUUy_gEeKl_vDGXh-OPw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qZQUVC_gEeKl_vDGXh-OPw" value="1"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_M8bNcC_hEeKl_vDGXh-OPw" name="derived realization of D_PushProdPullCons_dataType" client="_qZQUUC_gEeKl_vDGXh-OPw" supplier="_AUVEgC_hEeKl_vDGXh-OPw" contract="_AUVEgC_hEeKl_vDGXh-OPw"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qZQUVy_gEeKl_vDGXh-OPw" name="pull" specification="_M8uvcC_hEeKl_vDGXh-OPw">
+ <language>C/C++</language>
+ <body>return m_data;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qZQUWC_gEeKl_vDGXh-OPw" name="push" specification="_M8e30C_hEeKl_vDGXh-OPw">
+ <language>C/C++</language>
+ <body>// copy passed parameter ...
+m_data = data;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qZQUWS_gEeKl_vDGXh-OPw" name="hasData" specification="_M82rQC_hEeKl_vDGXh-OPw">
+ <language>C/C++</language>
+ <body>// only return true, once first data has been received
+return true;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_M8e30C_hEeKl_vDGXh-OPw" name="push" method="_qZQUWC_gEeKl_vDGXh-OPw">
+ <ownedParameter xmi:id="_M8mMkC_hEeKl_vDGXh-OPw" name="data" type="_j_050HLoEd6R5tffIPrlPg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M8oo0C_hEeKl_vDGXh-OPw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M8p28C_hEeKl_vDGXh-OPw" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_M8uvcC_hEeKl_vDGXh-OPw" name="pull" method="_qZQUVy_gEeKl_vDGXh-OPw">
+ <ownedParameter xmi:id="_M8wkoC_hEeKl_vDGXh-OPw" name="ret" type="_j_050HLoEd6R5tffIPrlPg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M8yZ0C_hEeKl_vDGXh-OPw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M8zA4C_hEeKl_vDGXh-OPw" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_M82rQC_hEeKl_vDGXh-OPw" name="hasData" method="_qZQUWS_gEeKl_vDGXh-OPw">
+ <ownedParameter xmi:id="_M85ukC_hEeKl_vDGXh-OPw" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M87jwC_hEeKl_vDGXh-OPw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M88K0C_hEeKl_vDGXh-OPw" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_1IdcEDFqEeCz5-DK9j5azg" name="D_Push_dataType">
+ <ownedOperation xmi:id="_1ImmADFqEeCz5-DK9j5azg" name="push">
+ <ownedParameter xmi:id="_1In0IDFqEeCz5-DK9j5azg" name="data" type="_j_050HLoEd6R5tffIPrlPg"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_gxOyUDFsEeCz5-DK9j5azg" name="D_PullConsumer_dataType">
+ <ownedOperation xmi:id="_gxWuIDFsEeCz5-DK9j5azg" name="pull">
+ <ownedParameter xmi:id="_gxX8QDFsEeCz5-DK9j5azg" name="ret" type="_j_050HLoEd6R5tffIPrlPg" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_gxc0wDFsEeCz5-DK9j5azg" name="hasData">
+ <ownedParameter xmi:id="_gxfRADFsEeCz5-DK9j5azg" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_gKLGoC_fEeKl_vDGXh-OPw" name="BidirPushPull" isAbstract="true">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_h9XikC_fEeKl_vDGXh-OPw" name="inoutR" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i_u-gC_fEeKl_vDGXh-OPw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i_2TQC_fEeKl_vDGXh-OPw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_i_9oAC_fEeKl_vDGXh-OPw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_jaXsEC_fEeKl_vDGXh-OPw" name="inoutL" visibility="public" type="_j_050HLoEd6R5tffIPrlPg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jo2M8C_fEeKl_vDGXh-OPw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jo7FcC_fEeKl_vDGXh-OPw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jpBzIC_fEeKl_vDGXh-OPw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_EUZMIP68Ed6Zw96O-tCw7A" name="derivedInterfaces">
+ <packagedElement xmi:type="uml:Interface" xmi:id="_EUZMIf68Ed6Zw96O-tCw7A" name="D_Push_dataType">
+ <ownedOperation xmi:id="_EYawgP68Ed6Zw96O-tCw7A" name="push">
+ <ownedParameter xmi:id="_EYbXkP68Ed6Zw96O-tCw7A" name="data" type="_j_050HLoEd6R5tffIPrlPg"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_EYj6cP68Ed6Zw96O-tCw7A" name="D_PullConsumer_dataType">
+ <ownedOperation xmi:id="_EYqoIP68Ed6Zw96O-tCw7A" name="pull">
+ <ownedParameter xmi:id="_EYrPMP68Ed6Zw96O-tCw7A" name="ret" type="_j_050HLoEd6R5tffIPrlPg" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IAq_sBI7Ed-3zOZ0RGapGA" name="hasData">
+ <ownedParameter xmi:id="_IArmwBI7Ed-3zOZ0RGapGA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AUVEgC_hEeKl_vDGXh-OPw" name="D_PushProdPullCons_dataType">
+ <generalization xmi:id="_AUnYYC_hEeKl_vDGXh-OPw" general="_EUZMIf68Ed6Zw96O-tCw7A"/>
+ <generalization xmi:id="_AUn_cC_hEeKl_vDGXh-OPw" general="_EYj6cP68Ed6Zw96O-tCw7A"/>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_eWXo4HLmEd6R5tffIPrlPg">
+ <eAnnotations xmi:id="_eWdIcHLmEd6R5tffIPrlPg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_6uptEHLmEd6R5tffIPrlPg">
+ <eAnnotations xmi:id="_6vA5cHLmEd6R5tffIPrlPg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_caocoF8DEeGerN33d-RdRg">
+ <eAnnotations xmi:id="_cokK8F8DEeGerN33d-RdRg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ </uml:Model>
+ <l2:ModelLibrary xmi:id="_eex-AHLmEd6R5tffIPrlPg" base_Package="_ePwqkHLmEd6R5tffIPrlPg"/>
+ <FCM:Port xmi:id="_6vCHkHLmEd6R5tffIPrlPg" conjugated="true">
+ <kind href="core.uml#_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Port xmi:id="_6vCHkXLmEd6R5tffIPrlPg" conjugated="true">
+ <kind href="core.uml#_x5mL4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Port xmi:id="_42zlMHLnEd6R5tffIPrlPg" base_Port="_xHb7MHLmEd6R5tffIPrlPg" conjugated="true">
+ <kind href="core.uml#_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Port xmi:id="_57KlMHLnEd6R5tffIPrlPg" base_Port="_xcu1wHLmEd6R5tffIPrlPg" conjugated="true">
+ <kind href="core.uml#_x5mL4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Port xmi:id="_TRtWsHLoEd6R5tffIPrlPg" base_Port="_TRsvoHLoEd6R5tffIPrlPg" conjugated="true">
+ <kind href="core.uml#_pE6GUFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:InteractionComponent xmi:id="_xQ_ccHUuEd6R5tffIPrlPg" base_Class="_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <FCM:DerivedElement xmi:id="_EYYUQP68Ed6Zw96O-tCw7A" base_Element="_EUZMIf68Ed6Zw96O-tCw7A" source="_j_050HLoEd6R5tffIPrlPg"/>
+ <FCM:DerivedElement xmi:id="_EYlvoP68Ed6Zw96O-tCw7A" base_Element="_EYj6cP68Ed6Zw96O-tCw7A" source="_j_050HLoEd6R5tffIPrlPg"/>
+ <FCM:DerivedElement xmi:id="_EYu5kP68Ed6Zw96O-tCw7A" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_EYzyEP68Ed6Zw96O-tCw7A" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_0TRKgP6-Ed6Zw96O-tCw7A" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_0TVb8P6-Ed6Zw96O-tCw7A" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_7G9E0P6-Ed6Zw96O-tCw7A" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_7HAIIP6-Ed6Zw96O-tCw7A" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:InteractionComponent xmi:id="_IwT2cP6_Ed6Zw96O-tCw7A" base_Class="_wh_EwHLmEd6R5tffIPrlPg"/>
+ <FCM:InteractionComponent xmi:id="_KcV6cP6_Ed6Zw96O-tCw7A" base_Class="_zc4voHLmEd6R5tffIPrlPg"/>
+ <FCM:DerivedElement xmi:id="_vfBPwARNEd-OidZzGKCpzg" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_vfETEARNEd-OidZzGKCpzg" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_op38oAnOEd-9beZpMGts2w" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_op6Y4AnOEd-9beZpMGts2w" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_6tSQAAnUEd-co_m_wv4b6A" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_6tRB4AnUEd-co_m_wv4b6A" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_YMvtUBGZEd-rfYlCjUOxJQ" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_YMw7cBGZEd-rfYlCjUOxJQ" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_t02owBGaEd-rfYlCjUOxJQ" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_t04d8BGaEd-rfYlCjUOxJQ" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_G7PB4BGcEd-rfYlCjUOxJQ" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_G7QQABGcEd-rfYlCjUOxJQ" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_C4zYIBGlEd-Jq_XWT8Mhpg" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_C5J9cBGlEd-Jq_XWT8Mhpg" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_IAwfQBI7Ed-3zOZ0RGapGA" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_IAxtYBI7Ed-3zOZ0RGapGA" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_IA3M8BI7Ed-3zOZ0RGapGA" source="_IAq_sBI7Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_AnNM4BI9Ed-XjYZ05V-9-Q" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_AnPpIBI9Ed-XjYZ05V-9-Q" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_AnVvwBI9Ed-XjYZ05V-9-Q" base_Element="_AnQ3QBI9Ed-XjYZ05V-9-Q" source="_IAq_sBI7Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_11TxwBJWEd-QgZm_R1AKbA" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_11WOABJWEd-QgZm_R1AKbA" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_11YqQBJWEd-QgZm_R1AKbA" base_Element="_AnQ3QBI9Ed-XjYZ05V-9-Q" source="_IAq_sBI7Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_C7UZcBQ-Ed-_dI0JopJMvQ" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_C7WOoBQ-Ed-_dI0JopJMvQ" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_C7YD0BQ-Ed-_dI0JopJMvQ" base_Element="_AnQ3QBI9Ed-XjYZ05V-9-Q" source="_IAq_sBI7Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_kUMisBb8Ed-u0pMEAnvpEQ" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_kUNw0Bb8Ed-u0pMEAnvpEQ" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_kUPmABb8Ed-u0pMEAnvpEQ" base_Element="_AnQ3QBI9Ed-XjYZ05V-9-Q" source="_IAq_sBI7Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_6-zKABcKEd-Tda7vKXmT2A" base_Element="_EYsdUP68Ed6Zw96O-tCw7A" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_6-1mQBcKEd-Tda7vKXmT2A" base_Element="_EYx84P68Ed6Zw96O-tCw7A" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_6-3bcBcKEd-Tda7vKXmT2A" base_Element="_AnQ3QBI9Ed-XjYZ05V-9-Q" source="_IAq_sBI7Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_1IlX4DFqEeCz5-DK9j5azg" base_Element="_1IdcEDFqEeCz5-DK9j5azg" source="_j_050HLoEd6R5tffIPrlPg"/>
+ <FCM:DerivedElement xmi:id="_gxVgADFsEeCz5-DK9j5azg" base_Element="_gxOyUDFsEeCz5-DK9j5azg" source="_j_050HLoEd6R5tffIPrlPg"/>
+ <FCM:InteractionComponent xmi:id="_hp8gEDqNEeCd_O2fHA8dPg" base_Class="_dr0doDqNEeCd_O2fHA8dPg"/>
+ <FCM:DerivedElement xmi:id="_kMpGUDqNEeCd_O2fHA8dPg" base_Element="_dr0dszqNEeCd_O2fHA8dPg" source="_1ImmADFqEeCz5-DK9j5azg"/>
+ <FCM:DerivedElement xmi:id="_kMsJoDqNEeCd_O2fHA8dPg" base_Element="_dr0dtzqNEeCd_O2fHA8dPg" source="_gxWuIDFsEeCz5-DK9j5azg"/>
+ <FCM:DerivedElement xmi:id="_kMul4DqNEeCd_O2fHA8dPg" base_Element="_dr0duzqNEeCd_O2fHA8dPg" source="_gxc0wDFsEeCz5-DK9j5azg"/>
+ <FCM:InteractionComponent xmi:id="_MyvicK4iEeCXIcykFPsB8Q" base_Class="_DA0VYK4iEeCXIcykFPsB8Q"/>
+ <FCM:DerivedElement xmi:id="_O7188K4iEeCXIcykFPsB8Q" base_Element="_DA0Vc64iEeCXIcykFPsB8Q" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_O78qoK4iEeCXIcykFPsB8Q" base_Element="_DA0Vd64iEeCXIcykFPsB8Q" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_O8CKMK4iEeCXIcykFPsB8Q" base_Element="_DA0Ve64iEeCXIcykFPsB8Q" source="_IAq_sBI7Ed-3zOZ0RGapGA"/>
+ <FCM:Template xmi:id="_53zBoK-xEeC6ALhykKLu_g" base_Element="_5IpEwK8xEeCXIcykFPsB8Q"/>
+ <FCM:ConfigurationProperty xmi:id="_FxN9cLC0EeCaaIdtw75MLg" base_Property="_XDRnoHUIEd6R5tffIPrlPg"/>
+ <FCM:DerivedElement xmi:id="_y7XKgF72EeGerN33d-RdRg" base_Element="_5IpEwK8xEeCXIcykFPsB8Q">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_y7vlAF72EeGerN33d-RdRg" base_Element="_y7cqEF72EeGerN33d-RdRg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppInclude xmi:id="_fUHyQF8DEeGerN33d-RdRg" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <FCM:InteractionComponent xmi:id="_Ha4s8C_gEeKl_vDGXh-OPw" base_Class="_gKLGoC_fEeKl_vDGXh-OPw"/>
+ <FCM:InteractionComponent xmi:id="_qZSwkC_gEeKl_vDGXh-OPw" base_Class="_qZQUUC_gEeKl_vDGXh-OPw"/>
+ <FCM:Port xmi:id="_9Pv5MC_gEeKl_vDGXh-OPw" base_Port="_jaXsEC_fEeKl_vDGXh-OPw" conjugated="true">
+ <kind href="core.uml#_SrCqQC8qEeKx7OxAiA06uw"/>
+ </FCM:Port>
+ <FCM:DerivedElement xmi:id="_AUYH0C_hEeKl_vDGXh-OPw" base_Element="_AUVEgC_hEeKl_vDGXh-OPw" source="_j_050HLoEd6R5tffIPrlPg"/>
+ <FCM:Port xmi:id="_DPPWcC_hEeKl_vDGXh-OPw" base_Port="_h9XikC_fEeKl_vDGXh-OPw" conjugated="true">
+ <kind href="core.uml#_SrCqQC8qEeKx7OxAiA06uw"/>
+ </FCM:Port>
+ <FCM:DerivedElement xmi:id="_M8thUC_hEeKl_vDGXh-OPw" base_Element="_M8e30C_hEeKl_vDGXh-OPw" source="_EYawgP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_M81dIC_hEeKl_vDGXh-OPw" base_Element="_M8uvcC_hEeKl_vDGXh-OPw" source="_EYqoIP68Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_M8_1MC_hEeKl_vDGXh-OPw" base_Element="_M82rQC_hEeKl_vDGXh-OPw" source="_IAq_sBI7Ed-3zOZ0RGapGA"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.di
new file mode 100644
index 00000000000..7ffe8088618
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.di
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <di:SashWindowsMngr>
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MI7Mx6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MHtCR6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MdrZx6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MjyEB6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3Mb2Ih6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3Mh83B6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MVvex6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MFQ7R6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3L7fyB6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3L_KOB6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3L0yCB6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3L8t3R6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MfgbB6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MaA5h6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MBmYR6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3LurYh6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MEpqR6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MlnKx6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MEpwh6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3LurYB6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MReFh6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="osal.notation#_3MPB1x6SEeCkz5PP4vZT5g"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="/0/@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="osal.notation#_3LurYh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3L0yCB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3L8t3R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3L_KOB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MBmYR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MEpwh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MHtCR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MI7Mx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MPB1x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MReFh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3Mb2Ih6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MdrZx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MfgbB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3Mh83B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MjyEB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MlnKx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MVvex6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MFQ7R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3MaA5h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="osal.notation#_3LurYB6SEeCkz5PP4vZT5g"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+ </di:SashWindowsMngr>
+ <di:TabFolder/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.notation
new file mode 100644
index 00000000000..58808a7596e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.notation
@@ -0,0 +1,6838 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_3LurYB6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="OS AL package overview" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_b2yOAFjgEeKWlJhcyT0hJA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b2y1EFjgEeKWlJhcyT0hJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b2y1EVjgEeKWlJhcyT0hJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b2y1EljgEeKWlJhcyT0hJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b2y1E1jgEeKWlJhcyT0hJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b2y1FFjgEeKWlJhcyT0hJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b2y1FVjgEeKWlJhcyT0hJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_b2y1FljgEeKWlJhcyT0hJA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_b2y1F1jgEeKWlJhcyT0hJA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_b2y1GFjgEeKWlJhcyT0hJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b2y1GVjgEeKWlJhcyT0hJA"/>
+ </children>
+ <element xmi:type="uml:Package" href="osal.uml#_mU3acC-OEdySSa8YESkO2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b2yOAVjgEeKWlJhcyT0hJA" x="52" y="39"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_clYZYFjgEeKWlJhcyT0hJA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_clZAcFjgEeKWlJhcyT0hJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_clZAcVjgEeKWlJhcyT0hJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_clZAcljgEeKWlJhcyT0hJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_clZAc1jgEeKWlJhcyT0hJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_clZAdFjgEeKWlJhcyT0hJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_clZngFjgEeKWlJhcyT0hJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_clZngVjgEeKWlJhcyT0hJA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_clZngljgEeKWlJhcyT0hJA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_clZng1jgEeKWlJhcyT0hJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_clZnhFjgEeKWlJhcyT0hJA"/>
+ </children>
+ <element xmi:type="uml:Package" href="osal.uml#_oT0acC-OEdySSa8YESkO2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_clYZYVjgEeKWlJhcyT0hJA" x="306" y="39"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dqlG4FjgEeKWlJhcyT0hJA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dqlt8FjgEeKWlJhcyT0hJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dqlt8VjgEeKWlJhcyT0hJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dqmVAFjgEeKWlJhcyT0hJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dqmVAVjgEeKWlJhcyT0hJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dqmVAljgEeKWlJhcyT0hJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dqmVA1jgEeKWlJhcyT0hJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dqmVBFjgEeKWlJhcyT0hJA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dqm8EFjgEeKWlJhcyT0hJA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dqm8EVjgEeKWlJhcyT0hJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dqm8EljgEeKWlJhcyT0hJA"/>
+ </children>
+ <element xmi:type="uml:Package" href="osal.uml#_q6QRMC-OEdySSa8YESkO2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dqlG4VjgEeKWlJhcyT0hJA" x="52" y="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ec4GgFjgEeKWlJhcyT0hJA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ec5UoFjgEeKWlJhcyT0hJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ec5UoVjgEeKWlJhcyT0hJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ec5UoljgEeKWlJhcyT0hJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ec5Uo1jgEeKWlJhcyT0hJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ec5UpFjgEeKWlJhcyT0hJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ec5UpVjgEeKWlJhcyT0hJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ec57sFjgEeKWlJhcyT0hJA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ec57sVjgEeKWlJhcyT0hJA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ec57sljgEeKWlJhcyT0hJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ec57s1jgEeKWlJhcyT0hJA"/>
+ </children>
+ <element xmi:type="uml:Package" href="osal.uml#_soXY0C-OEdySSa8YESkO2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ec4GgVjgEeKWlJhcyT0hJA" x="306" y="169"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fz6x8FjgEeKWlJhcyT0hJA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fz7ZAFjgEeKWlJhcyT0hJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fz7ZAVjgEeKWlJhcyT0hJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fz7ZAljgEeKWlJhcyT0hJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fz7ZA1jgEeKWlJhcyT0hJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fz7ZBFjgEeKWlJhcyT0hJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fz7ZBVjgEeKWlJhcyT0hJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fz7ZBljgEeKWlJhcyT0hJA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fz7ZB1jgEeKWlJhcyT0hJA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fz7ZCFjgEeKWlJhcyT0hJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fz7ZCVjgEeKWlJhcyT0hJA"/>
+ </children>
+ <element xmi:type="uml:Package" href="osal.uml#_vlmmAC-OEdySSa8YESkO2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fz6x8VjgEeKWlJhcyT0hJA" x="52" y="299"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rRYFMFkLEeKyM9oNj0qhEg" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rRdkwFkLEeKyM9oNj0qhEg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rRdkwVkLEeKyM9oNj0qhEg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rRdkwlkLEeKyM9oNj0qhEg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rRdkw1kLEeKyM9oNj0qhEg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rReL0FkLEeKyM9oNj0qhEg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rReL0VkLEeKyM9oNj0qhEg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rReL0lkLEeKyM9oNj0qhEg" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rReL01kLEeKyM9oNj0qhEg" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rReL1FkLEeKyM9oNj0qhEg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rReL1VkLEeKyM9oNj0qhEg"/>
+ </children>
+ <element xmi:type="uml:Package" href="osal.uml#_0AZ9YC-OEdySSa8YESkO2w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rRYsQFkLEeKyM9oNj0qhEg" x="306" y="297"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3LurYR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Model" href="osal.uml#_ROTQYC-OEdySSa8YESkO2w"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_3LurYh6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="util classes: structural relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3LurYx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LurZB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LurZR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LurZh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LurZx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LuraB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LuraR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lurah6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lurax6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LurbB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LurbR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lurbh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lurbx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LurcB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LurcR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lurch6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lurcx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LurdB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LurdR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lurdh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0MTeMFkeEeKFQZ_XV_Kn6g" type="3015" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0MUsUFkeEeKFQZ_XV_Kn6g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0MUsUVkeEeKFQZ_XV_Kn6g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0MUsUlkeEeKFQZ_XV_Kn6g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0MUsU1keEeKFQZ_XV_Kn6g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0MVTYFkeEeKFQZ_XV_Kn6g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0MVTYVkeEeKFQZ_XV_Kn6g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0MVTYlkeEeKFQZ_XV_Kn6g" type="7014">
+ <children xmi:type="notation:Shape" xmi:id="_1XamcFkeEeKFQZ_XV_Kn6g" type="3016" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:TemplateParameter" href="osal.uml#_iWLdwDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1XamcVkeEeKFQZ_XV_Kn6g" x="20" y="20"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_0MVTY1keEeKFQZ_XV_Kn6g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_0MVTZFkeEeKFQZ_XV_Kn6g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0MVTZVkeEeKFQZ_XV_Kn6g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0MVTZlkeEeKFQZ_XV_Kn6g"/>
+ </children>
+ <element xmi:type="uml:RedefinableTemplateSignature" href="osal.uml#_gkCKsDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0MTeMVkeEeKFQZ_XV_Kn6g" x="410" y="-11" width="145" height="29"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Lurdx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_W-ZGIDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LureB6SEeCkz5PP4vZT5g" x="111" y="144" width="498" height="39"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3LvSch6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvScx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSdB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvSdR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSdh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvSdx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSeB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3LvSeR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSeh6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSex6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvSfB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSfR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSfh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSfx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvSgB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSgR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSgh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSgx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvShB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvShR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3LvShh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvShx6SEeCkz5PP4vZT5g" x="112" y="257" width="100" height="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3LvSiB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvSiR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSih6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvSix6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSjB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvSjR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSjh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3LvSjx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSkB6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSkR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvSkh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSkx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSlB6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSlR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvSlh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSlx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSmB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSmR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvSmh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSmx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3LvSnB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_0AwCEDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSnR6SEeCkz5PP4vZT5g" x="238" y="257" width="100" height="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3LvSnh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvSnx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSoB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvSoR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSoh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvSox6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSpB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3LvSpR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSph6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSpx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvSqB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSqR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSqh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSqx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvSrB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSrR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3LvSrh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3LvSrx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3LvSsB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSsR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3LvSsh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1vnXoDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3LvSsx6SEeCkz5PP4vZT5g" x="368" y="257" width="100" height="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3LvStB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LvStR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3LvSth6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lv5gB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lv5gR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lv5gh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lv5gx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lv5hB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5hR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5hh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5hx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5iB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5iR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5ih6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5ix6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5jB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5jR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5jh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5jx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5kB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Lv5kR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_3W43cDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5kh6SEeCkz5PP4vZT5g" x="509" y="255" width="100" height="34"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Lv5kx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lv5lB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lv5lR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lv5lh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lv5lx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lv5mB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lv5mR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lv5mh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5mx6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5nB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5nR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5nh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5nx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5oB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5oR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5oh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5ox6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5pB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5pR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5ph6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Lv5px6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5qB6SEeCkz5PP4vZT5g" x="108" y="72" width="505" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Lv5qR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lv5qh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lv5qx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lv5rB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lv5rR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lv5rh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lv5rx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lv5sB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5sR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5sh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5sx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5tB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5tR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5th6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5tx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Lv5uB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Lv5uR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Lv5uh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Lv5ux6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Ly80B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Ly80R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Ly80h6SEeCkz5PP4vZT5g" x="114" y="351" width="494" height="37"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3Ly80x6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_0AZ9YC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3Lzj7R6SEeCkz5PP4vZT5g" type="4002" source="_3LurYx6SEeCkz5PP4vZT5g" target="_3Lv5kx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lzj7h6SEeCkz5PP4vZT5g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Lzj7x6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Lzj8B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Generalization" href="osal.uml#_ZFUrgDO2EdyG-pUz-bb-Lg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Lzj8R6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Lzj8h6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Lzj8x6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3Lzj9B6SEeCkz5PP4vZT5g" type="4001" source="_3Lv5qR6SEeCkz5PP4vZT5g" target="_3LvSch6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lzj9R6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Lzj9h6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lzj9x6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Lzj-B6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lzj-R6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lzj-h6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lzj-x6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Lzj_B6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Lzj_R6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Lzj_h6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Lzj_x6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3LzkAB6SEeCkz5PP4vZT5g" x="-14" y="-42"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3LzkAR6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3LzkAh6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3LzkAx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_sJKdoDUbEdyDReAOQiyvOg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3LzkBB6SEeCkz5PP4vZT5g" points="[-1, -2, -1, 137]$[-18, -87, -18, 52]$[-18, -89, -18, 50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3LzkBR6SEeCkz5PP4vZT5g" id="(0.07894736842105263,0.1891891891891892)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3LzkBh6SEeCkz5PP4vZT5g" id="(0.38,0.7941176470588235)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3LzkBx6SEeCkz5PP4vZT5g" type="4001" source="_3Lv5qR6SEeCkz5PP4vZT5g" target="_3LvSch6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3LzkCB6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3LzkCR6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3LzkCh6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3LzkCx6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3LzkDB6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3LzkDR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0K8B6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0K8R6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0K8h6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L0K8x6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0K9B6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0K9R6SEeCkz5PP4vZT5g" x="-14" y="44"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0K9h6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0K9x6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L0K-B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_vA-sYDUoEdyDReAOQiyvOg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L0K-R6SEeCkz5PP4vZT5g" points="[-1, -1, 0, 63]$[-1, -28, 0, 36]$[-1, -61, 0, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L0K-h6SEeCkz5PP4vZT5g" id="(0.17813765182186234,0.05)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L0K-x6SEeCkz5PP4vZT5g" id="(0.89,0.92)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3L0K_B6SEeCkz5PP4vZT5g" type="4001" source="_3Lv5qR6SEeCkz5PP4vZT5g" target="_3LvSnh6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0K_R6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0K_h6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0K_x6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0LAB6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LAR6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L0LAh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0LAx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0LBB6SEeCkz5PP4vZT5g" x="11" y="-22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LBR6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L0LBh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0LBx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0LCB6SEeCkz5PP4vZT5g" x="-14" y="36"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LCR6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LCh6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L0LCx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#__XEKADUoEdyDReAOQiyvOg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L0LDB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L0LDR6SEeCkz5PP4vZT5g" id="(0.6153846153846154,0.05)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L0LDh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3L0LDx6SEeCkz5PP4vZT5g" type="4001" source="_3Lv5qR6SEeCkz5PP4vZT5g" target="_3LvStB6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LEB6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0LER6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LEh6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0LEx6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LFB6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L0LFR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0LFh6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0LFx6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LGB6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L0LGR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0LGh6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0LGx6SEeCkz5PP4vZT5g" x="2" y="42"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LHB6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0LHR6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L0LHh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_E53rQDUpEdyDReAOQiyvOg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L0LHx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L0LIB6SEeCkz5PP4vZT5g" id="(0.8967611336032388,0.06)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L0LIR6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_t0jrMB6TEeCkz5PP4vZT5g" type="4015" source="_3LvSnh6SEeCkz5PP4vZT5g" target="_3LurYx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_t0k5UB6TEeCkz5PP4vZT5g" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t0k5UR6TEeCkz5PP4vZT5g" x="-2" y="51"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t0k5Uh6TEeCkz5PP4vZT5g" type="6036">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t0k5Ux6TEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_t0kSQB6TEeCkz5PP4vZT5g" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:TemplateBinding" href="osal.uml#_L8BvcDO1EdyG-pUz-bb-Lg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_t0kSQR6TEeCkz5PP4vZT5g" points="[-17, -50, 41, 131]$[-48, -148, 10, 33]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9HTcgB6TEeCkz5PP4vZT5g" id="(0.6164658634538153,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_0Vx8gB6TEeCkz5PP4vZT5g" type="4015" source="_3LvSiB6SEeCkz5PP4vZT5g" target="_3LurYx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Vx8gx6TEeCkz5PP4vZT5g" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Vx8hB6TEeCkz5PP4vZT5g" x="-2" y="53"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0VyjkB6TEeCkz5PP4vZT5g" type="6036">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0VyjkR6TEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_0Vx8gR6TEeCkz5PP4vZT5g" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:TemplateBinding" href="osal.uml#_Lb-9cDO1EdyG-pUz-bb-Lg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0Vx8gh6TEeCkz5PP4vZT5g" points="[19, -50, -53, 131]$[59, -148, -13, 33]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9u95cB6TEeCkz5PP4vZT5g" id="(0.35943775100401604,0.8153846153846154)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_7n9JoB6TEeCkz5PP4vZT5g" type="4015" source="_3LvStB6SEeCkz5PP4vZT5g" target="_3LurYx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_7n-XwB6TEeCkz5PP4vZT5g" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7n-XwR6TEeCkz5PP4vZT5g" x="-3" y="59"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7n-Xwh6TEeCkz5PP4vZT5g" type="6036">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7n-Xwx6TEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_7n9JoR6TEeCkz5PP4vZT5g" fontName="Sans Serif" fontHeight="10"/>
+ <element xmi:type="uml:TemplateBinding" href="osal.uml#_MbeEgDO1EdyG-pUz-bb-Lg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7n9Joh6TEeCkz5PP4vZT5g" points="[-50, -45, 149, 134]$[-163, -146, 36, 33]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8hYE8B6TEeCkz5PP4vZT5g" id="(0.8955823293172691,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_10eyYFkdEeKFQZ_XV_Kn6g" type="4015" source="_3LvSch6SEeCkz5PP4vZT5g" target="_3LurYx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_10gAgFkdEeKFQZ_XV_Kn6g" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_10gnkFkdEeKFQZ_XV_Kn6g" x="-1" y="53"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_10gnkVkdEeKFQZ_XV_Kn6g" type="6036">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_10gnklkdEeKFQZ_XV_Kn6g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_10eyYVkdEeKFQZ_XV_Kn6g" fontName="Sans Serif"/>
+ <element xmi:type="uml:TemplateBinding" href="osal.uml#_K4hEADO1EdyG-pUz-bb-Lg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_10eyYlkdEeKFQZ_XV_Kn6g" points="[50, -46, -148, 135]$[162, -148, -36, 33]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2ytVMFkdEeKFQZ_XV_Kn6g" id="(0.10843373493975904,0.4)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3L0LIh6SEeCkz5PP4vZT5g" width="498" height="65"/>
+ <notation:Location xmi:id="_3L0LIx6SEeCkz5PP4vZT5g" x="165" y="185"/>
+ <notation:Size xmi:id="_3L0LJB6SEeCkz5PP4vZT5g" width="170" height="35"/>
+ <notation:Location xmi:id="_3L0LJR6SEeCkz5PP4vZT5g" x="644" y="153"/>
+ <notation:Size xmi:id="_3L0yAB6SEeCkz5PP4vZT5g" width="100" height="100"/>
+ <notation:Location xmi:id="_3L0yAR6SEeCkz5PP4vZT5g" x="166" y="348"/>
+ <notation:Location xmi:id="_3L0yAh6SEeCkz5PP4vZT5g" x="292" y="348"/>
+ <notation:Location xmi:id="_3L0yAx6SEeCkz5PP4vZT5g" x="422" y="348"/>
+ <notation:Location xmi:id="_3L0yBB6SEeCkz5PP4vZT5g" x="563" y="346"/>
+ <notation:Location xmi:id="_3L0yBR6SEeCkz5PP4vZT5g" x="367" y="10"/>
+ <notation:Size xmi:id="_3L0yBh6SEeCkz5PP4vZT5g" width="494" height="100"/>
+ <notation:Location xmi:id="_3L0yBx6SEeCkz5PP4vZT5g" x="168" y="535"/>
+ <notation:Diagram xmi:id="_3L0yCB6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="util classes: details" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3L0yCR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L0yCh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0yCx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L0yDB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0yDR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L0yDh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L0yDx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L0yEB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L0yER6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3L0yEh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_A2bjsDRoEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yEx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yFB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_FafkwDRoEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yFR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yFh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_NT80UDRoEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yFx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yGB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_WG7s4DRoEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yGR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yGh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_ahw5cDRoEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yGx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yHB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_gH_iIDRoEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yHR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yHh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_nHCX4DRoEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yHx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L0yIB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L0yIR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L0yIh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L0yIx6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3L0yJB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_J60NwDRGEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yJR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yJh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_X1eKwDRGEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yJx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yKB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_E8CKIDRHEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yKR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yKh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_sBF6EDRHEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yKx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yLB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_0h42cDRHEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yLR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yLh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ABbb4DRIEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yLx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yMB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_La2yQDRIEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yMR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yMh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_dH9GIDRIEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yMx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yNB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_lWbjcDRIEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L0yNR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L0yNh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_yR57YDRIEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZEB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZER6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_-YxmkDRIEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZEh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZEx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_F4T6QDRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZFB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZFR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_IS_M8DRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZFh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZFx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_RAcsUDRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZGB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZGR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_V-mBUDRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZGh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZGx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_nyaBMDRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZHB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZHR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_uTyqkDRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZHh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZHx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_xfysgDRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZIB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZIR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_xsnAgDRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZIh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZIx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_x1P_IDRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZJB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZJR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_x8tSADRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZJh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZJx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_yJ0g8DRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZKB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZKR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_yQhl4DRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZKh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZKx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_yXOq0DRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZLB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZLR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_yjTX8DRJEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZLh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZLx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_8OaV4DRKEdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZMB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZMR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_lKriQDRPEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZMh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZMx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_m8rEUDRPEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZNB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZNR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Z9YpwDRXEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZNh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZNx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_aIaOADRXEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZOB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZOR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_aOg2ADRXEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L1ZOh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L1ZOx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_aU7AADRXEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L5qgB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L5qgR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_aavUIDRXEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L5qgh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L5qgx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ag_tIDRXEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L5qhB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L5qhR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_amWuQDRXEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L5qhh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L5qhx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ZkKxIDRaEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L5qiB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L5qiR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_O59-oDRiEdyDwaY3iUxzzA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L5qih6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L5qix6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_tMpS8DRiEdyDwaY3iUxzzA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6RkB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RkR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_FX25wDRjEdyDwaY3iUxzzA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6Rkh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6Rkx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_UA3KgDRjEdyDwaY3iUxzzA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6RlB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RlR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_hifjgDRjEdyDwaY3iUxzzA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6Rlh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6Rlx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_hujpkDRjEdyDwaY3iUxzzA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6RmB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RmR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_h3DeQDRjEdyDwaY3iUxzzA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6Rmh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6Rmx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_iQYkQDRjEdyDwaY3iUxzzA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6RnB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RnR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_hQh-4DRlEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6Rnh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6Rnx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_w9e_8DRlEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6RoB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RoR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_BSrFsDRmEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6Roh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6Rox6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_QpuIMDRmEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6RpB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RpR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_urQpMDRmEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6Rph6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6Rpx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_AJnWcDRnEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6RqB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RqR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ZakdUDRnEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6Rqh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6Rqx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_d6UmIDRnEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6RrB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RrR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_tamdIDRnEdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L6Rrh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L6Rrx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L6RsB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L6RsR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L6Rsh6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L6Rsx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L6RtB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L6RtR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L6Rth6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L6Rtx6SEeCkz5PP4vZT5g" x="34" y="29" width="305" height="1009"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L6RuB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L6RuR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L6Ruh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L6Rux6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L6RvB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L64oB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L64oR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L64oh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L64ox6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3L64pB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_jwCk4DR-Edy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64pR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L64ph6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L64px6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L64qB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L64qR6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3L64qh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_m2Mk4DR7EdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64qx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L64rB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_rwKkgDR7EdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64rR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L64rh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_N8S2oDR8EdypGbuyt3_DaA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64rx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L64sB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_63iW0DR8Edy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64sR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L64sh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_PngwYDR-Edy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64sx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L64tB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L64tR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L64th6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L64tx6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L64uB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L64uR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L64uh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L64ux6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_W-ZGIDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L64vB6SEeCkz5PP4vZT5g" x="407" y="67" width="316" height="184"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L64vR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L64vh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L64vx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L64wB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L64wR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L64wh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L64wx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L64xB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L64xR6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3L64xh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_4rbvkDUUEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64xx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L64yB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_7ahzEDUUEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64yR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L64yh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L64yx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L64zB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L64zR6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3L64zh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ZgB1wDUPEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L64zx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L640B6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_BdhNEDUREdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L640R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L640h6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_GLk3oDUREdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L640x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L641B6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_OQgXYDUREdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L641R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L641h6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_QP6qYDUREdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L641x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L642B6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_T-5BEDUSEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L642R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L642h6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_WR0tADUSEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L642x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L643B6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_X5-9oDUSEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L643R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L643h6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Y7GcYDUSEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L643x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L644B6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_a43woDUSEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L644R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L7fsB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_bfnnkDUSEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L7fsR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L7fsh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_MvhlcDUUEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L7fsx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L7ftB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_OMqR0DUUEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L7ftR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L7fth6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Pfz7wDUUEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L7ftx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L7fuB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L7fuR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7fuh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L7fux6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L7fvB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L7fvR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7fvh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L7fvx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7fwB6SEeCkz5PP4vZT5g" x="409" y="301" width="318" height="383"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3L7fwR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_0AZ9YC-OEdySSa8YESkO2w"/>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3L7fwh6SEeCkz5PP4vZT5g" width="305" height="1009"/>
+ <notation:Location xmi:id="_3L7fwx6SEeCkz5PP4vZT5g" x="34" y="29"/>
+ <notation:Size xmi:id="_3L7fxB6SEeCkz5PP4vZT5g" width="316" height="184"/>
+ <notation:Location xmi:id="_3L7fxR6SEeCkz5PP4vZT5g" x="407" y="67"/>
+ <notation:Size xmi:id="_3L7fxh6SEeCkz5PP4vZT5g" width="318" height="383"/>
+ <notation:Location xmi:id="_3L7fxx6SEeCkz5PP4vZT5g" x="409" y="301"/>
+ <notation:Diagram xmi:id="_3L7fyB6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Communication classes : structural relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3L7fyR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L7fyh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L7fyx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L7fzB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L7fzR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L7fzh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L7fzx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L7f0B6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L7f0R6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L7f0h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L7f0x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7f1B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L7f1R6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L7f1h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L7f1x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7f2B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L7f2R6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L7f2h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L7f2x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7f3B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L7f3R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_LbxUEDRPEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7f3h6SEeCkz5PP4vZT5g" x="124" y="21" width="177" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L7f3x6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L7f4B6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L7f4R6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L7f4h6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L7f4x6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L7f5B6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L7f5R6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L7f5h6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L7f5x6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L7f6B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L7f6R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7f6h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L7f6x6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L7f7B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L7f7R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7f7h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L7f7x6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L7f8B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L7f8R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L7f8h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L8GwB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_M5gBkFCDEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8GwR6SEeCkz5PP4vZT5g" x="486" y="198" width="162" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L8Gwh6SEeCkz5PP4vZT5g" type="2010" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8Gwx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8GxB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8GxR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8Gxh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8Gxx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8GyB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L8GyR6SEeCkz5PP4vZT5g" type="5035"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8Gyh6SEeCkz5PP4vZT5g" type="7020">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8Gyx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8GzB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8GzR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8Gzh6SEeCkz5PP4vZT5g" type="7021">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8Gzx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8G0B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G0R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <element xmi:type="uml:DataType" href="osal.uml#_ZiVqMFCrEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G0h6SEeCkz5PP4vZT5g" x="46" y="340" width="181" height="96"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L8G0x6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8G1B6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8G1R6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8G1h6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8G1x6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8G2B6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8G2R6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L8G2h6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8G2x6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8G3B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8G3R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G3h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8G3x6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8G4B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8G4R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G4h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8G4x6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8G5B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8G5R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G5h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L8G5x6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_N361AFCsEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G6B6SEeCkz5PP4vZT5g" x="121" y="186" width="183" height="103"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L8G6R6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8G6h6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8G6x6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8G7B6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8G7R6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8G7h6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8G7x6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L8G8B6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8G8R6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8G8h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8G8x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G9B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8G9R6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8G9h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8G9x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G-B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8G-R6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8G-h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8G-x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G_B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L8G_R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sq-yMFCvEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8G_h6SEeCkz5PP4vZT5g" x="342" y="342" width="117" height="100"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3L8G_x6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_mU3acC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3L8HAB6SEeCkz5PP4vZT5g" type="4002" source="_3L8G0x6SEeCkz5PP4vZT5g" target="_3L7fyR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L8HAR6SEeCkz5PP4vZT5g" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L8HAh6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L8HAx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Generalization" href="osal.uml#_TmRe8FCsEdyqzLG48ixyqA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L8t0B6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L8t0R6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L8t0h6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3L8t0x6SEeCkz5PP4vZT5g" width="177" height="100"/>
+ <notation:Location xmi:id="_3L8t1B6SEeCkz5PP4vZT5g" x="124" y="21"/>
+ <notation:Size xmi:id="_3L8t1R6SEeCkz5PP4vZT5g" width="162" height="100"/>
+ <notation:Location xmi:id="_3L8t1h6SEeCkz5PP4vZT5g" x="714" y="165"/>
+ <notation:Size xmi:id="_3L8t1x6SEeCkz5PP4vZT5g" width="181" height="96"/>
+ <notation:Location xmi:id="_3L8t2B6SEeCkz5PP4vZT5g" x="46" y="340"/>
+ <notation:Size xmi:id="_3L8t2R6SEeCkz5PP4vZT5g" width="183" height="103"/>
+ <notation:Location xmi:id="_3L8t2h6SEeCkz5PP4vZT5g" x="121" y="186"/>
+ <notation:Size xmi:id="_3L8t2x6SEeCkz5PP4vZT5g" width="117" height="100"/>
+ <notation:Location xmi:id="_3L8t3B6SEeCkz5PP4vZT5g" x="544" y="471"/>
+ <notation:Diagram xmi:id="_3L8t3R6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="sets classes: structural relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3L8t3h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8t3x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8t4B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8t4R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8t4h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8t4x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8t5B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L8t5R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8t5h6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8t5x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8t6B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8t6R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8t6h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8t6x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8t7B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8t7R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8t7h6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8t7x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8t8B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8t8R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L8t8h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_xxCKcDUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8t8x6SEeCkz5PP4vZT5g" x="179" y="30" width="100" height="274"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L8t9B6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8t9R6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8t9h6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8t9x6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8t-B6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L8t-R6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L8t-h6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L8t-x6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8t_B6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8t_R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8t_h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8t_x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8uAB6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8uAR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8uAh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8uAx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L8uBB6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L8uBR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L8uBh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L8uBx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L8uCB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_y68Y0DUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9U4B6SEeCkz5PP4vZT5g" x="177" y="679" width="174" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L9U4R6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9U4h6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9U4x6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9U5B6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9U5R6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9U5h6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9U5x6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L9U6B6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L9U6R6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L9U6h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L9U6x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9U7B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L9U7R6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L9U7h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L9U7x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9U8B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L9U8R6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L9U8h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L9U8x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9U9B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L9U9R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_2bXLkDUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9U9h6SEeCkz5PP4vZT5g" x="714" y="680" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L9U9x6SEeCkz5PP4vZT5g" type="3015" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9U-B6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9U-R6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9U-h6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9U-x6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9U_B6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9U_R6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L9U_h6SEeCkz5PP4vZT5g" type="7014">
+ <children xmi:type="notation:Shape" xmi:id="_3L9U_x6SEeCkz5PP4vZT5g" type="3031">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="osal.uml#_Vvc5kDUvEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L9VAB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L9VAR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L9VAh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9VAx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <element xmi:type="uml:RedefinableTemplateSignature" href="osal.uml#_RKC0sDUvEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9VBB6SEeCkz5PP4vZT5g" x="254" y="10" width="119" height="35"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L9VBR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9VBh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9VBx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9VCB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9VCR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9VCh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9VCx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L9VDB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L9VDR6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L9VDh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L9VDx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9VEB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L9VER6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L9VEh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L9VEx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9VFB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L9VFR6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L9VFh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L9VFx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9VGB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L9VGR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_zOJVcDaeEdyC6dXxO2UOEQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9VGh6SEeCkz5PP4vZT5g" x="536" y="37" width="169" height="270"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L9VGx6SEeCkz5PP4vZT5g" type="3015" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9VHB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9VHR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9VHh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9VHx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L9VIB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L9VIR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L9VIh6SEeCkz5PP4vZT5g" type="7014">
+ <children xmi:type="notation:Shape" xmi:id="_3L9VIx6SEeCkz5PP4vZT5g" type="3031">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="osal.uml#_4MoGADa8Edy_E4ZljVbr-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L9VJB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L9VJR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L9VJh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L9VJx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <element xmi:type="uml:RedefinableTemplateSignature" href="osal.uml#_wxa4sDa8Edy_E4ZljVbr-g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L978B6SEeCkz5PP4vZT5g" x="789" y="644" width="83" height="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L978R6SEeCkz5PP4vZT5g" type="3015" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L978h6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L978x6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L979B6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L979R6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L979h6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L979x6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L97-B6SEeCkz5PP4vZT5g" type="7014">
+ <children xmi:type="notation:Shape" xmi:id="_3L97-R6SEeCkz5PP4vZT5g" type="3031">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="osal.uml#_pjE_sDbdEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L97-h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L97-x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L97_B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L97_R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <element xmi:type="uml:RedefinableTemplateSignature" href="osal.uml#_mgxFQDbdEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L97_h6SEeCkz5PP4vZT5g" x="326" y="635" width="165" height="59"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3L97_x6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_q6QRMC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3L98AB6SEeCkz5PP4vZT5g" type="4001" source="_3L8t3h6SEeCkz5PP4vZT5g" target="_3L9VBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98AR6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L98Ah6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98Ax6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L98BB6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98BR6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L98Bh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L98Bx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L98CB6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98CR6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L98Ch6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L98Cx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L98DB6SEeCkz5PP4vZT5g" x="-31" y="12"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98DR6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98Dh6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L98Dx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_yZpCcDa2Edyv9PRkTrTu0A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L98EB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L98ER6SEeCkz5PP4vZT5g" id="(0.91,0.5985401459854015)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L98Eh6SEeCkz5PP4vZT5g" id="(0.05917159763313609,0.5777777777777777)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3L98Ex6SEeCkz5PP4vZT5g" type="4001" source="_3L8t3h6SEeCkz5PP4vZT5g" target="_3L9VBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98FB6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L98FR6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98Fh6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L98Fx6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98GB6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L98GR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L98Gh6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L98Gx6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98HB6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L98HR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L98Hh6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L98Hx6SEeCkz5PP4vZT5g" x="-25" y="10"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98IB6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98IR6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L98Ih6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_0wmSwDa2Edyv9PRkTrTu0A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L98Ix6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L98JB6SEeCkz5PP4vZT5g" id="(0.83,0.7372262773722628)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L98JR6SEeCkz5PP4vZT5g" id="(0.04142011834319527,0.7111111111111111)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3L98Jh6SEeCkz5PP4vZT5g" type="4001" source="_3L8t3h6SEeCkz5PP4vZT5g" target="_3L9VBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L98Jx6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jAB6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jAR6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jAh6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jAx6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L-jBB6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L-jBR6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jBh6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jBx6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L-jCB6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L-jCR6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jCh6SEeCkz5PP4vZT5g" x="-4" y="-7"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jCx6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jDB6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L-jDR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_1ZuIQDa2Edyv9PRkTrTu0A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L-jDh6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L-jDx6SEeCkz5PP4vZT5g" id="(0.91,0.34306569343065696)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L-jEB6SEeCkz5PP4vZT5g" id="(0.05917159763313609,0.3148148148148148)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3L-jER6SEeCkz5PP4vZT5g" type="4001" source="_3L8t3h6SEeCkz5PP4vZT5g" target="_3L9VBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jEh6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jEx6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jFB6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jFR6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jFh6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L-jFx6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L-jGB6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jGR6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jGh6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L-jGx6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L-jHB6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jHR6SEeCkz5PP4vZT5g" x="-35" y="14"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jHh6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jHx6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L-jIB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_2AnwMDa2Edyv9PRkTrTu0A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L-jIR6SEeCkz5PP4vZT5g" points="[1, -2, -274, 0]$[258, -2, -17, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L-jIh6SEeCkz5PP4vZT5g" id="(0.99,0.8576642335766423)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L-jIx6SEeCkz5PP4vZT5g" id="(0.10059171597633136,0.837037037037037)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3L-jJB6SEeCkz5PP4vZT5g" type="4001" source="_3L8t3h6SEeCkz5PP4vZT5g" target="_3L9VBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jJR6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jJh6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jJx6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jKB6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jKR6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L-jKh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L-jKx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jLB6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jLR6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L-jLh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L-jLx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jMB6SEeCkz5PP4vZT5g" x="-27" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jMR6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jMh6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L-jMx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_3cG2wDa2Edyv9PRkTrTu0A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L-jNB6SEeCkz5PP4vZT5g" points="[4, 1, -261, 0]$[261, 1, -4, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L-jNR6SEeCkz5PP4vZT5g" id="(0.96,0.44525547445255476)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L-jNh6SEeCkz5PP4vZT5g" id="(0.023668639053254437,0.42962962962962964)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3L-jNx6SEeCkz5PP4vZT5g" type="4001" source="_3L8t3h6SEeCkz5PP4vZT5g" target="_3L9VBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jOB6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jOR6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jOh6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jOx6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jPB6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L-jPR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L-jPh6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L-jPx6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L-jQB6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L-jQR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_KEB6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KER6SEeCkz5PP4vZT5g" x="-21" y="-21"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KEh6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KEx6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L_KFB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_8nOQwDa2Edyv9PRkTrTu0A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L_KFR6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L_KFh6SEeCkz5PP4vZT5g" id="(0.94,0.19343065693430658)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L_KFx6SEeCkz5PP4vZT5g" id="(0.11242603550295859,0.16666666666666666)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3L_KGB6SEeCkz5PP4vZT5g" type="4001" source="_3L9VBR6SEeCkz5PP4vZT5g" target="_3L9VBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KGR6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KGh6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KGx6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KHB6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KHR6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L_KHh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_KHx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KIB6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KIR6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L_KIh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_KIx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KJB6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KJR6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KJh6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3L_KJx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_JPxawDa5Edyv9PRkTrTu0A"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3L_KKB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L_KKR6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3L_KKh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3L_KKx6SEeCkz5PP4vZT5g" width="100" height="274"/>
+ <notation:Location xmi:id="_3L_KLB6SEeCkz5PP4vZT5g" x="179" y="30"/>
+ <notation:Size xmi:id="_3L_KLR6SEeCkz5PP4vZT5g" width="174" height="100"/>
+ <notation:Location xmi:id="_3L_KLh6SEeCkz5PP4vZT5g" x="177" y="679"/>
+ <notation:Location xmi:id="_3L_KLx6SEeCkz5PP4vZT5g" x="714" y="680"/>
+ <notation:Size xmi:id="_3L_KMB6SEeCkz5PP4vZT5g" width="119" height="35"/>
+ <notation:Location xmi:id="_3L_KMR6SEeCkz5PP4vZT5g" x="254" y="10"/>
+ <notation:Size xmi:id="_3L_KMh6SEeCkz5PP4vZT5g" width="169" height="270"/>
+ <notation:Location xmi:id="_3L_KMx6SEeCkz5PP4vZT5g" x="536" y="37"/>
+ <notation:Size xmi:id="_3L_KNB6SEeCkz5PP4vZT5g" width="83" height="51"/>
+ <notation:Location xmi:id="_3L_KNR6SEeCkz5PP4vZT5g" x="789" y="644"/>
+ <notation:Size xmi:id="_3L_KNh6SEeCkz5PP4vZT5g" width="165" height="59"/>
+ <notation:Location xmi:id="_3L_KNx6SEeCkz5PP4vZT5g" x="326" y="635"/>
+ <notation:Diagram xmi:id="_3L_KOB6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="set classes: details" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3L_KOR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L_KOh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_KOx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L_KPB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_KPR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L_KPh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_KPx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_KQB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L_KQR6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L_KQh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L_KQx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L_KRB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L_KRR6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3L_KRh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTGWYFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg9MMVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_ky3HADUyEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KRx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_KSB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTGWYlkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg9zQFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_9DJbEDUyEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KSR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_KSh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTG9cVkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg-aUFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_-f1bgDUyEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KSx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_KTB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ApOw8DUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KTR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_KTh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_CTesQDUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KTx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_KUB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_DrscYDUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_KUR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_KUh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_E8J-sDUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xIB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xIR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XePYQFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XjS3YFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_GN0a4DUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xIh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xIx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTHkgFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg-aUVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_HjplYDUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xJB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xJR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTHkglkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg_BYFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_I_JTADUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xJh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xJx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_KWxNQDUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xKB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xKR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_MPd0QDUzEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xKh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xKx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTCE8FkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg6I4FkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Am2XwDamEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xLB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xLR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTDTEFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg6I4VkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_gDSwgDamEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xLh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xLx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTDTElkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg6v8FkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_2-Vv8DamEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xMB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xMR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_InFS0DaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xMh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xMx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTD6IVkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg6v8VkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Kzm0wDaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xNB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xNR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Mh4UcDaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xNh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xNx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTEhMFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg7XAFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_NLvw0DaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xOB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xOR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ORpB4DaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xOh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xOx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTEhMlkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg7-EFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_QxrVsDaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xPB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xPR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_SaIhQDaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xPh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xPx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTFIQFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg7-EVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_ToX2ADaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xQB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xQR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_WklIcDaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xQh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xQx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTFIQlkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg8lIFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_YZZ8EDaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xRB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xRR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_aO0lkDaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xRh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xRx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTFvUFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg8lIVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_ddN0MDaoEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xSB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xSR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTFvUlkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg9MMFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_lrJPMDa5Edyv9PRkTrTu0A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3L_xSh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L_xSx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L_xTB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L_xTR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L_xTh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3L_xTx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3L_xUB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L_xUR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3L_xUh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_xxCKcDUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3L_xUx6SEeCkz5PP4vZT5g" x="27" y="36" width="370" height="442"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3L_xVB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L_xVR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_xVh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L_xVx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_xWB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3L_xWR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3L_xWh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3L_xWx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3L_xXB6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3L_xXR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_VurNcDajEdyC6dXxO2UOEQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYMB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MAYMR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MAYMh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MAYMx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MAYNB6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MAYNR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTLO4VkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhCrwFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_ftqi8DafEdyC6dXxO2UOEQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYNh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYNx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTL18FkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhCrwVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_A4X0UDagEdyC6dXxO2UOEQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYOB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYOR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Z_TnEDahEdyC6dXxO2UOEQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYOh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYOx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTL18lkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhDS0FkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_-xPoYDaiEdyC6dXxO2UOEQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYPB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYPR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTKn0FkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhCEsFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_a-g58DakEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYPh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYPx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTKn0lkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhCEsVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_5hcQwDakEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYQB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MAYQR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MAYQh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MAYQx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MAYRB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MAYRR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MAYRh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MAYRx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MAYSB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_zOJVcDaeEdyC6dXxO2UOEQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MAYSR6SEeCkz5PP4vZT5g" x="452" y="35" width="287" height="178"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYSh6SEeCkz5PP4vZT5g" type="2012" fillColor="16634574" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MAYSx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MAYTB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MAYTR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MAYTh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MAYTx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MAYUB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MAYUR6SEeCkz5PP4vZT5g" type="5038"/>
+ <element xmi:type="uml:Comment" href="osal.uml#_S5s5gDalEdyMZ7r5-upW2A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MAYUh6SEeCkz5PP4vZT5g" x="810" y="108" width="151" height="105"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYUx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MAYVB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MAYVR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MAYVh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MAYVx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MAYWB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MAYWR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MAYWh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MAYWx6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MAYXB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_QYjFMDbCEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYXR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYXh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_QcH9oDbCEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYXx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYYB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_QfZ7IDbCEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYYR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYYh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_QiiHoDbCEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYYx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MAYZB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MAYZR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MAYZh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MAYZx6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MAYaB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTILkFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg_BYVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_rnk_IDa-Edy_E4ZljVbr-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYaR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYah6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_-M24MDa-Edy_E4ZljVbr-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MAYax6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MAYbB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Q1uQwDa_Edy_E4ZljVbr-g"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_QB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_QR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTILklkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vg_ocFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_sUiWUDa_Edy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_Qh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_Qx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTIyoFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhAPgFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_DQoeoDbAEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_RB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_RR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTIyolkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhAPgVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_b589wDbAEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_Rh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_Rx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTJZsVkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhA2kFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_wQyUADbAEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_SB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_SR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTKAwFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhA2kVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Ch8-QDbBEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_Sh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_Sx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTKAwlkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhBdoFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_kEzC0DbBEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_TB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_TR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VTMdAFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VhD54FkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_q4yCoDbCEdy0gLsbEakL5w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_Th6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MA_Tx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MA_UB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MA_UR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MA_Uh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MA_Ux6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MA_VB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MA_VR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MA_Vh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_2bXLkDUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MA_Vx6SEeCkz5PP4vZT5g" x="452" y="269" width="368" height="254"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_WB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MA_WR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MA_Wh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MA_Wx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MA_XB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MA_XR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MA_Xh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MA_Xx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MA_YB6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MA_YR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_IPWqUDbfEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_Yh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_Yx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_ISLU0DbfEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_ZB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_ZR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_IVAmYDbfEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_Zh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MA_Zx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MA_aB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MA_aR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MA_ah6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MA_ax6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_C1-AQDbeEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_bB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_bR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aIFvYFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_atQ5AFkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_K37EgDbeEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_bh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_bx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aIG9gFkTEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_atQ5AVkTEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_XikLIDbeEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_cB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_cR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_p1ESIDbeEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_ch6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MA_cx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_795fwDbeEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MA_dB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MA_dR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MA_dh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MA_dx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MA_eB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MA_eR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MA_eh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MA_ex6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MA_fB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_y68Y0DUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MBmUB6SEeCkz5PP4vZT5g" x="27" y="495" width="370" height="154"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MBmUR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_q6QRMC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MBmUh6SEeCkz5PP4vZT5g" type="4013" source="_3MAYSh6SEeCkz5PP4vZT5g" target="_3L_xVB6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MBmUx6SEeCkz5PP4vZT5g"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MBmVB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MBmVR6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MBmVh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MBmVx6SEeCkz5PP4vZT5g" width="369" height="505"/>
+ <notation:Location xmi:id="_3MBmWB6SEeCkz5PP4vZT5g" x="18" y="38"/>
+ <notation:Size xmi:id="_3MBmWR6SEeCkz5PP4vZT5g" width="287" height="178"/>
+ <notation:Location xmi:id="_3MBmWh6SEeCkz5PP4vZT5g" x="480" y="61"/>
+ <notation:Size xmi:id="_3MBmWx6SEeCkz5PP4vZT5g" width="151" height="105"/>
+ <notation:Location xmi:id="_3MBmXB6SEeCkz5PP4vZT5g" x="925" y="181"/>
+ <notation:Size xmi:id="_3MBmXR6SEeCkz5PP4vZT5g" width="373" height="275"/>
+ <notation:Location xmi:id="_3MBmXh6SEeCkz5PP4vZT5g" x="479" y="261"/>
+ <notation:Size xmi:id="_3MBmXx6SEeCkz5PP4vZT5g" width="325" height="179"/>
+ <notation:Location xmi:id="_3MBmYB6SEeCkz5PP4vZT5g" x="479" y="758"/>
+ <notation:Diagram xmi:id="_3MBmYR6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="util classes: include relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MBmYh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MBmYx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MBmZB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MBmZR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MBmZh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MBmZx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MBmaB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MBmaR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MBmah6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MBmax6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MBmbB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MBmbR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MBmbh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MBmbx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MBmcB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MBmcR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MBmch6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MBmcx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MBmdB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MBmdR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MBmdh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MBmdx6SEeCkz5PP4vZT5g" x="468" y="189" width="307" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MCNcx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNdB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNdR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNdh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNdx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNeB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNeR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MCNeh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MCNex6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MCNfB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MCNfR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNfh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MCNfx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MCNgB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MCNgR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNgh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MCNgx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MCNhB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MCNhR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNhh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MCNhx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_W-ZGIDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNiB6SEeCkz5PP4vZT5g" x="468" y="90" width="307" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MCNiR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNih6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNix6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNjB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNjR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNjh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNjx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MCNkB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MCNkR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MCNkh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MCNkx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNlB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MCNlR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MCNlh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MCNlx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNmB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MCNmR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MCNmh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MCNmx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNnB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MCNnR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNnh6SEeCkz5PP4vZT5g" x="18" y="117" width="379" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MCNnx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNoB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNoR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNoh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNox6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MCNpB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MCNpR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MCNph6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MCNpx6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MCNqB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MCNqR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNqh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MCNqx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MCNrB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MCNrR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MCNrh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0cB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0cR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0ch6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0cx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MC0dB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0dR6SEeCkz5PP4vZT5g" x="18" y="252" width="82" height="54"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MC0dh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0dx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0eB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0eR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0eh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0ex6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0fB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MC0fR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0fh6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0fx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0gB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0gR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0gh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0gx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0hB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0hR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0hh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0hx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0iB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0iR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MC0ih6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1vnXoDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0ix6SEeCkz5PP4vZT5g" x="216" y="252" width="82" height="54"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MC0jB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0jR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0jh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0jx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0kB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0kR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0kh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MC0kx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0lB6SEeCkz5PP4vZT5g" visible="false" type="7017" collapsed="true">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0lR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0lh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0lx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0mB6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0mR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0mh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0mx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0nB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0nR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0nh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0nx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MC0oB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_3W43cDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0oR6SEeCkz5PP4vZT5g" x="315" y="252" width="82" height="54"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MC0oh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0ox6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0pB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0pR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0ph6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0px6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0qB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MC0qR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0qh6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0qx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0rB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0rR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0rh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0rx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0sB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0sR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0sh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MC0sx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MC0tB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0tR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MC0th6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_0AwCEDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MC0tx6SEeCkz5PP4vZT5g" x="117" y="252" width="82" height="54"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MC0uB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0uR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0uh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0ux6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0vB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MC0vR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MC0vh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MC0vx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MC0wB6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDbgB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDbgR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbgh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MDbgx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDbhB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDbhR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbhh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MDbhx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDbiB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDbiR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbih6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MDbix6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1DM54DxBEdyfAeav5abbAw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbjB6SEeCkz5PP4vZT5g" x="468" y="279" width="91" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MDbjR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MDbjh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MDbjx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MDbkB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MDbkR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MDbkh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MDbkx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MDblB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MDblR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDblh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDblx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbmB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MDbmR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDbmh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDbmx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbnB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MDbnR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDbnh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDbnx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDboB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MDboR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDboh6SEeCkz5PP4vZT5g" x="576" y="279" width="91" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MDbox6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MDbpB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MDbpR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MDbph6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MDbpx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MDbqB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MDbqR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MDbqh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MDbqx6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDbrB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDbrR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbrh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MDbrx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDbsB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDbsR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbsh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MDbsx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MDbtB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MDbtR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbth6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MDbtx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_FuKEEDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MDbuB6SEeCkz5PP4vZT5g" x="684" y="279" width="91" height="37"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MDbuR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_0AZ9YC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MDbvx6SEeCkz5PP4vZT5g" type="4008" source="_3MCNiR6SEeCkz5PP4vZT5g" target="_3MCNnx6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MDbwB6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MDbwR6SEeCkz5PP4vZT5g" x="-26" y="66"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MDbwh6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MDbwx6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MDbxB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_dQB60DVKEdyF2KWMAqLQBg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MDbxR6SEeCkz5PP4vZT5g" points="[-50, -3, 139, 131]$[-169, -10, 20, 124]$[-185, -106, 4, 28]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MDbxh6SEeCkz5PP4vZT5g" id="(0.14054054054054055,0.8043478260869565)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MDbxx6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MECkB6SEeCkz5PP4vZT5g" type="4008" source="_3MCNiR6SEeCkz5PP4vZT5g" target="_3MC0dh6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECkR6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECkh6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECkx6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MEClB6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MEClR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_d01RADVKEdyF2KWMAqLQBg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MEClh6SEeCkz5PP4vZT5g" points="[4, 7, 8, -116]$[4, 96, 8, -27]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MEClx6SEeCkz5PP4vZT5g" id="(0.6351351351351351,0.8913043478260869)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECmB6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MECmR6SEeCkz5PP4vZT5g" type="4008" source="_3MCNiR6SEeCkz5PP4vZT5g" target="_3MC0jB6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECmh6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECmx6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECnB6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECnR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MECnh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_eJ_osDVKEdyF2KWMAqLQBg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MECnx6SEeCkz5PP4vZT5g" points="[5, 4, 4, -170]$[5, 147, 4, -27]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECoB6SEeCkz5PP4vZT5g" id="(0.9108108108108108,0.9130434782608695)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECoR6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MECoh6SEeCkz5PP4vZT5g" type="4008" source="_3MBmYh6SEeCkz5PP4vZT5g" target="_3MC0uB6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECox6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECpB6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECpR6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECph6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MECpx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_Ie1FEFbIEd-9TNLvplUFDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MECqB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECqR6SEeCkz5PP4vZT5g" id="(0.16286644951140064,0.87)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECqh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MECqx6SEeCkz5PP4vZT5g" type="4008" source="_3MBmYh6SEeCkz5PP4vZT5g" target="_3MDbjR6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECrB6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECrR6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECrh6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECrx6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MECsB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Usage" href="osal.uml#_WP12gFbLEd-9TNLvplUFDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MECsR6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECsh6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECsx6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MECtB6SEeCkz5PP4vZT5g" type="4008" source="_3MBmYh6SEeCkz5PP4vZT5g" target="_3MDbox6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECtR6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECth6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MECtx6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MECuB6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MECuR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Usage" href="osal.uml#_aZ7RUFbLEd-9TNLvplUFDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MECuh6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECux6SEeCkz5PP4vZT5g" id="(0.8306188925081434,0.93)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MECvB6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_8oV3YFkTEeKyM9oNj0qhEg" type="4002" source="_3MCNcx6SEeCkz5PP4vZT5g" target="_3MBmYh6SEeCkz5PP4vZT5g" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B90HQFkUEeKyM9oNj0qhEg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B90HQVkUEeKyM9oNj0qhEg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B90HQlkUEeKyM9oNj0qhEg" key="StereotypeList" value="Cpp::CppVisibility"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B90HQ1kUEeKyM9oNj0qhEg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B90HRFkUEeKyM9oNj0qhEg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B90uUFkUEeKyM9oNj0qhEg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8oXFgFkTEeKyM9oNj0qhEg" type="6007">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__km0MFkTEeKyM9oNj0qhEg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AV68YFkUEeKyM9oNj0qhEg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AV68YVkUEeKyM9oNj0qhEg" key="StereotypeList" value="Cpp::CppVisibility"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AV68YlkUEeKyM9oNj0qhEg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AV68Y1kUEeKyM9oNj0qhEg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AV68ZFkUEeKyM9oNj0qhEg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8oXFgVkTEeKyM9oNj0qhEg" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_8oV3YVkTEeKyM9oNj0qhEg" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="osal.uml#_ZFUrgDO2EdyG-pUz-bb-Lg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8oV3YlkTEeKyM9oNj0qhEg" points="[50, 0, -103, 0]$[79, 0, -74, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6ydeYFkUEeKyM9oNj0qhEg" id="(0.5211726384364821,0.06)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MECvR6SEeCkz5PP4vZT5g" width="148" height="100"/>
+ <notation:Location xmi:id="_3MECvh6SEeCkz5PP4vZT5g" x="641" y="536"/>
+ <notation:Size xmi:id="_3MECvx6SEeCkz5PP4vZT5g" width="148" height="93"/>
+ <notation:Location xmi:id="_3MECwB6SEeCkz5PP4vZT5g" x="554" y="351"/>
+ <notation:Size xmi:id="_3MECwR6SEeCkz5PP4vZT5g" width="152" height="100"/>
+ <notation:Location xmi:id="_3MECwh6SEeCkz5PP4vZT5g" x="396" y="68"/>
+ <notation:Location xmi:id="_3MECwx6SEeCkz5PP4vZT5g" x="512" y="536"/>
+ <notation:Location xmi:id="_3MECxB6SEeCkz5PP4vZT5g" x="389" y="536"/>
+ <notation:Size xmi:id="_3MECxR6SEeCkz5PP4vZT5g" width="100" height="55"/>
+ <notation:Location xmi:id="_3MEpoB6SEeCkz5PP4vZT5g" x="200" y="425"/>
+ <notation:Size xmi:id="_3MEpoR6SEeCkz5PP4vZT5g" width="100" height="57"/>
+ <notation:Location xmi:id="_3MEpoh6SEeCkz5PP4vZT5g" x="200" y="355"/>
+ <notation:Size xmi:id="_3MEpox6SEeCkz5PP4vZT5g" width="100" height="54"/>
+ <notation:Location xmi:id="_3MEppB6SEeCkz5PP4vZT5g" x="202" y="228"/>
+ <notation:Location xmi:id="_3MEppR6SEeCkz5PP4vZT5g" x="201" y="291"/>
+ <notation:Location xmi:id="_3MEpph6SEeCkz5PP4vZT5g" x="741" y="351"/>
+ <notation:Location xmi:id="_3MEppx6SEeCkz5PP4vZT5g" x="842" y="462"/>
+ <notation:Location xmi:id="_3MEpqB6SEeCkz5PP4vZT5g" x="869" y="586"/>
+ <notation:Diagram xmi:id="_3MEpqR6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Class diagram of OS_AL" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MEpwB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Model" href="osal.uml#_ROTQYC-OEdySSa8YESkO2w"/>
+ </notation:Diagram>
+ <notation:Location xmi:id="_3MEpwR6SEeCkz5PP4vZT5g" x="192" y="191"/>
+ <notation:Diagram xmi:id="_3MEpwh6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="set classes: include relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MEpwx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MEpxB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MEpxR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MEpxh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MEpxx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MEpyB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MEpyR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MEpyh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MEpyx6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MEpzB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MEpzR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MEpzh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MEpzx6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MEp0B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MEp0R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MEp0h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MEp0x6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MEp1B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MEp1R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MEp1h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MEp1x6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_xxCKcDUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MEp2B6SEeCkz5PP4vZT5g" x="78" y="78" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MFQvB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQvR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQvh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQvx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQwB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQwR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQwh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MFQwx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MFQxB6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MFQxR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MFQxh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQxx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MFQyB6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MFQyR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MFQyh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQyx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MFQzB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MFQzR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MFQzh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQzx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MFQ0B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_2bXLkDUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQ0R6SEeCkz5PP4vZT5g" x="261" y="77" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MFQ0h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQ0x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQ1B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQ1R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQ1h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQ1x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQ2B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MFQ2R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MFQ2h6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MFQ2x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MFQ3B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQ3R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MFQ3h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MFQ3x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MFQ4B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQ4R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MFQ4h6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MFQ4x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MFQ5B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQ5R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MFQ5h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_y68Y0DUuEdyDReAOQiyvOg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQ5x6SEeCkz5PP4vZT5g" x="419" y="76" width="100" height="100"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MFQ6B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_q6QRMC-OEdySSa8YESkO2w"/>
+ </notation:Diagram>
+ <notation:Location xmi:id="_3MFQ6R6SEeCkz5PP4vZT5g" x="316" y="423"/>
+ <notation:Location xmi:id="_3MFQ6h6SEeCkz5PP4vZT5g" x="216" y="80"/>
+ <notation:Location xmi:id="_3MFQ6x6SEeCkz5PP4vZT5g" x="499" y="422"/>
+ <notation:Location xmi:id="_3MFQ7B6SEeCkz5PP4vZT5g" x="657" y="421"/>
+ <notation:Diagram xmi:id="_3MFQ7R6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="ProcessingResources classes : Structural relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MFQ7h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQ7x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQ8B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQ8R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQ8h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MFQ8x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MFQ9B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MFQ9R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MFQ9h6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MFQ9x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MFQ-B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQ-R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MFQ-h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MFQ-x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MFQ_B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MFQ_R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF3wB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF3wR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF3wh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF3wx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MF3xB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF3xR6SEeCkz5PP4vZT5g" x="324" y="45" width="125" height="84"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MF3xh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF3xx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF3yB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF3yR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF3yh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF3yx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF3zB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MF3zR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF3zh6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF3zx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF30B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF30R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF30h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF30x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF31B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF31R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF31h6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF31x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF32B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF32R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MF32h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Saw1YDkDEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF32x6SEeCkz5PP4vZT5g" x="27" y="45" width="145" height="88"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MF33B6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF33R6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF33h6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF33x6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF34B6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF34R6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF34h6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MF34x6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF35B6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF35R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF35h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF35x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF36B6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF36R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF36h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF36x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF37B6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF37R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF37h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF37x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MF38B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_oSgIME_BEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF38R6SEeCkz5PP4vZT5g" x="182" y="195" width="297" height="58"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MF38h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF38x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF39B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF39R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF39h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF39x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF3-B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MF3-R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF3-h6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF3-x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF3_B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF3_R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF3_h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF3_x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF4AB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF4AR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF4Ah6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF4Ax6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF4BB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF4BR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MF4Bh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_TVGDsE_NEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF4Bx6SEeCkz5PP4vZT5g" x="26" y="195" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MF4CB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF4CR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF4Ch6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF4Cx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF4DB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MF4DR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MF4Dh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MF4Dx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF4EB6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF4ER6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF4Eh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF4Ex6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MF4FB6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MF4FR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MF4Fh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MF4Fx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MGe0B6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MGe0R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MGe0h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGe0x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MGe1B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_D8njME_gEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGe1R6SEeCkz5PP4vZT5g" x="603" y="45" width="100" height="87"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MGe1h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGe1x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGe2B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGe2R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGe2h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGe2x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGe3B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MGe3R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MGe3h6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MGe3x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MGe4B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGe4R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MGe4h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MGe4x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MGe5B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGe5R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MGe5h6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MGe5x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MGe6B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGe6R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aTOi0FjbEeKWlJhcyT0hJA" visible="false" type="AppliedStereotypeCompartement">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aTOi0VjbEeKWlJhcyT0hJA" showTitle="true"/>
+ <element xmi:type="Cpp:CppInclude" href="osal.uml#_PSuiAE_vEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aTOi0ljbEeKWlJhcyT0hJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Jd8V0FjdEeKWlJhcyT0hJA" type="3015" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Jd9j8FjdEeKWlJhcyT0hJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jd9j8VjdEeKWlJhcyT0hJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Jd9j8ljdEeKWlJhcyT0hJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jd9j81jdEeKWlJhcyT0hJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Jd9j9FjdEeKWlJhcyT0hJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jd9j9VjdEeKWlJhcyT0hJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Jd-LAFjdEeKWlJhcyT0hJA" type="7014">
+ <children xmi:type="notation:Shape" xmi:id="_WZOggFjdEeKWlJhcyT0hJA" type="3031" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="osal.uml#_a5QgQE_vEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WZOggVjdEeKWlJhcyT0hJA" x="26" y="8"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Jd-LAVjdEeKWlJhcyT0hJA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Jd-LAljdEeKWlJhcyT0hJA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Jd-LA1jdEeKWlJhcyT0hJA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jd-LBFjdEeKWlJhcyT0hJA"/>
+ </children>
+ <element xmi:type="uml:RedefinableTemplateSignature" href="osal.uml#_Z03EAE_vEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jd8V0VjdEeKWlJhcyT0hJA" x="121" y="-27" width="61" height="79"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MGe6h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_9-OUUE_uEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGe6x6SEeCkz5PP4vZT5g" x="558" y="207" width="117" height="87"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MGe-h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGe-x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGe_B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGe_R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGe_h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGe_x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGfAB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MGfAR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MGfAh6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MGfAx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MGfBB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGfBR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MGfBh6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MGfBx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MGfCB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGfCR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MGfCh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MGfCx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MGfDB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGfDR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MGfDh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_0AwCEDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MGfDx6SEeCkz5PP4vZT5g" x="182" y="304" width="100" height="48"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MGfEB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGfER6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGfEh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGfEx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGfFB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MGfFR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MGfFh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MGfFx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MGfGB6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHF4B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHF4R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHF4h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHF4x6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHF5B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHF5R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHF5h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHF5x6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHF6B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHF6R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHF6h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MHF6x6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1vnXoDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHF7B6SEeCkz5PP4vZT5g" x="377" y="304" width="100" height="48"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MHF7R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_oT0acC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MHF7h6SEeCkz5PP4vZT5g" type="4001" source="_3MFQ7h6SEeCkz5PP4vZT5g" target="_3MF3xh6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHF7x6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHF8B6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHF8R6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHF8h6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHF8x6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHF9B6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHF9R6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHF9h6SEeCkz5PP4vZT5g" x="8" y="-14"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHF9x6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHF-B6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHF-R6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHF-h6SEeCkz5PP4vZT5g" x="-40" y="19"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHF-x6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHF_B6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MHF_R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_3QgjUE_nEdy2tpS719xBwQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MHF_h6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MHF_x6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MHGAB6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MHGAR6SEeCkz5PP4vZT5g" type="4001" source="_3MFQ7h6SEeCkz5PP4vZT5g" target="_3MF4CB6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHGAh6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHGAx6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHGBB6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHGBR6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHGBh6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHGBx6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHGCB6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHGCR6SEeCkz5PP4vZT5g" x="14" y="-14"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHGCh6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHGCx6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHGDB6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHGDR6SEeCkz5PP4vZT5g" x="-24" y="12"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHGDh6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHGDx6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MHGEB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_LLUE4E_oEdy2tpS719xBwQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MHGER6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MHGEh6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MHGEx6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MHGFB6SEeCkz5PP4vZT5g" type="4008" source="_3MF33B6SEeCkz5PP4vZT5g" target="_3MGe-h6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHGFR6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHGFh6SEeCkz5PP4vZT5g" x="1" y="-63"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHGFx6SEeCkz5PP4vZT5g" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHGGB6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MHGGR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Usage" href="osal.uml#_BARjMFnFEd-9TNLvplUFDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MHGGh6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MHGGx6SEeCkz5PP4vZT5g" id="(0.18518518518518517,0.8103448275862069)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MHs8B6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MHs8R6SEeCkz5PP4vZT5g" type="4008" source="_3MF33B6SEeCkz5PP4vZT5g" target="_3MGfEB6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHs8h6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHs8x6SEeCkz5PP4vZT5g" x="1" y="-25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHs9B6SEeCkz5PP4vZT5g" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MHs9R6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MHs9h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Usage" href="osal.uml#_HQSIsFnFEd-9TNLvplUFDQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MHs9x6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MHs-B6SEeCkz5PP4vZT5g" id="(0.7946127946127947,0.8275862068965517)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MHs-R6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MHs-h6SEeCkz5PP4vZT5g" width="134" height="100"/>
+ <notation:Location xmi:id="_3MHs-x6SEeCkz5PP4vZT5g" x="578" y="110"/>
+ <notation:Size xmi:id="_3MHs_B6SEeCkz5PP4vZT5g" width="178" height="88"/>
+ <notation:Location xmi:id="_3MHs_R6SEeCkz5PP4vZT5g" x="265" y="111"/>
+ <notation:Location xmi:id="_3MHs_h6SEeCkz5PP4vZT5g" x="496" y="268"/>
+ <notation:Location xmi:id="_3MHs_x6SEeCkz5PP4vZT5g" x="118" y="400"/>
+ <notation:Location xmi:id="_3MHtAB6SEeCkz5PP4vZT5g" x="836" y="107"/>
+ <notation:Size xmi:id="_3MHtAR6SEeCkz5PP4vZT5g" width="132" height="100"/>
+ <notation:Location xmi:id="_3MHtAh6SEeCkz5PP4vZT5g" x="657" y="269"/>
+ <notation:Size xmi:id="_3MHtAx6SEeCkz5PP4vZT5g" width="113" height="32"/>
+ <notation:Location xmi:id="_3MHtBB6SEeCkz5PP4vZT5g" x="777" y="246"/>
+ <notation:Size xmi:id="_3MHtBR6SEeCkz5PP4vZT5g" width="100" height="53"/>
+ <notation:Location xmi:id="_3MHtBh6SEeCkz5PP4vZT5g" x="227" y="267"/>
+ <notation:Size xmi:id="_3MHtBx6SEeCkz5PP4vZT5g" width="100" height="56"/>
+ <notation:Location xmi:id="_3MHtCB6SEeCkz5PP4vZT5g" x="227" y="341"/>
+ <notation:Diagram xmi:id="_3MHtCR6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="time classes: structural relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MHtCh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtCx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtDB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtDR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtDh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtDx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtEB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHtER6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHtEh6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHtEx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHtFB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtFR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHtFh6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHtFx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHtGB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtGR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHtGh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHtGx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHtHB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtHR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MHtHh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_BN92YDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtHx6SEeCkz5PP4vZT5g" x="52" y="162" width="154" height="383"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MHtIB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtIR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtIh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtIx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtJB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtJR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtJh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHtJx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHtKB6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHtKR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHtKh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtKx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHtLB6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHtLR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHtLh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtLx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHtMB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHtMR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHtMh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtMx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MHtNB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_ETakYDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtNR6SEeCkz5PP4vZT5g" x="396" y="300" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MHtNh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtNx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtOB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtOR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtOh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MHtOx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MHtPB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MHtPR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MHtPh6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MHtPx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MHtQB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MHtQR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MIUAB6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MIUAR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MIUAh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MIUAx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MIUBB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MIUBR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MIUBh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MIUBx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MIUCB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_FuKEEDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MIUCR6SEeCkz5PP4vZT5g" x="396" y="162" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MIUCh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MIUCx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MIUDB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MIUDR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MIUDh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MIUDx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MIUEB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIUER6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MIUEh6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MIUEx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MIUFB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MIUFR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MIUFh6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MIUFx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MIUGB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MIUGR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MIUGh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MIUGx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MIUHB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MIUHR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MIUHh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MIUHx6SEeCkz5PP4vZT5g" x="396" y="448" width="100" height="100"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MIUIB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_vlmmAC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MIUIR6SEeCkz5PP4vZT5g" type="4001" source="_3MHtCh6SEeCkz5PP4vZT5g" target="_3MHtIB6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIUIh6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MIUIx6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIUJB6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MIUJR6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIUJh6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MIUJx6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MIUKB6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MIUKR6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIUKh6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MIUKx6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MIULB6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MIULR6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIULh6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIULx6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MIUMB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_4fJvUDj_Edy0Rd6V_tf1-Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MIUMR6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MIUMh6SEeCkz5PP4vZT5g" id="(0.91,0.4830287206266319)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MIUMx6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MIUNB6SEeCkz5PP4vZT5g" type="4001" source="_3MHtCh6SEeCkz5PP4vZT5g" target="_3MIUCh6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIUNR6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MIUNh6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIUNx6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MIUOB6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MIUOR6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MIUOh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MIUOx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MI7EB6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7ER6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7Eh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7Ex6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MI7FB6SEeCkz5PP4vZT5g" x="-39" y="12"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7FR6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7Fh6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MI7Fx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_B8mhMDkAEdy0Rd6V_tf1-Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MI7GB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MI7GR6SEeCkz5PP4vZT5g" id="(0.97,0.9197860962566845)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MI7Gh6SEeCkz5PP4vZT5g" id="(0.03,0.69)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MI7Gx6SEeCkz5PP4vZT5g" type="4001" source="_3MHtCh6SEeCkz5PP4vZT5g" target="_3MIUCh6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7HB6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MI7HR6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7Hh6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MI7Hx6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7IB6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7IR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7Ih6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MI7Ix6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7JB6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7JR6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7Jh6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MI7Jx6SEeCkz5PP4vZT5g" x="-11" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7KB6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7KR6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MI7Kh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_k2k-gDkFEdyuzNpSiGPe4w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MI7Kx6SEeCkz5PP4vZT5g" points="[50, 28, -196, -112]$[196, 111, -50, -29]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MI7LB6SEeCkz5PP4vZT5g" id="(0.84,0.7754010695187166)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MI7LR6SEeCkz5PP4vZT5g" id="(0.14,0.11)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MI7Lh6SEeCkz5PP4vZT5g" width="100" height="374"/>
+ <notation:Location xmi:id="_3MI7Lx6SEeCkz5PP4vZT5g" x="106" y="171"/>
+ <notation:Location xmi:id="_3MI7MB6SEeCkz5PP4vZT5g" x="353" y="300"/>
+ <notation:Location xmi:id="_3MI7MR6SEeCkz5PP4vZT5g" x="658" y="171"/>
+ <notation:Location xmi:id="_3MI7Mh6SEeCkz5PP4vZT5g" x="352" y="448"/>
+ <notation:Diagram xmi:id="_3MI7Mx6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="time classes: details" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MI7NB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7NR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7Nh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7Nx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7OB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7OR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7Oh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7Ox6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MI7PB6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MI7PR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MI7Ph6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MI7Px6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MI7QB6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MI7QR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_RTqHkDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MI7Qh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MI7Qx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hu4moFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_h02EsFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_I9vBoDkAEdy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MI7RB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MI7RR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MI7Rh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MI7Rx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MI7SB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MI7SR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MI7Sh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MI7Sx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MI7TB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_BN92YDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MI7TR6SEeCkz5PP4vZT5g" x="23" y="51" width="342" height="80"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MI7Th6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7Tx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7UB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7UR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7Uh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MI7Ux6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MI7VB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MI7VR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MI7Vh6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MI7Vx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_46X-0DkXEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiIB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MJiIR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MJiIh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MJiIx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MJiJB6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MJiJR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_4_tSIDkUEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiJh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiJx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_5IDV0DkUEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiKB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiKR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AiLxMFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kXdycFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#__BNhkDkUEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiKh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiKx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B2IFUFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CiyXAFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_FpAU8DkVEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiLB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiLR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_5XqpsDkVEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiLh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiLx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_D4vdUFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GkTEoFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Fh0SYDkWEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiMB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiMR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_E-9egFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fgh6gFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Fk8e4DkWEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiMh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiMx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_He_yUFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_He_yUVjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6152"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Fs12oDkWEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiNB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiNR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JGIvQFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JGJWUFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6152"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_TvgqsDkXEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MJiNh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MJiNx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MJiOB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MJiOR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MJiOh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MJiOx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MJiPB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MJiPR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MJiPh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_ETakYDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MJiPx6SEeCkz5PP4vZT5g" x="465" y="51" width="394" height="197"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MJiQB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MJiQR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MJiQh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MJiQx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MJiRB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MJiRR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MJiRh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MJiRx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MJiSB6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MKJMB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_VOnAwDkpEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MKJMR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MKJMh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_10XK8DkpEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MKJMx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOaoB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_19J6kDkpEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOaoR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MOaoh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MOaox6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MOapB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MOapR6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MOaph6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_t7qHIDkaEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOapx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOaqB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QRtlIFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RQ_34FjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_uEc2wDkaEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOaqR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOaqh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QRuMMFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RRBGAFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_uKtPwDkaEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOaqx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOarB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_af9uADkbEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOarR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOarh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_5GJNIDkbEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOarx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOasB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_96S4oDkbEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOasR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOash6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_JDcXUDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOasx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOatB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuwgMFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OBxi0FjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_ToY8wDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOatR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOath6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuxHQVjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OByJ4FjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_TuMp0DkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOatx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOauB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Nu0KkljcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OB3CYFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_T05uwDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOauR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOauh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Nu0KkFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OB2bUVjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_T6uC4DkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOaux6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOavB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuzjgljcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OB2bUFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_T_yJEDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOavR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOavh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuzjgFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OB10QVjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_UDgLcDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOavx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOawB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Nuy8cVjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OB10QFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_UKNQYDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOawR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOawh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuyVYljcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OB1NMFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_UPk4kDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOawx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOaxB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuyVYFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OB0mIFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_UVFqsDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOaxR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOaxh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuxuUljcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OBz_EFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_UcFqkDkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOaxx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOayB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NuxuUFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OBzYAFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Us7i8DkcEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MOayR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MOayh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_9jMDYDkfEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBsB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBsR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_9xV0IDkfEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBsh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBsx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_hArPsDkgEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBtB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBtR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_hIbdgDkgEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBth6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBtx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_hPbdYDkgEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBuB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBuR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UiQ0UFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UoO5cFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_hWSTUDkgEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBuh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBux6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UiTQkFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UoQuoFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_hc_YQDkgEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBvB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBvR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UiSpgFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UoPggFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_hkcEEDkgEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBvh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBvx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_IKEGADkhEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBwB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBwR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_q8lQcDkmEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBwh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBwx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_rCsfgDkmEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBxB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPBxR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UiT3oFjcEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UoRVsFjcEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_TAOvkDknEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MPBxh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPBxx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPByB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPByR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPByh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPByx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPBzB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPBzR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MPBzh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_FuKEEDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPBzx6SEeCkz5PP4vZT5g" x="26" y="156" width="339" height="508"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MPB0B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_vlmmAC-OEdySSa8YESkO2w"/>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MPB0R6SEeCkz5PP4vZT5g" width="256" height="79"/>
+ <notation:Location xmi:id="_3MPB0h6SEeCkz5PP4vZT5g" x="23" y="51"/>
+ <notation:Size xmi:id="_3MPB0x6SEeCkz5PP4vZT5g" width="326" height="211"/>
+ <notation:Location xmi:id="_3MPB1B6SEeCkz5PP4vZT5g" x="465" y="51"/>
+ <notation:Size xmi:id="_3MPB1R6SEeCkz5PP4vZT5g" width="345" height="751"/>
+ <notation:Location xmi:id="_3MPB1h6SEeCkz5PP4vZT5g" x="723" y="289"/>
+ <notation:Diagram xmi:id="_3MPB1x6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="time classes: include relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MPB2B6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPB2R6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPB2h6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPB2x6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPB3B6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPB3R6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPB3h6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MPB3x6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPB4B6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPB4R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPB4h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPB4x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPB5B6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPB5R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPB5h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPB5x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPowB6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPowR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPowh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPowx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MPoxB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPoxR6SEeCkz5PP4vZT5g" x="788" y="561" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPoxh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPoxx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPoyB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPoyR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPoyh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPoyx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPozB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MPozR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPozh6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPozx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPo0B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo0R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPo0h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPo0x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPo1B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo1R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPo1h6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPo1x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPo2B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo2R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MPo2h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_FuKEEDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo2x6SEeCkz5PP4vZT5g" x="181" y="400" width="100" height="120"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPo3B6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPo3R6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPo3h6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPo3x6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPo4B6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPo4R6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPo4h6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MPo4x6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPo5B6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPo5R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPo5h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo5x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPo6B6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPo6R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPo6h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo6x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPo7B6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPo7R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPo7h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo7x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MPo8B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo8R6SEeCkz5PP4vZT5g" x="27" y="567" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPo8h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPo8x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPo9B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPo9R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPo9h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPo9x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPo-B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MPo-R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPo-h6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPo-x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPo_B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPo_R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPo_h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPo_x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPpAB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPpAR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPpAh6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPpAx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPpBB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPpBR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MPpBh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_ETakYDj8Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MPpBx6SEeCkz5PP4vZT5g" x="167" y="568" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MPpCB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPpCR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPpCh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPpCx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPpDB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MPpDR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MPpDh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MPpDx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MPpEB6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MPpER6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MPpEh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP0B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQP0R6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQP0h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQP0x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP1B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQP1R6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQP1h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQP1x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP2B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MQP2R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1vnXoDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP2h6SEeCkz5PP4vZT5g" x="409" y="187" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MQP2x6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQP3B6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQP3R6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQP3h6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQP3x6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQP4B6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQP4R6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQP4h6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQP4x6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQP5B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQP5R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP5h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQP5x6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQP6B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQP6R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP6h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQP6x6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQP7B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQP7R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP7h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MQP7x6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP8B6SEeCkz5PP4vZT5g" x="107" y="179" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MQP8R6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQP8h6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQP8x6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQP9B6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQP9R6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQP9h6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQP9x6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQP-B6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQP-R6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQP-h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQP-x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQP_B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQP_R6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQP_h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQP_x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQAB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQQAR6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQQAh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQQAx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQBB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MQQBR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_LbxUEDRPEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQBh6SEeCkz5PP4vZT5g" x="248" y="182" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MQQBx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQQCB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQQCR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQQCh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQQCx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQQDB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQQDR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQQDh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQQDx6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQQEB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQQER6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQEh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQQEx6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQQFB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQQFR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQFh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQQFx6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQQGB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQQGR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQGh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MQQGx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_3W43cDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQHB6SEeCkz5PP4vZT5g" x="572" y="181" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MQQHR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQQHh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQQHx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQQIB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQQIR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQQIh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQQIx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQQJB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQQJR6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQQJh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQQJx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQKB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQQKR6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQQKh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQQKx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQQLB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQQLR6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQQLh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQ24B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ24R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MQ24h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1DM54DxBEdyfAeav5abbAw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ24x6SEeCkz5PP4vZT5g" x="707" y="180" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MQ25B6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQ25R6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQ25h6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQ25x6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQ26B6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQ26R6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQ26h6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQ26x6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQ27B6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQ27R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQ27h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ27x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQ28B6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQ28R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQ28h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ28x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQ29B6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQ29R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQ29h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ29x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MQ2-B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_oSgIME_BEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ2-R6SEeCkz5PP4vZT5g" x="586" y="329" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MQ2-h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQ2-x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQ2_B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQ2_R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQ2_h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MQ2_x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MQ3AB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQ3AR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQ3Ah6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQ3Ax6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQ3BB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ3BR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQ3Bh6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQ3Bx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQ3CB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ3CR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MQ3Ch6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MQ3Cx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MQ3DB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ3DR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MQ3Dh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MQ3Dx6SEeCkz5PP4vZT5g" x="512" y="472" width="100" height="100"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MQ3EB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_vlmmAC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MQ3ER6SEeCkz5PP4vZT5g" type="4008" source="_3MPo8h6SEeCkz5PP4vZT5g" target="_3MPo3B6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQ3Eh6SEeCkz5PP4vZT5g" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MQ3Ex6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQ3FB6SEeCkz5PP4vZT5g" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MQ3FR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MQ3Fh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_l8eRwDkUEdyuzNpSiGPe4w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MQ3Fx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MQ3GB6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MQ3GR6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MQ3Gh6SEeCkz5PP4vZT5g" type="4008" source="_3MPo8h6SEeCkz5PP4vZT5g" target="_3MPoxh6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQ3Gx6SEeCkz5PP4vZT5g" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MQ3HB6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MQ3HR6SEeCkz5PP4vZT5g" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MQ3Hh6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MQ3Hx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_mS08QDkUEdyuzNpSiGPe4w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MQ3IB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MQ3IR6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MQ3Ih6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MQ3Ix6SEeCkz5PP4vZT5g" type="4008" source="_3MPoxh6SEeCkz5PP4vZT5g" target="_3MPpCB6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MRd8B6SEeCkz5PP4vZT5g" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MRd8R6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MRd8h6SEeCkz5PP4vZT5g" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MRd8x6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MRd9B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Usage" href="osal.uml#_DLK1MFK5Ed-OfYmxqPWG5g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MRd9R6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MRd9h6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MRd9x6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MRd-B6SEeCkz5PP4vZT5g" type="4008" source="_3MPoxh6SEeCkz5PP4vZT5g" target="_3MQ25B6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MRd-R6SEeCkz5PP4vZT5g" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MRd-h6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MRd-x6SEeCkz5PP4vZT5g" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MRd_B6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MRd_R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Usage" href="osal.uml#_MyswIFK5Ed-OfYmxqPWG5g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MRd_h6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MRd_x6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MReAB6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MReAR6SEeCkz5PP4vZT5g" type="4008" source="_3MPoxh6SEeCkz5PP4vZT5g" target="_3MQ2-h6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MReAh6SEeCkz5PP4vZT5g" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MReAx6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MReBB6SEeCkz5PP4vZT5g" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MReBR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MReBh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Usage" href="osal.uml#_z1gvcFLcEd-mj-y6sW0V8w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MReBx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MReCB6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MReCR6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Location xmi:id="_3MReCh6SEeCkz5PP4vZT5g" x="788" y="561"/>
+ <notation:Size xmi:id="_3MReCx6SEeCkz5PP4vZT5g" width="100" height="120"/>
+ <notation:Location xmi:id="_3MReDB6SEeCkz5PP4vZT5g" x="181" y="400"/>
+ <notation:Location xmi:id="_3MReDR6SEeCkz5PP4vZT5g" x="27" y="567"/>
+ <notation:Location xmi:id="_3MReDh6SEeCkz5PP4vZT5g" x="167" y="568"/>
+ <notation:Location xmi:id="_3MReDx6SEeCkz5PP4vZT5g" x="409" y="187"/>
+ <notation:Location xmi:id="_3MReEB6SEeCkz5PP4vZT5g" x="107" y="179"/>
+ <notation:Location xmi:id="_3MReER6SEeCkz5PP4vZT5g" x="248" y="182"/>
+ <notation:Location xmi:id="_3MReEh6SEeCkz5PP4vZT5g" x="572" y="181"/>
+ <notation:Location xmi:id="_3MReEx6SEeCkz5PP4vZT5g" x="707" y="180"/>
+ <notation:Location xmi:id="_3MReFB6SEeCkz5PP4vZT5g" x="586" y="329"/>
+ <notation:Location xmi:id="_3MReFR6SEeCkz5PP4vZT5g" x="512" y="472"/>
+ <notation:Diagram xmi:id="_3MReFh6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Tracing classes : Structural Relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MReFx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MReGB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MReGR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MReGh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MReGx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MReHB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MReHR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MReHh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MReHx6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MReIB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MReIR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MReIh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MReIx6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MReJB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MReJR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MReJh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MReJx6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MReKB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MReKR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MReKh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MReKx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1DM54DxBEdyfAeav5abbAw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MReLB6SEeCkz5PP4vZT5g" x="239" y="212" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MReLR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MReLh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MReLx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MReMB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MReMR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MReMh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MReMx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MReNB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MReNR6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MReNh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MReNx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MReOB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MReOR6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MReOh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MReOx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MRePB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MRePR6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MSFAB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MSFAR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MSFAh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MSFAx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_5InEkFGAEdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MSFBB6SEeCkz5PP4vZT5g" x="240" y="347" width="100" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MSFBR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MSFBh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MSFBx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MSFCB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MSFCR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MSFCh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MSFCx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MSFDB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MSFDR6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MSFDh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MSFDx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MSFEB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MSFER6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MSFEh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MSFEx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MSFFB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MSFFR6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MSFFh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MSFFx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MSFGB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MSFGR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MSFGh6SEeCkz5PP4vZT5g" x="451" y="214" width="100" height="100"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MSFGx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_w86XMC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MSFHB6SEeCkz5PP4vZT5g" type="4001" source="_3MReFx6SEeCkz5PP4vZT5g" target="_3MSFBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MSFHR6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MSFHh6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MSFHx6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MSFIB6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MSFIR6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MSFIh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MSFIx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MSFJB6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MSFJR6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MSFJh6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MSFJx6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MSFKB6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MSFKR6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MSFKh6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MSFKx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#_JBoWAFIhEdy7g9CjxdN7jw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MSFLB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MSFLR6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MSFLh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Location xmi:id="_3MSFLx6SEeCkz5PP4vZT5g" x="239" y="212"/>
+ <notation:Location xmi:id="_3MSFMB6SEeCkz5PP4vZT5g" x="240" y="347"/>
+ <notation:Location xmi:id="_3MSFMR6SEeCkz5PP4vZT5g" x="451" y="214"/>
+ <notation:Size xmi:id="_3MVvaR6SEeCkz5PP4vZT5g" width="158" height="97"/>
+ <notation:Location xmi:id="_3MVvah6SEeCkz5PP4vZT5g" x="270" y="317"/>
+ <notation:Location xmi:id="_3MVvax6SEeCkz5PP4vZT5g" x="345" y="490"/>
+ <notation:Location xmi:id="_3MVvbB6SEeCkz5PP4vZT5g" x="91" y="30"/>
+ <notation:Size xmi:id="_3MVvbR6SEeCkz5PP4vZT5g" width="157" height="102"/>
+ <notation:Location xmi:id="_3MVvbh6SEeCkz5PP4vZT5g" x="-110" y="30"/>
+ <notation:Location xmi:id="_3MVvbx6SEeCkz5PP4vZT5g" x="91" y="303"/>
+ <notation:Size xmi:id="_3MVvcB6SEeCkz5PP4vZT5g" width="274" height="100"/>
+ <notation:Location xmi:id="_3MVvcR6SEeCkz5PP4vZT5g" x="642" y="345"/>
+ <notation:Size xmi:id="_3MVvch6SEeCkz5PP4vZT5g" width="141" height="100"/>
+ <notation:Location xmi:id="_3MVvcx6SEeCkz5PP4vZT5g" x="896" y="25"/>
+ <notation:Location xmi:id="_3MVvdB6SEeCkz5PP4vZT5g" x="856" y="503"/>
+ <notation:Location xmi:id="_3MVvdR6SEeCkz5PP4vZT5g" x="628" y="501"/>
+ <notation:Location xmi:id="_3MVvdh6SEeCkz5PP4vZT5g" x="100" y="-142"/>
+ <notation:Location xmi:id="_3MVvdx6SEeCkz5PP4vZT5g" x="276" y="-142"/>
+ <notation:Location xmi:id="_3MVveB6SEeCkz5PP4vZT5g" x="747" y="505"/>
+ <notation:Location xmi:id="_3MVveR6SEeCkz5PP4vZT5g" x="502" y="500"/>
+ <notation:Location xmi:id="_3MVveh6SEeCkz5PP4vZT5g" x="479" y="271"/>
+ <notation:Diagram xmi:id="_3MVvex6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="ProcessingResources classes : Details" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MVvfB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MVvfR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MVvfh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MVvfx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MVvgB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MVvgR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MVvgh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MVvgx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MVvhB6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MVvhR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_hhJsAE_IEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvhh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvhx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_hkukcE_IEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVviB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVviR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_xFdHYE_IEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvih6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvix6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_xLHqgE_IEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvjB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvjR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_xO_d4E_IEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvjh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvjx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_xSkWUE_IEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvkB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvkR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_xVsi0E_IEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvkh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvkx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_xY-gUE_IEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvlB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvlR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_XIyUkE_JEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvlh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvlx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_es7bcE_JEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvmB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvmR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_jLVgcE_JEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvmh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MVvmx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MVvnB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MVvnR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MVvnh6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MVvnx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy7XgFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2IcgFkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Wg_Y8E_CEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvoB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvoR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Wn__4E_CEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MVvoh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MVvox6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy7-kFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2IcgVkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_WtXBAE_CEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWcB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWcR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy6JYFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2H1cFkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Wx1RUE_CEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWch6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWcx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_W2mckE_CEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWdB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWdR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_W8HOsE_CEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWdh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWdx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy_B4FkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2KRsFkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_XA4Z8E_CEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWeB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWeR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy_B4lkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2KRsVkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_EmmlEE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWeh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWex6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_FQU3gE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWfB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWfR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Qd0qsE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWfh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWfx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy_o8FkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2K4wFkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Qpmc4E_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWgB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWgR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_m11OgE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWgh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWgx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_m8ZJgE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWhB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWhR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_nCDsoE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWhh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWhx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_nGrG4E_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWiB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWiR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy_o8lkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2K4wVkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_nL4-EE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWih6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWix6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OzAQAFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2Lf0FkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_nPwxcE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWjB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWjR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_nUPBwE_EEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWjh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWjx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OzAQAlkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2MG4FkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_cjQWAE_FEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWkB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWkR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OzA3EVkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2MG4VkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_cpEqIE_FEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWkh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWkx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_fBQXkE_HEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MWWlB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MWWlR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_fMk2wE_HEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9gB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9gR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_fRpkAE_HEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9gh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9gx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_fWj5ME_HEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9hB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9hR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_fbomcE_HEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9hh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9hx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ffqK0E_HEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9iB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9iR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_fkkgAE_HEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9ih6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9ix6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OzBeIFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2Mt8FkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Lv9bIE_JEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9jB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MW9jR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MW9jh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MW9jx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MW9kB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MW9kR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MW9kh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MW9kx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MW9lB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_oSgIME_BEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MW9lR6SEeCkz5PP4vZT5g" x="513" y="9" width="406" height="595"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9lh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MW9lx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MW9mB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MW9mR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MW9mh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MW9mx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MW9nB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MW9nR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MW9nh6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MW9nx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_QFAjQE_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9oB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9oR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_QJezkE_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9oh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9ox6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_QNM18E_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9pB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9pR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_Z_zYcE_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MW9ph6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MW9px6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_c8Tl0E_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkkB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkkR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_c_4eQE_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkkh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkkx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_dC25wE_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXklB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXklR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_dF18UE_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXklh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXklx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_dJHSwE_eEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkmB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MXkmR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MXkmh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MXkmx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MXknB6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MXknR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_mZzqwE_NEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXknh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXknx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_pLuYwE_NEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkoB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkoR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy8loFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2JDkFkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_v9NToE_NEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkoh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkox6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_361RgE_NEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkpB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkpR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy9MsFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2JDkVkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_7k7ksE_NEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkph6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkpx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_EQ5PQE_OEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkqB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkqR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Oy-a0FkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O2JqoFkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_EW2tUE_OEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkqh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkqx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_R3kgUE_OEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkrB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkrR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_R8VrkE_OEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkrh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkrx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_SCJ_sE_OEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXksB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXksR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_SHhA0E_OEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXksh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXksx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_SMSMEE_OEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXktB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXktR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_SQdhcE_OEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkth6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MXktx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MXkuB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MXkuR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MXkuh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MXkux6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MXkvB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MXkvR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MXkvh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_TVGDsE_NEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MXkvx6SEeCkz5PP4vZT5g" x="56" y="27" width="368" height="343"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkwB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MXkwR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MXkwh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MXkwx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MXkxB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MXkxR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MXkxh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MXkxx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MXkyB6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MXkyR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_nyBcEE_nEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkyh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkyx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_-6w5QE_nEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkzB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MXkzR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_UO0swE_oEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MXkzh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLoB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_Z47I0E_oEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLoR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLoh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_fsj7YE_oEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLox6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLpB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_jQG6oE_oEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLpR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLph6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_qE3L8E_oEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLpx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLqB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_sbg6QE_oEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLqR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLqh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_u5djYE_oEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLqx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MYLrB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MYLrR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MYLrh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MYLrx6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MYLsB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3SxwFkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s-7q0FkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_oCK1EE_gEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLsR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLsh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3T_4FkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s-8R4FkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_VpnT8E_hEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLsx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLtB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_vOOWoE_hEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLtR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLth6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_5LQAcE_hEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLtx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLuB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3T_4lkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s-8R4VkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_-xoaIE_hEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLuR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLuh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_S8E6ME_iEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLux6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLvB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_dG0P4E_iEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLvR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLvh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3Um8FkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s-848FkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_dS4V8E_iEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLvx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLwB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_GnaOIE_jEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLwR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLwh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3Um8lkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s-848VkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Gzx2ME_jEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLwx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLxB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_G6VKIE_jEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLxR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLxh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_bvjFgE_jEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLxx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLyB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_mdJ3sE_jEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLyR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLyh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3VOAFkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s-9gAFkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_yp_A8E_jEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLyx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLzB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3VOAlkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s-9gAVkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_MYHzEE_kEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLzR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYLzh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_X5b6IE_kEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYLzx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYL0B6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_bh5OkE_kEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYL0R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYL0h6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3V1EFkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s--HEFkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_NaGikE_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYL0x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYL1B6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_nQJTgE_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYL1R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYL1h6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_p66QoE_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYL1x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYL2B6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s3V1ElkZEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s--HEVkZEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_xR8IkE_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYL2R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYL2h6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_xldhgE_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYL2x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYL3B6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_xsdhYE_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYysB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYysR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_x0gqIE_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYysh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYysx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_x7XgEE_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYytB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYytR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_yChQ8E_mEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYyth6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MYytx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MYyuB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MYyuR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MYyuh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MYyux6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MYyvB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MYyvR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MYyvh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MYyvx6SEeCkz5PP4vZT5g" x="54" y="486" width="368" height="541"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYywB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MYywR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MYywh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MYywx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MYyxB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MYyxR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MYyxh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MYyxx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MYyyB6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MYyyR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_6bg4AE_tEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYyyh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYyyx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_9TGJIE_tEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYyzB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYyzR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_BBEPsE_uEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYyzh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MYyzx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MYy0B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MYy0R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MYy0h6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MYy0x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_YAjKkE_rEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYy1B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYy1R6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JjFOgFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jl4q4FkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_f6SuAE_rEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYy1h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYy1x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_f_9RIE_rEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYy2B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYy2R6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JjGcoFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jl5R8FkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_vxhFYE_rEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYy2h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYy2x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_v5HiME_rEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYy3B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYy3R6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JjHDsFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jl55AFkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_oN8UUE_tEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYy3h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYy3x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ofORkE_tEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MYy4B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MYy4R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MYy4h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MYy4x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MYy5B6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MYy5R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MYy5h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MYy5x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MYy6B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Saw1YDkDEdyuzNpSiGPe4w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MYy6R6SEeCkz5PP4vZT5g" x="513" y="621" width="406" height="184"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MYy6h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MYy6x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MYy7B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MYy7R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MYy7h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MYy7x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MYy8B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MYy8R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MYy8h6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MYy8x6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_Rt3nYE_yEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZwB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZwR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_RwZ-AE_yEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZwh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZwx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_1oie8E_yEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZxB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MZZxR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MZZxh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MZZxx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MZZyB6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MZZyR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ZtXqAE_xEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZyh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZyx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SG5CoFkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SRcs0FkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Z2BPsE_xEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZzB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZzR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Z7FV4E_xEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZzh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZzx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_aJrykE_xEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZ0B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZ0R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_D9gO0E_yEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZ0h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZ0x6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SG5ColkfEeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SRd68FkfEeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_ECHpEE_yEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZ1B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZ1R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_EJIQAE_yEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZ1h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MZZ1x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_ETtIUE_yEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MZZ2B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MZZ2R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MZZ2h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MZZ2x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MZZ3B6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MZZ3R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MZZ3h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MZZ3x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MZZ4B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_9-OUUE_uEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MZZ4R6SEeCkz5PP4vZT5g" x="513" y="828" width="406" height="199"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MaA2R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_oT0acC-OEdySSa8YESkO2w"/>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MaA2h6SEeCkz5PP4vZT5g" width="400" height="756"/>
+ <notation:Location xmi:id="_3MaA2x6SEeCkz5PP4vZT5g" x="526" y="27"/>
+ <notation:Size xmi:id="_3MaA3B6SEeCkz5PP4vZT5g" width="366" height="407"/>
+ <notation:Location xmi:id="_3MaA3R6SEeCkz5PP4vZT5g" x="56" y="297"/>
+ <notation:Size xmi:id="_3MaA3h6SEeCkz5PP4vZT5g" width="366" height="629"/>
+ <notation:Location xmi:id="_3MaA3x6SEeCkz5PP4vZT5g" x="57" y="735"/>
+ <notation:Size xmi:id="_3MaA4B6SEeCkz5PP4vZT5g" width="387" height="216"/>
+ <notation:Location xmi:id="_3MaA4R6SEeCkz5PP4vZT5g" x="525" y="834"/>
+ <notation:Size xmi:id="_3MaA4h6SEeCkz5PP4vZT5g" width="380" height="224"/>
+ <notation:Location xmi:id="_3MaA4x6SEeCkz5PP4vZT5g" x="524" y="1090"/>
+ <notation:Size xmi:id="_3MaA5B6SEeCkz5PP4vZT5g" width="364" height="240"/>
+ <notation:Location xmi:id="_3MaA5R6SEeCkz5PP4vZT5g" x="57" y="1381"/>
+ <notation:Diagram xmi:id="_3MaA5h6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Communication classes : dependencies" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MaBEx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MaBFB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MaBFR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MaBFh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MaBFx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MaBGB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MaBGR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MaBGh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MaBGx6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MaBHB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MaBHR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaBHh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MaBHx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MaBIB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MaBIR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaBIh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MaBIx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MaBJB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MaBJR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaBJh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MaBJx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_LbxUEDRPEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Man4B6SEeCkz5PP4vZT5g" x="36" y="225" width="244" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Man4R6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Man4h6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Man4x6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Man5B6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Man5R6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Man5h6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Man5x6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Man6B6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Man6R6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Man6h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Man6x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Man7B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Man7R6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Man7h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Man7x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Man8B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Man8R6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Man8h6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Man8x6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Man9B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Man9R6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_N361AFCsEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Man9h6SEeCkz5PP4vZT5g" x="36" y="144" width="244" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Man9x6SEeCkz5PP4vZT5g" type="2010" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Man-B6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Man-R6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Man-h6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Man-x6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Man_B6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Man_R6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Man_h6SEeCkz5PP4vZT5g" type="5035"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Man_x6SEeCkz5PP4vZT5g" visible="false" type="7020">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MaoAB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MaoAR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaoAh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MaoAx6SEeCkz5PP4vZT5g" visible="false" type="7021">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MaoBB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MaoBR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaoBh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <element xmi:type="uml:DataType" href="osal.uml#_ZiVqMFCrEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaoBx6SEeCkz5PP4vZT5g" x="153" y="36" width="125" height="50"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MaoCB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MaoCR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MaoCh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MaoCx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MaoDB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MaoDR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MaoDh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MaoDx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MaoEB6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MaoER6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MaoEh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaoEx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MaoFB6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MaoFR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MaoFh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaoFx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MaoGB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MaoGR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MaoGh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaoGx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MaoHB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_oSgIME_BEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MaoHR6SEeCkz5PP4vZT5g" x="36" y="36" width="98" height="50"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MaoNB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MbO8B6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MbO8R6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MbO8h6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MbO8x6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MbO9B6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MbO9R6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MbO9h6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MbO9x6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MbO-B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MbO-R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MbO-h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MbO-x6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MbO_B6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MbO_R6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MbO_h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MbO_x6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MbPAB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MbPAR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MbPAh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MbPAx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sq-yMFCvEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MbPBB6SEeCkz5PP4vZT5g" x="369" y="162" width="163" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MbPBR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MbPBh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MbPBx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MbPCB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MbPCR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MbPCh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MbPCx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MbPDB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MbPDR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MbPDh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MbPDx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MbPEB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MbPER6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MbPEh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MbPEx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MbPFB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MbPFR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MbPFh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MbPFx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MbPGB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MbPGR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MbPGh6SEeCkz5PP4vZT5g" x="369" y="36" width="163" height="41"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MbPGx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_mU3acC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MbPHB6SEeCkz5PP4vZT5g" type="4008" source="_3Man4R6SEeCkz5PP4vZT5g" target="_3Man9x6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MbPHR6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MbPHh6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MbPHx6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MbPIB6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MbPIR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_YWeekFCsEdyqzLG48ixyqA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MbPIh6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MbPIx6SEeCkz5PP4vZT5g" id="(0.7808764940239044,0.2391304347826087)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MbPJB6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MbPJR6SEeCkz5PP4vZT5g" type="4008" source="_3Man4R6SEeCkz5PP4vZT5g" target="_3MaoCB6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MbPJh6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MbPJx6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MbPKB6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MbPKR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MbPKh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_bWmnsFCsEdyqzLG48ixyqA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MbPKx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MbPLB6SEeCkz5PP4vZT5g" id="(0.22709163346613545,0.17391304347826086)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MbPLR6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3Mb2DB6SEeCkz5PP4vZT5g" type="4008" source="_3MaoNB6SEeCkz5PP4vZT5g" target="_3MbPBR6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mb2DR6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2Dh6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mb2Dx6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2EB6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Mb2ER6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_0vA6EFCvEdyqzLG48ixyqA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Mb2Eh6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mb2Ex6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mb2FB6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3Mb2FR6SEeCkz5PP4vZT5g" width="675" height="100"/>
+ <notation:Location xmi:id="_3Mb2Fh6SEeCkz5PP4vZT5g" x="445" y="274"/>
+ <notation:Location xmi:id="_3Mb2Fx6SEeCkz5PP4vZT5g" x="328" y="101"/>
+ <notation:Location xmi:id="_3Mb2GB6SEeCkz5PP4vZT5g" x="32" y="285"/>
+ <notation:Size xmi:id="_3Mb2GR6SEeCkz5PP4vZT5g" width="253" height="96"/>
+ <notation:Location xmi:id="_3Mb2Gh6SEeCkz5PP4vZT5g" x="29" y="144"/>
+ <notation:Size xmi:id="_3Mb2Gx6SEeCkz5PP4vZT5g" width="127" height="100"/>
+ <notation:Location xmi:id="_3Mb2HB6SEeCkz5PP4vZT5g" x="174" y="-1"/>
+ <notation:Location xmi:id="_3Mb2HR6SEeCkz5PP4vZT5g" x="32" y="1"/>
+ <notation:Location xmi:id="_3Mb2Hh6SEeCkz5PP4vZT5g" x="673" y="105"/>
+ <notation:Size xmi:id="_3Mb2Hx6SEeCkz5PP4vZT5g" width="323" height="100"/>
+ <notation:Location xmi:id="_3Mb2IB6SEeCkz5PP4vZT5g" x="1016" y="444"/>
+ <notation:Location xmi:id="_3Mb2IR6SEeCkz5PP4vZT5g" x="1128" y="110"/>
+ <notation:Diagram xmi:id="_3Mb2Ih6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Communication classes : details" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2Ix6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mb2JB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mb2JR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mb2Jh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mb2Jx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mb2KB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mb2KR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mb2Kh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mb2Kx6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2LB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_iJ-LMFCnEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2LR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2Lh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_iRkoAFCnEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2Lx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2MB6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_iVcbYFCnEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2MR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2Mh6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_iY4J4FCnEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2Mx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mb2NB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mb2NR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mb2Nh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mb2Nx6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2OB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_3v1yUFClEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2OR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2Oh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PunA0FkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QbCpAFkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_oHiAsFClEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2Ox6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2PB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_9XQt0FClEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2PR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2Ph6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_FSpQAFCmEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2Px6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2QB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Olf7cFCmEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mb2QR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mb2Qh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_UH_6sFCmEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdEB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdER6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_UVQTkFCmEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdEh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdEx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIdiYFkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONfzYVkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_g-GDYFCmEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdFB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdFR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIdiYlkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONgacFkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_viKJwFCmEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdFh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdFx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIeJcFkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONgacVkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_9ececFCmEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdGB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3McdGR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3McdGh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdGx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3McdHB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3McdHR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3McdHh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdHx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3McdIB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_LbxUEDRPEdy1p4IpsoZYqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdIR6SEeCkz5PP4vZT5g" x="45" y="27" width="388" height="262"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdIh6SEeCkz5PP4vZT5g" type="2006" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdIx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdJB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdJR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdJh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdJx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdKB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3McdKR6SEeCkz5PP4vZT5g" type="5023"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3McdKh6SEeCkz5PP4vZT5g" type="7015">
+ <children xmi:type="notation:Shape" xmi:id="_3McdKx6SEeCkz5PP4vZT5g" type="3017">
+ <element xmi:type="uml:EnumerationLiteral" href="osal.uml#_RygfcFClEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdLB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3McdLR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3McdLh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdLx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <element xmi:type="uml:Enumeration" href="osal.uml#_Nz2RgFClEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdMB6SEeCkz5PP4vZT5g" x="513" y="27" width="181" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdMR6SEeCkz5PP4vZT5g" type="2012" fillColor="16634574" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdMh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdMx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdNB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdNR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdNh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdNx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3McdOB6SEeCkz5PP4vZT5g" type="5038"/>
+ <element xmi:type="uml:Comment" href="osal.uml#_VAllAFClEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdOR6SEeCkz5PP4vZT5g" x="756" y="27" width="172" height="8"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdOh6SEeCkz5PP4vZT5g" type="2010" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdOx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdPB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdPR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdPh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdPx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3McdQB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3McdQR6SEeCkz5PP4vZT5g" type="5035"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3McdQh6SEeCkz5PP4vZT5g" type="7020">
+ <children xmi:type="notation:Shape" xmi:id="_3McdQx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_ypi_MFCrEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdRB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdRR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_yuw2YFCrEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdRh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdRx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_yzPGsFCrEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdSB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdSR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_y2EYQFCrEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3McdSh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3McdSx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3McdTB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdTR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3McdTh6SEeCkz5PP4vZT5g" visible="false" type="7021">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3McdTx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3McdUB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdUR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <element xmi:type="uml:DataType" href="osal.uml#_ZiVqMFCrEdyTutVzffQTmQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3McdUh6SEeCkz5PP4vZT5g" x="513" y="108" width="181" height="106"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3McdUx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3McdVB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MdEIB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MdEIR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MdEIh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MdEIx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MdEJB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MdEJR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MdEJh6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MdEJx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MdEKB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MdEKR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MdEKh6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MdEKx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_i3atwFCsEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdELB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdELR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIcUQlkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONfMUFkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_k-Am0FCsEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdELh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdELx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_44le4FCsEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEMB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEMR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIc7UlkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONfzYFkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#__McpoFCsEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEMh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEMx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_JEUGoFCtEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdENB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdENR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_V5vg8FCtEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdENh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdENx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIc7UFkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONfMUVkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_cxNvEFCtEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEOB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MdEOR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MdEOh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MdEOx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MdEPB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MdEPR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MdEPh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MdEPx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MdEQB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_N361AFCsEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MdEQR6SEeCkz5PP4vZT5g" x="45" y="351" width="388" height="154"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEQh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MdEQx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MdERB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MdERR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MdERh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MdERx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MdESB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MdESR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MdESh6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MdESx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_UCsbkFC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdETB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdETR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_qM2woFC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdETh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdETx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_qTs_gFC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEUB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEUR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_VBgXwFC1EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEUh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEUx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_VL8GIFC1EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEVB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEVR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_VPz5gFC1EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEVh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEVx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_gOHaIFC1EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEWB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEWR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_gR1cgFC1EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEWh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdEWx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_gVRLAFC1EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEXB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MdEXR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MdEXh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MdEXx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MdEYB6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MdEYR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_W9qUsFCwEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdEYh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrMB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIbGIVkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONd-MFkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_ZznOIFCwEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrMR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrMh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_yFEm4FCwEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrMx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrNB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIafEFkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONdXIFkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_2k0vsFCwEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrNR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrNh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_WZFykFCxEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrNx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrOB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_gRW4MFCxEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrOR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrOh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_qK9akFCxEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrOx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrPB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_2nJOcFCxEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrPR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrPh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_7F2OYFCxEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrPx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrQB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_KxUW0FC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrQR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrQh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_K3bl4FC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrQx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrRB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_K8DAIFC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrRR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrRh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIbtMFkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONd-MVkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_LAqaYFC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrRx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrSB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIbtMlkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONelQFkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_35gG0FC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrSR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MdrSh6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OIcUQFkYEeKyM9oNj0qhEg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ONelQVkYEeKyM9oNj0qhEg" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_4JcAQFC0EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MdrSx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MdrTB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MdrTR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MdrTh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MdrTx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MdrUB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MdrUR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MdrUh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MdrUx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sq-yMFCvEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MdrVB6SEeCkz5PP4vZT5g" x="513" y="261" width="402" height="386"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MdrVR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_mU3acC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MdrVh6SEeCkz5PP4vZT5g" type="4013" source="_3McdMR6SEeCkz5PP4vZT5g" target="_3McdIh6SEeCkz5PP4vZT5g" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MdrVx6SEeCkz5PP4vZT5g"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MdrWB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MdrWR6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MdrWh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MdrWx6SEeCkz5PP4vZT5g" width="423" height="314"/>
+ <notation:Location xmi:id="_3MdrXB6SEeCkz5PP4vZT5g" x="517" y="458"/>
+ <notation:Size xmi:id="_3MdrXR6SEeCkz5PP4vZT5g" width="183" height="62"/>
+ <notation:Location xmi:id="_3MdrXh6SEeCkz5PP4vZT5g" x="517" y="783"/>
+ <notation:Size xmi:id="_3MdrXx6SEeCkz5PP4vZT5g" width="207" height="58"/>
+ <notation:Location xmi:id="_3MdrYB6SEeCkz5PP4vZT5g" x="770" y="791"/>
+ <notation:Size xmi:id="_3MdrYR6SEeCkz5PP4vZT5g" width="190" height="119"/>
+ <notation:Location xmi:id="_3MdrYh6SEeCkz5PP4vZT5g" x="513" y="858"/>
+ <notation:Size xmi:id="_3MdrYx6SEeCkz5PP4vZT5g" width="360" height="216"/>
+ <notation:Location xmi:id="_3MdrZB6SEeCkz5PP4vZT5g" x="52" y="885"/>
+ <notation:Size xmi:id="_3MdrZR6SEeCkz5PP4vZT5g" width="437" height="438"/>
+ <notation:Location xmi:id="_3MdrZh6SEeCkz5PP4vZT5g" x="513" y="1000"/>
+ <notation:Diagram xmi:id="_3MdrZx6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Synchronization classes : Structural relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MdraB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MdraR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mdrah6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mdrax6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MdrbB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSQB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSQR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MeSQh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSQx6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSRB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSRR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSRh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSRx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSSB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSSR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSSh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSSx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSTB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSTR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSTh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MeSTx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_D8njME_gEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSUB6SEeCkz5PP4vZT5g" x="90" y="225" width="100" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MeSUR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSUh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSUx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSVB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSVR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSVh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSVx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MeSWB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSWR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSWh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSWx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSXB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSXR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSXh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSXx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSYB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSYR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSYh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSYx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSZB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MeSZR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_jXTGsFC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSZh6SEeCkz5PP4vZT5g" x="266" y="225" width="100" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MeSZx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSaB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSaR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSah6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSax6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSbB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSbR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MeSbh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSbx6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeScB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeScR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSch6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeScx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSdB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSdR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSdh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSdx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSeB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSeR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSeh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MeSex6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_qIyBkFC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSfB6SEeCkz5PP4vZT5g" x="765" y="225" width="100" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MeSfR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSfh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSfx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSgB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSgR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSgh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSgx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MeShB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeShR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeShh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeShx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSiB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSiR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSih6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSix6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSjB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MeSjR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MeSjh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MeSjx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSkB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MeSkR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_rsw80FC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MeSkh6SEeCkz5PP4vZT5g" x="423" y="225" width="154" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MeSkx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSlB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSlR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MeSlh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MeSlx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5UB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5UR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5Uh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5Ux6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5VB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5VR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5Vh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5Vx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5WB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5WR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5Wh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5Wx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5XB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5XR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5Xh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Me5Xx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Jj9usFC7EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5YB6SEeCkz5PP4vZT5g" x="351" y="108" width="100" height="53"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Me5YR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5Yh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5Yx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5ZB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5ZR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5Zh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5Zx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5aB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5aR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5ah6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5ax6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5bB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5bR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5bh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5bx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5cB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5cR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5ch6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5cx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5dB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Me5dR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_5HEaAFFgEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5dh6SEeCkz5PP4vZT5g" x="90" y="108" width="100" height="54"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Me5dx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5eB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5eR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5eh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5ex6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5fB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5fR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5fh6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5fx6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5gB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5gR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5gh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5gx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5hB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5hR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5hh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Me5hx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Me5iB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Me5iR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5ih6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Me5ix6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_dhMBIFF2EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Me5jB6SEeCkz5PP4vZT5g" x="628" y="225" width="100" height="47"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3Me5jR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_soXY0C-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3Me5jh6SEeCkz5PP4vZT5g" type="4001" source="_3Me5YR6SEeCkz5PP4vZT5g" target="_3MeSkx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5jx6SEeCkz5PP4vZT5g" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Me5kB6SEeCkz5PP4vZT5g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5kR6SEeCkz5PP4vZT5g" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Me5kh6SEeCkz5PP4vZT5g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5kx6SEeCkz5PP4vZT5g" type="6003">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5lB6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5lR6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Me5lh6SEeCkz5PP4vZT5g" x="28" y="-10"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5lx6SEeCkz5PP4vZT5g" type="6005">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Me5mB6SEeCkz5PP4vZT5g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Me5mR6SEeCkz5PP4vZT5g" key="CustomAppearance_MaskValue" value="14"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Me5mh6SEeCkz5PP4vZT5g" x="-27" y="8"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5mx6SEeCkz5PP4vZT5g" visible="false" type="6033"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Me5nB6SEeCkz5PP4vZT5g" visible="false" type="6034"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Me5nR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Association" href="osal.uml#__4cxwFFhEdyjobZYtXo9NQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MfgYB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MfgYR6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MfgYh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Location xmi:id="_3MfgYx6SEeCkz5PP4vZT5g" x="55" y="498"/>
+ <notation:Location xmi:id="_3MfgZB6SEeCkz5PP4vZT5g" x="348" y="493"/>
+ <notation:Location xmi:id="_3MfgZR6SEeCkz5PP4vZT5g" x="847" y="467"/>
+ <notation:Size xmi:id="_3MfgZh6SEeCkz5PP4vZT5g" width="154" height="100"/>
+ <notation:Location xmi:id="_3MfgZx6SEeCkz5PP4vZT5g" x="505" y="479"/>
+ <notation:Size xmi:id="_3MfgaB6SEeCkz5PP4vZT5g" width="100" height="254"/>
+ <notation:Location xmi:id="_3MfgaR6SEeCkz5PP4vZT5g" x="322" y="51"/>
+ <notation:Location xmi:id="_3Mfgah6SEeCkz5PP4vZT5g" x="97" y="232"/>
+ <notation:Location xmi:id="_3Mfgax6SEeCkz5PP4vZT5g" x="710" y="474"/>
+ <notation:Diagram xmi:id="_3MfgbB6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Synchronization classes : include relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MfgbR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mfgbh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mfgbx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MfgcB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MfgcR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mfgch6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mfgcx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MfgdB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MfgdR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mfgdh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mfgdx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MfgeB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MfgeR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mfgeh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mfgex6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MfgfB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MfgfR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mfgfh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mfgfx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MfggB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MfggR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_jXTGsFC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mfggh6SEeCkz5PP4vZT5g" x="-143" y="202" width="100" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mfggx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MfghB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MfghR6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mfghh6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mfghx6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MfgiB6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MfgiR6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mfgih6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mfgix6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MfgjB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MfgjR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mfgjh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mfgjx6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MfgkB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MfgkR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mfgkh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mfgkx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MfglB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MfglR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mfglh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Mfglx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_rsw80FC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MfgmB6SEeCkz5PP4vZT5g" x="-144" y="54" width="690" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MfgmR6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mfgmh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mfgmx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MfgnB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MfgnR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mfgnh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mfgnx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MfgoB6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MfgoR6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mfgoh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mfgox6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MfgpB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MfgpR6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mfgph6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mfgpx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MfgqB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MfgqR6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mfgqh6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mfgqx6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MfgrB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MfgrR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_qIyBkFC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mfgrh6SEeCkz5PP4vZT5g" x="-13" y="364" width="100" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mfgrx6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MfgsB6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHcB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHcR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHch6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHcx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHdB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MgHdR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHdh6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHdx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHeB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHeR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHeh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHex6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHfB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHfR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHfh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHfx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHgB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHgR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MgHgh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_0AwCEDO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHgx6SEeCkz5PP4vZT5g" x="-146" y="364" width="100" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MgHhB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHhR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHhh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHhx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHiB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHiR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHih6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MgHix6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHjB6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHjR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHjh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHjx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHkB6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHkR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHkh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHkx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHlB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHlR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHlh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHlx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MgHmB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Jj9usFC7EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHmR6SEeCkz5PP4vZT5g" x="446" y="202" width="100" height="226"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MgHsB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHsR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHsh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHsx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHtB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHtR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHth6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MgHtx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHuB6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHuR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHuh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHux6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHvB6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHvR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHvh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHvx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgHwB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgHwR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgHwh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHwx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MgHxB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_5HEaAFFgEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgHxR6SEeCkz5PP4vZT5g" x="284" y="202" width="100" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MgHxh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHxx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHyB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHyR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHyh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgHyx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgHzB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MgHzR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MgugB6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MgugR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mgugh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mgugx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MguhB6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MguhR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mguhh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mguhx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MguiB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MguiR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mguih6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mguix6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MgujB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sq-yMFCvEdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgujR6SEeCkz5PP4vZT5g" x="293" y="365" width="100" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mgujh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mgujx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgukB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MgukR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mgukh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mgukx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MgulB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MgulR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mgulh6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mgulx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgumB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgumR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mgumh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mgumx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MgunB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MgunR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mgunh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mgunx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MguoB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MguoR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Mguoh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_qIyBkFC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mguox6SEeCkz5PP4vZT5g" x="-14" y="202" width="100" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mguuh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mguux6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MguvB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MguvR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mguvh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mguvx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MguwB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MguwR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mguwh6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mguwx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MguxB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MguxR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mguxh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mguxx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MguyB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MguyR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mguyh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mguyx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MguzB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MguzR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Mguzh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_dhMBIFF2EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mguzx6SEeCkz5PP4vZT5g" x="116" y="202" width="100" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mgu0B6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mgu0R6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mgu0h6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mgu0x6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mgu1B6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mgu1R6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MhVkB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVkR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MhVkh6SEeCkz5PP4vZT5g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MhVkx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MhVlB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MhVlR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MhVlh6SEeCkz5PP4vZT5g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MhVlx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MhVmB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MhVmR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MhVmh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MhVmx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MhVnB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MhVnR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MhVnh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_D8njME_gEdy2tpS719xBwQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MhVnx6SEeCkz5PP4vZT5g" x="122" y="364" width="100" height="59"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MhVoB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_soXY0C-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MhVoR6SEeCkz5PP4vZT5g" type="4008" source="_3MfgbR6SEeCkz5PP4vZT5g" target="_3Mfggx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVoh6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVox6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVpB6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVpR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MhVph6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_wNG7gFC3EdyqzLG48ixyqA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MhVpx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVqB6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVqR6SEeCkz5PP4vZT5g" id="(0.06294416243654823,0.72)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MhVqh6SEeCkz5PP4vZT5g" type="4008" source="_3MfgbR6SEeCkz5PP4vZT5g" target="_3MfgmR6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVqx6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVrB6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVrR6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVrh6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MhVrx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_whFAYFC3EdyqzLG48ixyqA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MhVsB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVsR6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVsh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MhVsx6SEeCkz5PP4vZT5g" type="4008" source="_3MfgbR6SEeCkz5PP4vZT5g" target="_3Mfgrx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVtB6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVtR6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVth6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVtx6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MhVuB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_z0-aEFC3EdyqzLG48ixyqA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MhVuR6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVuh6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVux6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MhVvB6SEeCkz5PP4vZT5g" type="4008" source="_3MgHsB6SEeCkz5PP4vZT5g" target="_3Mfggx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVvR6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVvh6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVvx6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVwB6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MhVwR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_FQwvsFFhEdyjobZYtXo9NQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MhVwh6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVwx6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVxB6SEeCkz5PP4vZT5g" id="(0.6985507246376812,0.9491525423728814)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MhVxR6SEeCkz5PP4vZT5g" type="4008" source="_3MgHsB6SEeCkz5PP4vZT5g" target="_3MgHhB6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVxh6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVxx6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MhVyB6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MhVyR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MhVyh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_Gyg2UFFhEdyjobZYtXo9NQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MhVyx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MhVzB6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8oB6SEeCkz5PP4vZT5g" id="(0.13,0.08695652173913043)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3Mh8oR6SEeCkz5PP4vZT5g" type="4008" source="_3MgHsB6SEeCkz5PP4vZT5g" target="_3MgHxh6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh8oh6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mh8ox6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh8pB6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mh8pR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Mh8ph6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_OztsoFFhEdyjobZYtXo9NQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Mh8px6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8qB6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8qR6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3Mh8qh6SEeCkz5PP4vZT5g" type="4008" source="_3Mgujh6SEeCkz5PP4vZT5g" target="_3Mfggx6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh8qx6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mh8rB6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh8rR6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mh8rh6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Mh8rx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_s6W6oFFiEdyjobZYtXo9NQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Mh8sB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8sR6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8sh6SEeCkz5PP4vZT5g" id="(0.263768115942029,0.7627118644067796)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3Mh8sx6SEeCkz5PP4vZT5g" type="4008" source="_3MgHhB6SEeCkz5PP4vZT5g" target="_3Mfggx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh8tB6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mh8tR6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh8th6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mh8tx6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Mh8uB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_tfdf4FFvEdyjobZYtXo9NQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Mh8uR6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8uh6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8ux6SEeCkz5PP4vZT5g" id="(0.9208121827411168,0.9)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3Mh8xR6SEeCkz5PP4vZT5g" type="4008" source="_3Mguuh6SEeCkz5PP4vZT5g" target="_3Mfggx6SEeCkz5PP4vZT5g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh8xh6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mh8xx6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh8yB6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mh8yR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Mh8yh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_nORxgFF2EdyxP5ejovTmBw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Mh8yx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8zB6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mh8zR6SEeCkz5PP4vZT5g" id="(0.45072463768115945,0.8135593220338984)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Location xmi:id="_3Mh8zh6SEeCkz5PP4vZT5g" x="-139" y="299"/>
+ <notation:Size xmi:id="_3Mh8zx6SEeCkz5PP4vZT5g" width="985" height="100"/>
+ <notation:Location xmi:id="_3Mh80B6SEeCkz5PP4vZT5g" x="-140" y="149"/>
+ <notation:Location xmi:id="_3Mh80R6SEeCkz5PP4vZT5g" x="-1" y="470"/>
+ <notation:Location xmi:id="_3Mh80h6SEeCkz5PP4vZT5g" x="-142" y="470"/>
+ <notation:Size xmi:id="_3Mh80x6SEeCkz5PP4vZT5g" width="100" height="322"/>
+ <notation:Location xmi:id="_3Mh81B6SEeCkz5PP4vZT5g" x="713" y="306"/>
+ <notation:Location xmi:id="_3Mh81R6SEeCkz5PP4vZT5g" x="203" y="472"/>
+ <notation:Location xmi:id="_3Mh81h6SEeCkz5PP4vZT5g" x="517" y="304"/>
+ <notation:Location xmi:id="_3Mh81x6SEeCkz5PP4vZT5g" x="517" y="438"/>
+ <notation:Location xmi:id="_3Mh82B6SEeCkz5PP4vZT5g" x="-10" y="299"/>
+ <notation:Location xmi:id="_3Mh82R6SEeCkz5PP4vZT5g" x="336" y="-5"/>
+ <notation:Location xmi:id="_3Mh82h6SEeCkz5PP4vZT5g" x="120" y="300"/>
+ <notation:Location xmi:id="_3Mh82x6SEeCkz5PP4vZT5g" x="528" y="-7"/>
+ <notation:Diagram xmi:id="_3Mh83B6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Synchronization classes : details" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3Mh83R6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mh83h6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mh83x6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mh84B6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mh84R6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mh84h6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mh84x6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mh85B6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mh85R6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MijsB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MijsR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mijsh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mijsx6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MijtB6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XeDIoFjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgh04FjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_FFwlYFC4EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MijtR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mijth6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_FQyJoFC4EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mijtx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MijuB6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_VNO_QFC4EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MijuR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mijuh6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_hZUhoFC4EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mijux6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MijvB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MijvR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mijvh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mijvx6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MijwB6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MijwR6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mijwh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Mijwx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_jXTGsFC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MijxB6SEeCkz5PP4vZT5g" x="39" y="30" width="313" height="114"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MijxR6SEeCkz5PP4vZT5g" type="2012" fillColor="16634574" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mijxh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mijxx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MijyB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MijyR6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mijyh6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mijyx6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MijzB6SEeCkz5PP4vZT5g" type="5038"/>
+ <element xmi:type="uml:Comment" href="osal.uml#_MY8NMFC6EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MijzR6SEeCkz5PP4vZT5g" x="416" y="39" width="223" height="59"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mijzh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mijzx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mij0B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mij0R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mij0h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mij0x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mij1B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mij1R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mij1h6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3Mij1x6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_IAWtAFFiEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mij2B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mij2R6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_IEFWcFFiEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mij2h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mij2x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mij3B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mij3R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mij3h6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3Mij3x6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XeDvsFjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XgjDAFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_df1i0FFhEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mij4B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mij4R6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XeDvsljfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XgjqEFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_dnb_oFFhEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mij4h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mij4x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_du4rcFFhEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mij5B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mij5R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mij5h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mij5x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mij6B6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mij6R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mij6h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mij6x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Mij7B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_5HEaAFFgEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mij7R6SEeCkz5PP4vZT5g" x="39" y="182" width="313" height="127"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mij7h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mij7x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mij8B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mij8R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mij8h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mij8x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mij9B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mij9R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mij9h6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3Mij9x6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_8z5vwFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjKwB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjKwR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_87gMkFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjKwh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjKwx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_9BdqoFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjKxB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MjKxR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MjKxh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MjKxx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MjKyB6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MjKyR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uqZ6gFjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uuWmYFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_F6fWQFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjKyh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjKyx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w8J6sFjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xNFSoFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_GFqrgFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjKzB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjKzR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_GNaSQFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjKzh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjKzx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_GSVOgFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK0B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK0R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_GZx6UFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK0h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK0x6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytxpUFjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yyWnUFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_Ge2AgFFuEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK1B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MjK1R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MjK1h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MjK1x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MjK2B6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MjK2R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MjK2h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MjK2x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MjK3B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_qIyBkFC3EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MjK3R6SEeCkz5PP4vZT5g" x="416" y="130" width="313" height="183"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK3h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MjK3x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MjK4B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MjK4R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MjK4h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MjK4x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MjK5B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MjK5R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MjK5h6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MjK5x6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_PL5ogFF0EdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK6B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MjK6R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MjK6h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MjK6x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MjK7B6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MjK7R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_4NODEFFvEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK7h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK7x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_4cRLsFFvEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK8B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK8R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_-Hj6kFFvEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK8h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK8x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_DEz3sFFwEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK9B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK9R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_Jid3oFFwEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK9h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK9x6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1QhS4FjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Q7ikFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_OEl_AFFwEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK-B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK-R6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1Qgr0FjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Q67gFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_W33LcFFwEdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK-h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MjK-x6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1Qh58FjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Q8JoFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_CFHYcFF0EdyjobZYtXo9NQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MjK_B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MjK_R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MjK_h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MjK_x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MjLAB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MjLAR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mjx0B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mjx0R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Mjx0h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Jj9usFC7EdyqzLG48ixyqA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mjx0x6SEeCkz5PP4vZT5g" x="39" y="338" width="313" height="170"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx1B6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mjx1R6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mjx1h6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mjx1x6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mjx2B6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mjx2R6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mjx2h6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mjx2x6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mjx3B6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx3R6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_Ce-GEFF4EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx3h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mjx3x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mjx4B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mjx4R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mjx4h6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx4x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_tz4-IFF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx5B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx5R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_t6TIIFF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx5h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx5x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_uA2cEFF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx6B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx6R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_uHG1EFF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx6h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx6x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_uL4AUFF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx7B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx7R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_uQNGsFF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx7h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx7x6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_uVHb4FF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx8B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx8R6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_-EmMgFF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx8h6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Mjx8x6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1QihAVjfEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Q8wsFjfEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_-N-yAFF3EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Mjx9B6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mjx9R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mjx9h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mjx9x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mjx-B6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mjx-R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mjx-h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mjx-x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3Mjx_B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_dhMBIFF2EdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mjx_R6SEeCkz5PP4vZT5g" x="416" y="338" width="313" height="183"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3Mjx_h6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_soXY0C-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3Mjx_x6SEeCkz5PP4vZT5g" type="4013" source="_3MijxR6SEeCkz5PP4vZT5g" target="_3Mh83R6SEeCkz5PP4vZT5g" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MjyAB6SEeCkz5PP4vZT5g"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MjyAR6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MjyAh6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MjyAx6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MjyBB6SEeCkz5PP4vZT5g" width="414" height="182"/>
+ <notation:Location xmi:id="_3MjyBR6SEeCkz5PP4vZT5g" x="39" y="30"/>
+ <notation:Size xmi:id="_3MjyBh6SEeCkz5PP4vZT5g" width="292" height="109"/>
+ <notation:Location xmi:id="_3MjyBx6SEeCkz5PP4vZT5g" x="600" y="91"/>
+ <notation:Size xmi:id="_3MjyCB6SEeCkz5PP4vZT5g" width="318" height="127"/>
+ <notation:Location xmi:id="_3MjyCR6SEeCkz5PP4vZT5g" x="568" y="227"/>
+ <notation:Size xmi:id="_3MjyCh6SEeCkz5PP4vZT5g" width="318" height="267"/>
+ <notation:Location xmi:id="_3MjyCx6SEeCkz5PP4vZT5g" x="568" y="376"/>
+ <notation:Size xmi:id="_3MjyDB6SEeCkz5PP4vZT5g" width="317" height="195"/>
+ <notation:Location xmi:id="_3MjyDR6SEeCkz5PP4vZT5g" x="571" y="670"/>
+ <notation:Size xmi:id="_3MjyDh6SEeCkz5PP4vZT5g" width="313" height="224"/>
+ <notation:Location xmi:id="_3MjyDx6SEeCkz5PP4vZT5g" x="573" y="906"/>
+ <notation:Diagram xmi:id="_3MjyEB6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Tracing classes : include relationships" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MjyER6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MjyEh6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MjyEx6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MjyFB6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MkY4B6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MkY4R6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MkY4h6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MkY4x6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkY5B6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkY5R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkY5h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkY5x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkY6B6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkY6R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkY6h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkY6x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkY7B6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkY7R6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkY7h6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkY7x6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MkY8B6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_5InEkFGAEdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkY8R6SEeCkz5PP4vZT5g" x="39" y="195" width="100" height="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MkY8h6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MkY8x6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MkY9B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MkY9R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MkY9h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MkY9x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MkY-B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MkY-R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkY-h6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkY-x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkY_B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkY_R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkY_h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkY_x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkZAB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkZAR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkZAh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkZAx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkZBB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkZBR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MkZBh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkZBx6SEeCkz5PP4vZT5g" x="39" y="78" width="100" height="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MkZCB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MkZCR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MkZCh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MkZCx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MkZDB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MkZDR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MkZDh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MkZDx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkZEB6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkZER6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkZEh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkZEx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkZFB6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkZFR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkZFh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkZFx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MkZGB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MkZGR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MkZGh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkZGx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MkZHB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1DM54DxBEdyfAeav5abbAw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MkZHR6SEeCkz5PP4vZT5g" x="39" y="312" width="482" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MkZHh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MkZHx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mk_8B6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mk_8R6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mk_8h6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Mk_8x6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Mk_9B6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Mk_9R6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mk_9h6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mk_9x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mk_-B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mk_-R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mk_-h6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mk_-x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3Mk__B6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Mk__R6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3Mk__h6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3Mk__x6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MlAAB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlAAR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MlAAh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_0TXx4DUOEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlAAx6SEeCkz5PP4vZT5g" x="429" y="78" width="92" height="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MlABB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlABR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlABh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlABx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlACB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlACR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlACh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlACx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MlADB6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MlADR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MlADh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlADx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MlAEB6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MlAER6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MlAEh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlAEx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MlAFB6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MlAFR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MlAFh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlAFx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MlAGB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlAGR6SEeCkz5PP4vZT5g" x="299" y="78" width="100" height="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MlAGh6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlAGx6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlAHB6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlAHR6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlAHh6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlAHx6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlAIB6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlAIR6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MlAIh6SEeCkz5PP4vZT5g" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MlAIx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MlAJB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlAJR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MlAJh6SEeCkz5PP4vZT5g" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MlAJx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MlAKB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlAKR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MlAKh6SEeCkz5PP4vZT5g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MlAKx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MlALB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlALR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MlALh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlALx6SEeCkz5PP4vZT5g" x="169" y="78" width="100" height="63"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MlAMB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_w86XMC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3MlAMR6SEeCkz5PP4vZT5g" type="4008" source="_3MjyER6SEeCkz5PP4vZT5g" target="_3MkY8h6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlAMh6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlAMx6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlANB6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlANR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MlANh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_JUZWsFGBEdyxP5ejovTmBw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MlANx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlAOB6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlAOR6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MlAOh6SEeCkz5PP4vZT5g" type="4008" source="_3MkZCB6SEeCkz5PP4vZT5g" target="_3MlABB6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnAB6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnAR6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnAh6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnAx6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MlnBB6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_NclwUFIfEdy7g9CjxdN7jw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MlnBR6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlnBh6SEeCkz5PP4vZT5g" id="(0.6347305389221557,0.05970149253731343)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlnBx6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MlnCB6SEeCkz5PP4vZT5g" type="4008" source="_3MkZCB6SEeCkz5PP4vZT5g" target="_3MjyER6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnCR6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnCh6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnCx6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnDB6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MlnDR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_OMbR0FIfEdy7g9CjxdN7jw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MlnDh6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlnDx6SEeCkz5PP4vZT5g" id="(0.11377245508982035,0.16417910447761194)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlnEB6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MlnER6SEeCkz5PP4vZT5g" type="4008" source="_3MkZCB6SEeCkz5PP4vZT5g" target="_3MkZHh6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnEh6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnEx6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnFB6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnFR6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MlnFh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_RnxXUFIfEdy7g9CjxdN7jw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MlnFx6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlnGB6SEeCkz5PP4vZT5g" id="(0.8862275449101796,0.08955223880597014)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlnGR6SEeCkz5PP4vZT5g"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3MlnGh6SEeCkz5PP4vZT5g" type="4008" source="_3MkZCB6SEeCkz5PP4vZT5g" target="_3MlAGh6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnGx6SEeCkz5PP4vZT5g" visible="false" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnHB6SEeCkz5PP4vZT5g" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnHR6SEeCkz5PP4vZT5g" visible="false" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnHh6SEeCkz5PP4vZT5g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_3MlnHx6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Dependency" href="osal.uml#_XHvnAFIfEdy7g9CjxdN7jw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3MlnIB6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlnIR6SEeCkz5PP4vZT5g" id="(0.3652694610778443,0.05970149253731343)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3MlnIh6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3MlnIx6SEeCkz5PP4vZT5g" width="218" height="100"/>
+ <notation:Location xmi:id="_3MlnJB6SEeCkz5PP4vZT5g" x="291" y="259"/>
+ <notation:Location xmi:id="_3MlnJR6SEeCkz5PP4vZT5g" x="412" y="106"/>
+ <notation:Size xmi:id="_3MlnJh6SEeCkz5PP4vZT5g" width="569" height="100"/>
+ <notation:Location xmi:id="_3MlnJx6SEeCkz5PP4vZT5g" x="280" y="441"/>
+ <notation:Location xmi:id="_3MlnKB6SEeCkz5PP4vZT5g" x="760" y="107"/>
+ <notation:Location xmi:id="_3MlnKR6SEeCkz5PP4vZT5g" x="649" y="107"/>
+ <notation:Location xmi:id="_3MlnKh6SEeCkz5PP4vZT5g" x="531" y="106"/>
+ <notation:Diagram xmi:id="_3MlnKx6SEeCkz5PP4vZT5g" type="PapyrusUMLClassDiagram" name="Tracing classes : details" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_3MlnLB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlnLR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlnLh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlnLx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlnMB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MlnMR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MlnMh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MlnMx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MlnNB6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MlnNR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_rqVygFGJEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnNh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MlnNx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MlnOB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MlnOR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MlnOh6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MlnOx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hsl3gljeEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyLiIVjeEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_IM-wwFGDEdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MlnPB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MlnPR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Hsl3gFjeEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyLiIFjeEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_IWOMUFGDEdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOEB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOER6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HslQcljeEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyK7EVjeEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_IcxgQFGDEdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOEh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOEx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HskCUFjeEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyKUAVjeEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_IiSSYFGDEdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOFB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOFR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HslQcFjeEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyK7EFjeEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_IoGmgFGDEdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOFh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MmOFx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MmOGB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MmOGR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MmOGh6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MmOGx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MmOHB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MmOHR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MmOHh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_5InEkFGAEdyxP5ejovTmBw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MmOHx6SEeCkz5PP4vZT5g" x="94" y="52" width="395" height="154"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOIB6SEeCkz5PP4vZT5g" type="2008" fillColor="14088696" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MmOIR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MmOIh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MmOIx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MmOJB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MmOJR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MmOJh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MmOJx6SEeCkz5PP4vZT5g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MmOKB6SEeCkz5PP4vZT5g" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3MmOKR6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#__ziOwFIgEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOKh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOKx6SEeCkz5PP4vZT5g" type="3012">
+ <element xmi:type="uml:Property" href="osal.uml#_UyTHsFIhEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOLB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MmOLR6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MmOLh6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MmOLx6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MmOMB6SEeCkz5PP4vZT5g" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3MmOMR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JZihgFjeEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JaDe4FjeEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_n7UR4FIfEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOMh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOMx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_oFTUUFIfEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmONB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmONR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_BsdUsFIgEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmONh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmONx6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_TAN7gFIgEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOOB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOOR6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HsiNIFjeEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyJs8FjeEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_dlyMAFIgEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOOh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOOx6SEeCkz5PP4vZT5g" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HsjbQFjeEeKWlJhcyT0hJA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HyKUAFjeEeKWlJhcyT0hJA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="osal.uml#_qIrE0FIgEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOPB6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOPR6SEeCkz5PP4vZT5g" type="3013">
+ <element xmi:type="uml:Operation" href="osal.uml#_7hM24FIgEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3MmOPh6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MmOPx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MmOQB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MmOQR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_3MmOQh6SEeCkz5PP4vZT5g" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_3MmOQx6SEeCkz5PP4vZT5g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_3MmORB6SEeCkz5PP4vZT5g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MmORR6SEeCkz5PP4vZT5g"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3MmORh6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Class" href="osal.uml#_1DM54DxBEdyfAeav5abbAw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MmORx6SEeCkz5PP4vZT5g" x="79" y="254" width="400" height="285"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3MmOSB6SEeCkz5PP4vZT5g" type="2012" fillColor="16634574" lineColor="3112093">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MmOSR6SEeCkz5PP4vZT5g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MmOSh6SEeCkz5PP4vZT5g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MmOSx6SEeCkz5PP4vZT5g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MmOTB6SEeCkz5PP4vZT5g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3MmOTR6SEeCkz5PP4vZT5g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3MmOTh6SEeCkz5PP4vZT5g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3MmOTx6SEeCkz5PP4vZT5g" type="5038"/>
+ <element xmi:type="uml:Comment" href="osal.uml#_qhfYAFIhEdy7g9CjxdN7jw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3MmOUB6SEeCkz5PP4vZT5g" x="606" y="316" width="173" height="84"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_3MmOUR6SEeCkz5PP4vZT5g"/>
+ <element xmi:type="uml:Package" href="osal.uml#_w86XMC-OEdySSa8YESkO2w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_3Mm1IB6SEeCkz5PP4vZT5g" type="4013" source="_3MmOSB6SEeCkz5PP4vZT5g" target="_3MmOIB6SEeCkz5PP4vZT5g" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Mm1IR6SEeCkz5PP4vZT5g"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Mm1Ih6SEeCkz5PP4vZT5g" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mm1Ix6SEeCkz5PP4vZT5g"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Mm1JB6SEeCkz5PP4vZT5g"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Size xmi:id="_3Mm1JR6SEeCkz5PP4vZT5g" width="395" height="154"/>
+ <notation:Location xmi:id="_3Mm1Jh6SEeCkz5PP4vZT5g" x="94" y="52"/>
+ <notation:Size xmi:id="_3Mm1Jx6SEeCkz5PP4vZT5g" width="400" height="285"/>
+ <notation:Location xmi:id="_3Mm1KB6SEeCkz5PP4vZT5g" x="79" y="254"/>
+ <notation:Size xmi:id="_3Mm1KR6SEeCkz5PP4vZT5g" width="173" height="84"/>
+ <notation:Location xmi:id="_3Mm1Kh6SEeCkz5PP4vZT5g" x="606" y="316"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.uml
new file mode 100644
index 00000000000..3a0c6cb68d9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/osal.uml
@@ -0,0 +1,10542 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:l2="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_ROTQYC-OEdySSa8YESkO2w" name="OS_AL">
+ <packageImport xmi:id="_ROTQYS-OEdySSa8YESkO2w">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_Ac-YUDRcEdyDwaY3iUxzzA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_DV8nkBv8EduZN5aJJITI5w"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_mU3acC-OEdySSa8YESkO2w" name="Communication">
+ <ownedComment xmi:id="_VAllAFClEdyTutVzffQTmQ" annotatedElement="_Nz2RgFClEdyTutVzffQTmQ">
+ <body>Declared in MessageBuffer.h,&#xD;
+but outside of the class Section</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_LbxUEDRPEdy1p4IpsoZYqA" name="MessageBuffer">
+ <ownedComment xmi:id="_kVFp0FClEdyTutVzffQTmQ" annotatedElement="_LbxUEDRPEdy1p4IpsoZYqA">
+ <body>The message buffer is used to store different data types that can be&#xD;
+added to (read from) the buffer by means of overloaded &lt;&lt; (>>) operators.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_iJ-LMFCnEdyTutVzffQTmQ" name="m_buffer" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mjdT8FCnEdyTutVzffQTmQ" value="800"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mjmd4FCnEdyTutVzffQTmQ" value="800"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kc5QEFCnEdyTutVzffQTmQ" value=""/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iRkoAFCnEdyTutVzffQTmQ" name="m_reader_ptr" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iSBT8FCnEdyTutVzffQTmQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iSBT8VCnEdyTutVzffQTmQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pP3P0FCnEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iVcbYFCnEdyTutVzffQTmQ" name="m_writer_ptr" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iV5HUFCnEdyTutVzffQTmQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iV5HUVCnEdyTutVzffQTmQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sXPQcFCnEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iY4J4FCnEdyTutVzffQTmQ" name="m_data_start" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_YYWiwByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iZUOwFCnEdyTutVzffQTmQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iZd_wFCnEdyTutVzffQTmQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_viMJgFCnEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_98a-cFCnEdyTutVzffQTmQ" name="MessageBuffer" specification="_9ececFCmEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> m_data_start = m_buffer;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JZnvoFCqEdyTutVzffQTmQ" name="sizeReader" specification="_UH_6sFCmEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> return (m_reader_ptr - m_data_start);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LTXfgFCqEdyTutVzffQTmQ" name="sizeWriter" specification="_UVQTkFCmEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> return (m_writer_ptr - m_data_start);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Mz7TUFCqEdyTutVzffQTmQ" name="resetReader" specification="_9XQt0FClEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> m_reader_ptr = m_data_start;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_N_7MYFCqEdyTutVzffQTmQ" name="resetWriter" specification="_FSpQAFCmEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> m_writer_ptr = m_data_start;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PoOm8FCqEdyTutVzffQTmQ" name="reset" specification="_Olf7cFCmEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> resetReader ();&#xD;
+ resetWriter ();&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_miDeYFCqEdyTutVzffQTmQ" name="MessageBuffer" specification="_3v1yUFClEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> m_data_start = m_buffer;&#xD;
+ reset ();&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pMOloFCqEdyTutVzffQTmQ" name="MessageBuffer" specification="_oHiAsFClEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> memcpy (m_buffer, msgBuf.m_buffer, MAX_MESSAGE_SIZE);&#xD;
+ // m_data_start is modified by a subclass, thus, we cannot simply&#xD;
+ // reset m_data_start to m_buffer&#xD;
+ m_data_start = m_buffer + (msgBuf.m_data_start - msgBuf.m_buffer);&#xD;
+ m_reader_ptr = m_buffer + (msgBuf.m_reader_ptr - msgBuf.m_buffer);&#xD;
+ m_writer_ptr = m_buffer + (msgBuf.m_writer_ptr - msgBuf.m_buffer);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_E6W5kFCrEdyTutVzffQTmQ" name="addToBuffer" specification="_g-GDYFCmEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> if (m_writer_ptr + size > m_buffer + MAX_MESSAGE_SIZE) {&#xD;
+ OSAL_ERROR(&quot;Message buffer too small&quot;);&#xD;
+ }&#xD;
+ memcpy (m_writer_ptr, ptr, size);&#xD;
+ // keep alignment of pointers&#xD;
+ m_writer_ptr += (size + MB_ALIGNMENT - 1) &amp; (- MB_ALIGNMENT);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Gkwl4FCrEdyTutVzffQTmQ" name="getFromBuffer" specification="_viKJwFCmEdyTutVzffQTmQ">
+ <language>C/C++</language>
+ <body> if (m_reader_ptr + size > m_buffer + MAX_MESSAGE_SIZE) {&#xD;
+ OSAL_ERROR(&quot;read past end of buffer&quot;);&#xD;
+ }&#xD;
+ memcpy (ptr, m_reader_ptr, size);&#xD;
+ m_reader_ptr += (size + MB_ALIGNMENT - 1) &amp; (- MB_ALIGNMENT);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p3s1wDR1EdypGbuyt3_DaA" name="operator&lt;&lt;" specification="_lKriQDRPEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>msg.addToBuffer( &amp;bstr.nbytes, sizeof (size_t));&#xD;
+msg.addToBuffer( bstr.charTable, bstr.nbytes+1);&#xD;
+return msg;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_s5RwYDR1EdypGbuyt3_DaA" name="operator>>" specification="_m8rEUDRPEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>unsigned int length;&#xD;
+msg.getFromBuffer (&amp;length, sizeof (size_t));&#xD;
+if (length &lt; bstr.charTableSize) {&#xD;
+ msg.getFromBuffer (bstr.charTable, length+1);&#xD;
+ bstr.nbytes = length;&#xD;
+ bstr.current = bstr.charTable;&#xD;
+}&#xD;
+return msg;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_oHiAsFClEdyTutVzffQTmQ" name="MessageBuffer" method="_pMOloFCqEdyTutVzffQTmQ">
+ <ownedComment xmi:id="_wvBa8FClEdyTutVzffQTmQ" annotatedElement="_oHiAsFClEdyTutVzffQTmQ">
+ <body>Copy constructor for a message buffer. Needed to adjust&#xD;
+ read and write pointers after copying</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_qqshAFClEdyTutVzffQTmQ" name="msgBuf" type="_LbxUEDRPEdy1p4IpsoZYqA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qq_b8FClEdyTutVzffQTmQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qrJM8FClEdyTutVzffQTmQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_t9si0FClEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_3v1yUFClEdyTutVzffQTmQ" name="MessageBuffer" method="_miDeYFCqEdyTutVzffQTmQ"/>
+ <ownedOperation xmi:id="_9XQt0FClEdyTutVzffQTmQ" name="resetReader" method="_Mz7TUFCqEdyTutVzffQTmQ">
+ <ownedComment xmi:id="_BilewFCmEdyTutVzffQTmQ" annotatedElement="_9XQt0FClEdyTutVzffQTmQ">
+ <body>Reset the reader pointer into the message buffer</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FSpQAFCmEdyTutVzffQTmQ" name="resetWriter" method="_N_7MYFCqEdyTutVzffQTmQ">
+ <ownedComment xmi:id="_HngOkFCmEdyTutVzffQTmQ" annotatedElement="_FSpQAFCmEdyTutVzffQTmQ">
+ <body>Reset the writer pointer into the message buffer</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Olf7cFCmEdyTutVzffQTmQ" name="reset" method="_PoOm8FCqEdyTutVzffQTmQ">
+ <ownedComment xmi:id="_RcogoFCmEdyTutVzffQTmQ" annotatedElement="_Olf7cFCmEdyTutVzffQTmQ">
+ <body>Reset the reader and writer pointer into the message buffer</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UH_6sFCmEdyTutVzffQTmQ" name="sizeReader" method="_JZnvoFCqEdyTutVzffQTmQ">
+ <ownedParameter xmi:id="_ZMP3sFCmEdyTutVzffQTmQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZMiyoFCmEdyTutVzffQTmQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZM1tkFCmEdyTutVzffQTmQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_aRY60FCmEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVQTkFCmEdyTutVzffQTmQ" name="sizeWriter" method="_LTXfgFCqEdyTutVzffQTmQ">
+ <ownedParameter xmi:id="_akA74FCmEdyTutVzffQTmQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_akT20FCmEdyTutVzffQTmQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_akmxwFCmEdyTutVzffQTmQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_b0yAMFCmEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_g-GDYFCmEdyTutVzffQTmQ" name="addToBuffer" method="_E6W5kFCrEdyTutVzffQTmQ">
+ <ownedComment xmi:id="_ifZeEFCmEdyTutVzffQTmQ" annotatedElement="_g-GDYFCmEdyTutVzffQTmQ">
+ <body>Method used to add a value to the buffer. Don't use this&#xD;
+ method but the overloaded &lt;&lt; operator.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_lT2isFCmEdyTutVzffQTmQ" name="ptr">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lZNj0FCmEdyTutVzffQTmQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lZXU0FCmEdyTutVzffQTmQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_mumpcFCmEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ljDcUFCmEdyTutVzffQTmQ" name="size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ljWXQFCmEdyTutVzffQTmQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ljgIQFCmEdyTutVzffQTmQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oYszwFCmEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_viKJwFCmEdyTutVzffQTmQ" name="getFromBuffer" method="_Gkwl4FCrEdyTutVzffQTmQ">
+ <ownedComment xmi:id="_yFLgIFCmEdyTutVzffQTmQ" annotatedElement="_viKJwFCmEdyTutVzffQTmQ">
+ <body>Method used retrieve a value from the buffer. Don't use this&#xD;
+ method but the overloaded >> operator.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_04JXAFCmEdyTutVzffQTmQ" name="ptr">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_04mC8FCmEdyTutVzffQTmQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_04vM4FCmEdyTutVzffQTmQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2gmikFCmEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_1B-ocFCmEdyTutVzffQTmQ" name="size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1CRjYFCmEdyTutVzffQTmQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1CkeUFCmEdyTutVzffQTmQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_4bh-MFCmEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_9ececFCmEdyTutVzffQTmQ" name="MessageBuffer" visibility="protected" method="_98a-cFCnEdyTutVzffQTmQ">
+ <ownedComment xmi:id="_Rg-_sFCnEdyTutVzffQTmQ" annotatedElement="_9ececFCmEdyTutVzffQTmQ">
+ <body>This constructor is there fore efficiency reasons: it does not&#xD;
+ initialize the reader and writer pointers. It is used by subclasses&#xD;
+ that modify the data_start and therefore need to invoke reset&#xD;
+ afterwards. Thus, it prevents that reset is called multiple times.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_USmywFCnEdyTutVzffQTmQ" name="dummy" type="_Nz2RgFClEdyTutVzffQTmQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_US5tsFCnEdyTutVzffQTmQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UTDesFCnEdyTutVzffQTmQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_VtgDcFCnEdyTutVzffQTmQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_lKriQDRPEdy1p4IpsoZYqA" name="operator&lt;&lt;" method="_p3s1wDR1EdypGbuyt3_DaA">
+ <ownedComment xmi:id="_OgIngDRQEdy1p4IpsoZYqA" annotatedElement="_lKriQDRPEdy1p4IpsoZYqA">
+ <body>declare specific marshalling operators for BString, since&#xD;
+(1) this is more efficient&#xD;
+(2) a memory copy based marshalling would copy pointers that become&#xD;
+ bogus in a different address space.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_t_JBgDRPEdy1p4IpsoZYqA" name="param_0" type="_LbxUEDRPEdy1p4IpsoZYqA" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wr2fYDRPEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wr2fYTRPEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wsAQYDRPEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_1yC9IDRPEdy1p4IpsoZYqA" name="msg" type="_LbxUEDRPEdy1p4IpsoZYqA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4NBKwDRPEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4NBKwTRPEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_4NK7wDRPEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_132qMDRPEdy1p4IpsoZYqA" name="bstr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9YIkwDRPEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9YRusDRPEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_9YRusTRPEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_m8rEUDRPEdy1p4IpsoZYqA" name="operator>>" method="_s5RwYDR1EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_BTXrQDRQEdy1p4IpsoZYqA" name="param_0" type="_LbxUEDRPEdy1p4IpsoZYqA" direction="return"/>
+ <ownedParameter xmi:id="_BWpowDRQEdy1p4IpsoZYqA" name="msg" type="_LbxUEDRPEdy1p4IpsoZYqA"/>
+ <ownedParameter xmi:id="_BaOhMDRQEdy1p4IpsoZYqA" name="bstr" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_M5gBkFCDEdy2tpS719xBwQ" clientDependency="_LGiAkFCuEdyqzLG48ixyqA" name="p_Communication"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_Nz2RgFClEdyTutVzffQTmQ" name="MessageBufferEnum">
+ <ownedLiteral xmi:id="_RygfcFClEdyTutVzffQTmQ" name="NO_RESET"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:DataType" xmi:id="_ZiVqMFCrEdyTutVzffQTmQ" name="MessageHeader">
+ <ownedComment xmi:id="_v7_MwFCrEdyqzLG48ixyqA" annotatedElement="_ZiVqMFCrEdyTutVzffQTmQ">
+ <body>A Message Header that is prefixed to all messages</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_ypi_MFCrEdyqzLG48ixyqA" name="msgType" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yqI1EFCrEdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yqI1EVCrEdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1iuy0FCrEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_yuw2YFCrEdyqzLG48ixyqA" name="sender" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yu6nYFCrEdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yu6nYVCrEdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_4NnEsFCrEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_yzPGsFCrEdyqzLG48ixyqA" name="msgNumber" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yzryoFCrEdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yzryoVCrEdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6u8ZAFCrEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_y2EYQFCrEdyqzLG48ixyqA" name="length" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y2X6QFCrEdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y2X6QVCrEdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_8-O7EFCrEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_N361AFCsEdyqzLG48ixyqA" clientDependency="_YWeekFCsEdyqzLG48ixyqA _bWmnsFCsEdyqzLG48ixyqA" name="MessageWithHeader">
+ <ownedComment xmi:id="_d_xCUFCsEdyqzLG48ixyqA" annotatedElement="_N361AFCsEdyqzLG48ixyqA">
+ <body>This subtype of MessageBuffer adds a MessageHeader at the beginning.&#xD;
+For the sake of efficiency, the storage of the header is mapped directly&#xD;
+into the buffer (works only for homogeneous architectures).</body>
+ </ownedComment>
+ <generalization xmi:id="_TmRe8FCsEdyqzLG48ixyqA" general="_LbxUEDRPEdy1p4IpsoZYqA"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_l2PZ4FCtEdyqzLG48ixyqA" name="getHeader" specification="_JEUGoFCtEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> return (MessageHeader *) m_buffer;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_nd9loFCtEdyqzLG48ixyqA" name="setMsgType" specification="__McpoFCsEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> getHeader ()->msgType = msgType;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_o1lf4FCtEdyqzLG48ixyqA" name="isFromLocalZone" specification="_V5vg8FCtEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> return (getHeader ()->sender == ProDesc::getZoneNumber ());</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4CE4MVCtEdyqzLG48ixyqA" name="MessageWithHeader" specification="_i3atwFCsEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> m_data_start += sizeof (MessageHeader);&#xD;
+ reset ();&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9REFkVCtEdyqzLG48ixyqA" name="MessageWithHeader" specification="_cxNvEFCtEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> m_data_start += sizeof (MessageHeader);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__L2-UVCtEdyqzLG48ixyqA" name="MessageWithHeader" specification="_k-Am0FCsEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body></body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_A-TzYFCuEdyqzLG48ixyqA" name="initZoneNumber" specification="_44le4FCsEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> getHeader ()->sender = ProDesc::getZoneNumber ();</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_i3atwFCsEdyqzLG48ixyqA" name="MessageWithHeader" method="_4CE4MVCtEdyqzLG48ixyqA"/>
+ <ownedOperation xmi:id="_k-Am0FCsEdyqzLG48ixyqA" name="MessageWithHeader" method="__L2-UVCtEdyqzLG48ixyqA">
+ <ownedComment xmi:id="_m3yL4FCsEdyqzLG48ixyqA" annotatedElement="_k-Am0FCsEdyqzLG48ixyqA">
+ <body>define a copy constructor (which does nothing besides calling the&#xD;
+ copy constructor of the super class)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_sZUh0FCsEdyqzLG48ixyqA" name="msg" type="_N361AFCsEdyqzLG48ixyqA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sZ6XsFCsEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_saEIsFCsEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vLIiIFCsEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_44le4FCsEdyqzLG48ixyqA" name="initZoneNumber" method="_A-TzYFCuEdyqzLG48ixyqA">
+ <ownedComment xmi:id="_69q8EFCsEdyqzLG48ixyqA" annotatedElement="_44le4FCsEdyqzLG48ixyqA">
+ <body>needs to be called for each allocated instance. The initialization of&#xD;
+ the zone number has been removed from the constructor, since the zone&#xD;
+ number is not defined at compile time [todo: would that be a good&#xD;
+ idea?] and its initialization would not work for statically declared&#xD;
+ messages.&#xD;
+ initZoneNumber is called by Message's init function.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="__McpoFCsEdyqzLG48ixyqA" name="setMsgType" method="_nd9loFCtEdyqzLG48ixyqA">
+ <ownedComment xmi:id="_BjahAFCtEdyqzLG48ixyqA" annotatedElement="__McpoFCsEdyqzLG48ixyqA">
+ <body>set the message type (see MsgType constant definition in&#xD;
+ ToChannel</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_FWns4FCtEdyqzLG48ixyqA" name="msgType">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FXEY0FCtEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FXNiwFCtEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Gbd1EFCtEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_JEUGoFCtEdyqzLG48ixyqA" name="getHeader" method="_l2PZ4FCtEdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_KUMaIFCtEdyqzLG48ixyqA" name="param_0" type="_ZiVqMFCrEdyTutVzffQTmQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KUyQAFCtEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KU8BAFCtEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_L76l4FCtEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_V5vg8FCtEdyqzLG48ixyqA" name="isFromLocalZone" method="_o1lf4FCtEdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_ZPvMYFCtEdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZQCHUFCtEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZQVpUFCtEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ameV0FCtEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_cxNvEFCtEdyqzLG48ixyqA" name="MessageWithHeader" visibility="protected" method="_9REFkVCtEdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_eTRXsFCtEdyqzLG48ixyqA" name="dummy" type="_Nz2RgFClEdyTutVzffQTmQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eTuDoFCtEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eUA-kFCtEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_fziQkFCtEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_YWeekFCsEdyqzLG48ixyqA" name="FromMessageWithHeadertoMessageHeader" client="_N361AFCsEdyqzLG48ixyqA" supplier="_ZiVqMFCrEdyTutVzffQTmQ"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_bWmnsFCsEdyqzLG48ixyqA" name="FromMessageWithHeadertoProDesc" client="_N361AFCsEdyqzLG48ixyqA" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_LGiAkFCuEdyqzLG48ixyqA" name="Fromp_CommunicationtoBaseTypes" client="_M5gBkFCDEdy2tpS719xBwQ" supplier="_0TXx4DUOEdy0feurbW0fyQ"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_sq-yMFCvEdyqzLG48ixyqA" clientDependency="_xp3uEFCvEdyqzLG48ixyqA _0vA6EFCvEdyqzLG48ixyqA" name="SharedMemory">
+ <ownedAttribute xmi:id="_UCsbkFC0EdyqzLG48ixyqA" name="shmSize" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UC_WgFC0EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UDIgcFC0EdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_VVZZkFC0EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_qM2woFC0EdyqzLG48ixyqA" name="m_name" visibility="private" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w0M4EFC0EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w0M4EVC0EdyqzLG48ixyqA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_qTs_gFC0EdyqzLG48ixyqA" name="m_mutex" visibility="private" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0DeQcFC0EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0DoBcFC0EdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ymy3EFC0EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_VBgXwFC1EdyqzLG48ixyqA" name="m_key" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VBzSsFC1EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VB9DsFC1EdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_YQCwUFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_VL8GIFC1EdyqzLG48ixyqA" name="m_id" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VMYyEFC1EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VMYyEVC1EdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Z8rRQFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_VPz5gFC1EdyqzLG48ixyqA" name="classKey" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VQG0cFC1EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VQQlcFC1EdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dXub0FC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_gOHaIFC1EdyqzLG48ixyqA" name="m_address00" visibility="private" isUnique="false">
+ <ownedComment xmi:id="_vzw5UFC1EdyqzLG48ixyqA" annotatedElement="_gOHaIFC1EdyqzLG48ixyqA">
+ <body>start of the shared memory section</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gOkGEFC1EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gOtQAFC1EdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_mIKWsFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_gR1cgFC1EdyqzLG48ixyqA" name="m_address0" visibility="private" isUnique="false">
+ <ownedComment xmi:id="_xgYzMFC1EdyqzLG48ixyqA" annotatedElement="_gR1cgFC1EdyqzLG48ixyqA">
+ <body>start for user data within the shared memory section (after Mutex)</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gSI-gFC1EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gSI-gVC1EdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_nEzlIFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_gVRLAFC1EdyqzLG48ixyqA" name="m_address" visibility="private" isUnique="false">
+ <ownedComment xmi:id="_zeKHcFC1EdyqzLG48ixyqA" annotatedElement="_gVRLAFC1EdyqzLG48ixyqA">
+ <body>current address for new allocations</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gVkF8FC1EdyqzLG48ixyqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gVt28FC1EdyqzLG48ixyqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oNhgsFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_46GywFC1EdyqzLG48ixyqA" name="getAddress0" specification="_WZFykFCxEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> return m_address0;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7UyFcFC1EdyqzLG48ixyqA" name="getName" specification="_gRW4MFCxEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> return &amp;m_name;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_80JmcFC1EdyqzLG48ixyqA" name="getMutex" specification="_7F2OYFCxEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> return m_mutex;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__3W4wFC1EdyqzLG48ixyqA" name="_key" specification="_KxUW0FC0EdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> return m_key;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_BFvXcFC2EdyqzLG48ixyqA" name="_id" specification="_K3bl4FC0EdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> return m_id;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_CahZEFC2EdyqzLG48ixyqA" name="_shmSize" specification="_K8DAIFC0EdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> return shmSize;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DsohMFC2EdyqzLG48ixyqA" name="set_shmSize" specification="_LAqaYFC0EdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> shmSize = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VNNcAVC2EdyqzLG48ixyqA" name="SharedMemory" specification="_W9qUsFCwEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> set_shmSize (-1);&#xD;
+ // constructor without args is useful e.g. for use as element of an array&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZB5OkVC2EdyqzLG48ixyqA" name="SharedMemory" specification="_ZznOIFCwEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> set_shmSize (-1);&#xD;
+&#xD;
+ int r;&#xD;
+&#xD;
+#ifdef SYNCHRO_VxWorks&#xD;
+ r = openIntern (char1, 0, 0, size, synchro);&#xD;
+#else&#xD;
+ r = openIntern (char1, O_RDWR | O_CREAT, 0777, size, synchro);&#xD;
+#endif&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON open(O_RDWR | O_CREAT, ...)&quot;);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dMLdsFC2EdyqzLG48ixyqA" name="open" specification="_2k0vsFCwEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> int r;&#xD;
+&#xD;
+ m_name = name;&#xD;
+#ifdef SYNCHRO_VxWorks&#xD;
+ r = openIntern (char1, 0, 0, size, synchro);&#xD;
+#else&#xD;
+ r = openIntern (char1, O_RDWR | O_CREAT, 0777, size, synchro);&#xD;
+#endif&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_g6wBMFC2EdyqzLG48ixyqA" name="allocate" specification="_qK9akFCxEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> void * r;&#xD;
+&#xD;
+ r = (void *) m_address;&#xD;
+ char * newAddr;&#xD;
+&#xD;
+ newAddr = m_address + itemSize;&#xD;
+ if (newAddr - m_address0 > shmSize)&#xD;
+ {&#xD;
+ BString500 s1 (&quot;allocation fails: shared memory '&quot;);&#xD;
+ OSAL_ERROR (s1 &lt;&lt; m_name.data ()&#xD;
+ &lt;&lt; &quot;' : shmSize= &quot; &lt;&lt; shmSize &lt;&lt; &quot; is too small&quot;);&#xD;
+ }&#xD;
+&#xD;
+ m_address = newAddr;&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pde3QFC2EdyqzLG48ixyqA" name="unlink" specification="_2nJOcFCxEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> int r = 0;&#xD;
+&#xD;
+#if defined SYNCHRO_Linux&#xD;
+ //cout&lt;&lt;&quot;SHM name : &quot;&lt;&lt;m_name.data()&lt;&lt;endl;&#xD;
+ r = shm_unlink (m_name.data ());&#xD;
+ //if(r == -1)&#xD;
+ // PRINTerr(&quot;ON shm_unlink&quot;);&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin&#xD;
+ if (m_id != -1)&#xD;
+ {&#xD;
+ r = shmdt (m_address00); // detach&#xD;
+ if (r == -1)&#xD;
+ PRINTerr (&quot;ON shmdt (m_address)&quot;);&#xD;
+ else&#xD;
+ {&#xD;
+ struct shmid_ds semStat;&#xD;
+ r = shmctl (m_id, IPC_STAT, &amp;semStat);&#xD;
+ if (r == -1)&#xD;
+ PRINTerr (&quot;ON shmctl(m_id, IPC_STAT, )&quot;);&#xD;
+ else if (semStat.shm_nattch == 0)&#xD;
+ { /**** Only for the last process coming here ****/&#xD;
+ r = shmctl (m_id, IPC_RMID, NULL);&#xD;
+ if (r == -1)&#xD;
+ PRINTerr (&quot;ON shmctl( ,IPC_RMID, )&quot;);&#xD;
+ //essai DS 7/11/02 pour virer les fichiers *.shmKey&#xD;
+ //mais n'a pas l'air de marcher en Solaris 2.7&#xD;
+ // et gnu&#xD;
+ //::unlink(m_name.data()); // remove the file system entry,&#xD;
+ // BUT so, 'key' would not be const&#xD;
+ }&#xD;
+ }&#xD;
+ }&#xD;
+#endif&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_rbZVcFC2EdyqzLG48ixyqA" name="SharedMemory" specification="_yFEm4FCwEdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> if (m_mutex != NULL) {&#xD;
+ delete m_mutex;&#xD;
+ }&#xD;
+ unlink ();&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_vp258FC2EdyqzLG48ixyqA" name="init1" specification="_35gG0FC0EdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> if (creator)&#xD;
+ {&#xD;
+ /**** Only for the 1st process coming here ****/&#xD;
+ // 4-- check if shared memory is filled with 0&#xD;
+ for (int i = 0; i &lt; size; ++i)&#xD;
+#ifndef SYNCHRO_VxWorks&#xD;
+ if (m_address00[i])&#xD;
+ {&#xD;
+ BString500 s1 (&quot;shm zone not clean. DO : ipcrm -M &quot;);&#xD;
+ OSAL_ERROR (s1 &lt;&lt; (long) m_key);&#xD;
+ }&#xD;
+#else&#xD;
+ m_address00[i] = '\0';&#xD;
+#endif&#xD;
+ // 5- If access synchronisation is wanted, use of a shared mutex&#xD;
+ if (synchro)&#xD;
+ {&#xD;
+ // a mutex needs to be allocated in shared memory&#xD;
+ // and initialised once&#xD;
+ m_mutex = new (allocate (sizeof (SM_Mutex))) SM_Mutex ();&#xD;
+ m_address0 = m_address; // Hide this first item&#xD;
+ }&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ /**** for next processes : allocate, but not initialize ****/&#xD;
+ // we need a semaphore to block up to the end of the&#xD;
+ // zone memory initialuzation&#xD;
+ // 5- If access synchronisation is wanted, use of a shared m_mutex&#xD;
+ if (synchro)&#xD;
+ {&#xD;
+ // a mutex needs to be allocated in shared memory&#xD;
+ m_mutex = (SM_Mutex *) allocate (sizeof (SM_Mutex));&#xD;
+ m_address0 = m_address; // Hide this first item&#xD;
+ }&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3a0U0FC2EdyqzLG48ixyqA" name="openIntern" specification="_4JcAQFC0EdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ int r = 0;&#xD;
+&#xD;
+ shmSize = size; // required size&#xD;
+ if (synchro)&#xD;
+ size += sizeof (SM_Mutex); // useful size&#xD;
+&#xD;
+//============================================================&#xD;
+#if defined SYNCHRO_Linux&#xD;
+ // creation of a new segment&#xD;
+ r = m_id = shm_open (m_name.data (), oflag, 00777);&#xD;
+ if (m_id == -1)&#xD;
+ {&#xD;
+ OSAL_ERROR (&quot;ON shm_open&quot;);&#xD;
+ }&#xD;
+ // the returned id is a file descriptor. Thus, the size of the&#xD;
+ // memory identified by the descriptor can be set via ftruncate&#xD;
+ if (ftruncate (m_id, size) == -1)&#xD;
+ OSAL_ERROR (&quot;ON ftruncate&quot;);&#xD;
+ // mapping memory&#xD;
+ m_address00 =&#xD;
+ (char *) mmap (0, size, PROT_READ | PROT_WRITE, MAP_SHARED, m_id, 0);&#xD;
+&#xD;
+ if (m_address00 == MAP_FAILED)&#xD;
+ OSAL_ERROR (&quot;ON mmap&quot;);&#xD;
+ // creation of a mutex at the address m_address00&#xD;
+ m_mutex = (SM_Mutex *) m_address00;&#xD;
+ // address0 : adress of the start of the available segment&#xD;
+ m_address0 = m_address00 + sizeof (SM_Mutex);&#xD;
+ //address : current adress&#xD;
+ m_address = m_address0;&#xD;
+&#xD;
+//============================================================&#xD;
+&#xD;
+#elif SYNCHRO_VxWorks&#xD;
+&#xD;
+ // 'm_name' specified a physical address visiable for the CPU&#xD;
+ /* currently not used&#xD;
+ long memPart; // memory partition&#xD;
+ m_name.setBase (16);&#xD;
+ m_name >> memPart;&#xD;
+ */&#xD;
+&#xD;
+ #ifdef MultiCPU // for multi CPU, with optional VxMP component&#xD;
+ //--- See VxWorks5.3.1 Programmer's Guide, Example 6-3 -------&#xD;
+ // [todo the system partition is preallocated, but where du we see&#xD;
+ // the generation of the kernel? sysMemTop()?]&#xD;
+ {&#xD;
+ SEM_ID localSemId;&#xD;
+ typedef struct shared_buff&#xD;
+ {&#xD;
+ SEM_ID semSmId;&#xD;
+ char buff[]; // [size CHUNK_SIZE ?]&#xD;
+ } SHARED_BUFF;&#xD;
+ SHARED_BUFF *laOfAlSMB; // local address of shared memory block&#xD;
+ SHARED_BUFF *gaOfAlSMB; // global address of shared Memory block&#xD;
+ int objType;&#xD;
+&#xD;
+ // is this the first demand of the 'shared memory block' of the&#xD;
+ // system partition?&#xD;
+ r = smNameFind (m_name.data (), (void **) &amp;gaOfAlSMB, &amp;objType,&#xD;
+ WAIT_FOREVER);&#xD;
+ if (r == -1 &amp;&amp; errno != S_smNameLib_NAME_NOT_FOUND)&#xD;
+ OSAL_ERROR (&quot;ON smNameFind()&quot;);&#xD;
+ if (r == OK)&#xD;
+ {&#xD;
+ // CREATION&#xD;
+ laOfAlSMB = (SHARED_BUFF *) smMemMalloc (size);&#xD;
+ if (laOfAlSMB == NULL)&#xD;
+ OSAL_ERROR (&quot;ON smMemMalloc()&quot;);&#xD;
+ m_address = m_address0 = m_address00 = laOfAlSMB;&#xD;
+&#xD;
+ if (synchro)&#xD;
+ {&#xD;
+ localSemId = semBSmCreate (SEM_QFIFO, SEM_EMPTY);&#xD;
+ if (localSemId == NULL)&#xD;
+ OSAL_ERROR (&quot;ON semBSmCreate()&quot;);&#xD;
+ laOfAlSMB->semSmId = (SEM_ID) htonl ((int) localSemId);&#xD;
+ }&#xD;
+&#xD;
+ r = (char *) smNameAdd (m_name.data (),&#xD;
+ (void *) smObjLocalToGlobal (laOfAlSMB),&#xD;
+ T_SM_BLOCK);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON smNameAdd()&quot;);&#xD;
+&#xD;
+ if (synchro)&#xD;
+ {&#xD;
+ r = semGive (localSemId);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON semGive()&quot;);&#xD;
+ }&#xD;
+ init1 (TRUE, synchro, size);&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ // RE-UTILISATION&#xD;
+ laOfAlSMB = (SHARED_BUFF *) smObjGlobalToLocal (gaOfAlSMB);&#xD;
+ m_address = m_address0 = m_address00 = laOfAlSMB;&#xD;
+ localSemId = (SEM_ID) ntohl ((int) laOfAlSMB->semSmId);&#xD;
+ if (synchro)&#xD;
+ {&#xD;
+ r = semTake (localSemId, WAIT_FOREVER);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON semTake()&quot;);&#xD;
+ }&#xD;
+ }&#xD;
+ // ---------------------------------------------------------------&#xD;
+ }&#xD;
+ #else // monoCPU&#xD;
+ #ifdef OutOfHeap&#xD;
+ id = (int) memPartCreate (m_address00, size);&#xD;
+ if (id == NULL)&#xD;
+ OSAL_ERROR (&quot;ON memPartCreate()&quot;);&#xD;
+ m_address00 = memPartAlloc (m_id, size /* -?? */ );&#xD;
+ if (m_address00 == NULL)&#xD;
+ OSAL_ERROR (&quot;ON memPartAlloc()&quot;);&#xD;
+ #else&#xD;
+ m_address00 = new char[size];&#xD;
+ #endif&#xD;
+ m_address = m_address0 = m_address00;&#xD;
+ init1 (TRUE, synchro, size); // 1 seul process (createur)&#xD;
+ #endif&#xD;
+&#xD;
+ // ============================================================&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin&#xD;
+ m_name &lt;&lt; &quot;.shmKey&quot;; // add a suffix to recognize it with Ipcrm&#xD;
+&#xD;
+ // 1- Get the key from the name ----------------------------------------&#xD;
+&#xD;
+ // #define GET_KEY 1 //--- version proposed by SUN, BUT&#xD;
+ // the key returned by ftok() is: 0xCHMMMINO&#xD;
+ // CH is the character char1&#xD;
+ // INO is the inodenumber of the file &amp; 0xFFF&#xD;
+ // MMM is the minor unit number of the file system, but if the file&#xD;
+ // system is mounted via NFS, it is not guaranted to find the&#xD;
+ // same minor number after a reboot which prevents us to conserve&#xD;
+ // this number within a script for its destruction&#xD;
+// #define GET_KEY 2 //--- version perso&#xD;
+#define GET_KEY 1&#xD;
+#if GET_KEY == 1&#xD;
+ while (m_key == -1)&#xD;
+ {&#xD;
+ m_key = ftok (m_name.data (), char1);&#xD;
+ if (m_key == -1)&#xD;
+ {&#xD;
+ int fd =::creat (m_name.data (), 00777);&#xD;
+ if (fd == -1)&#xD;
+ {&#xD;
+ BString500 s1 (&quot;ON ::creat('&quot;);&#xD;
+ OSAL_ERROR (s1 &lt;&lt; m_name &lt;&lt; &quot;', 00777)&quot;);&#xD;
+ }&#xD;
+ close (fd);&#xD;
+ }&#xD;
+ }&#xD;
+#else // GET_KEY == 2&#xD;
+ int fd =::creat (m_name.data (), 00777);&#xD;
+ if (fd == -1)&#xD;
+ {&#xD;
+ BString500 s1 (&quot;ON ::creat('&quot;);&#xD;
+ OSAL_ERROR (s1 &lt;&lt; m_name.data () &lt;&lt; &quot;', 00777)&quot;);&#xD;
+ }&#xD;
+ struct stat st;&#xD;
+ if (fstat (fd, &amp;st) == -1) {&#xD;
+ OSAL_ERROR (&quot;ON fstat(fd, &amp;st)&quot;);&#xD;
+ }&#xD;
+&#xD;
+ // inode number is unique inside a filesystem&#xD;
+ m_key = (st.st_ino + classKey) &amp; 0xFFFFFF;&#xD;
+ // (st_ino,st_dev) uniquely identifies regular files&#xD;
+ // but ino_t and dev_t are of type ulong_t: too large for a m_key !&#xD;
+&#xD;
+ m_key |= ((char1 &amp; 0xFF) &lt;&lt; 24);&#xD;
+ // m_key = 0xCHINODEI does not guarantee uniqueness for the same inode on&#xD;
+ // two file systems&#xD;
+ // but ftok() guarantees less (+ dependency de mount NFS ...)&#xD;
+ close (fd);&#xD;
+&#xD;
+#endif //--- GET_KEY&#xD;
+&#xD;
+#define ATT_SHM 2&#xD;
+ // 1 shmget(IPC_CREAT | IPC_EXCL): in case of no error&#xD;
+ // it is for the creator, who makes initializations&#xD;
+ // although it is not the first attached.&#xD;
+&#xD;
+ // 2- Get the shared memory identifier ---------------------------------&#xD;
+&#xD;
+#if ATT_SHM == 1&#xD;
+ r = m_id = shmget (m_key, size, 00777 | IPC_CREAT);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON shmget(m_key, size, 00777 | IPC_CREAT)&quot;);&#xD;
+&#xD;
+ // 3 - Attach the shared memory to an address in the calling&#xD;
+ // address-space (zone)&#xD;
+ m_address = m_address0 = m_address00 = (char *) shmat (m_id, 0, 0);&#xD;
+ if ((int) m_address0 == -1)&#xD;
+ OSAL_ERROR (&quot;ON shmat(m_id, )&quot;);&#xD;
+&#xD;
+ {&#xD;
+ // CriticalSection. Who is taking it?&#xD;
+ struct shmid_ds stat;&#xD;
+ r = shmctl (m_id, IPC_STAT, &amp;stat);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON shmctl(shmId, IPC_STAT, )&quot;);&#xD;
+ init1 (stat.shm_nattch &lt; 2, synchro, size);&#xD;
+ }&#xD;
+&#xD;
+#else // ATT_SHM == 2 --------------------------------------------------&#xD;
+ bool creator;&#xD;
+ errno = 0;&#xD;
+ r = m_id = shmget (m_key, size, 00777 | IPC_CREAT | IPC_EXCL);&#xD;
+ if (r == -1)&#xD;
+ {&#xD;
+ if (errno == EEXIST)&#xD;
+ {&#xD;
+ r = m_id = shmget (m_key, size, 0);&#xD;
+ // we know we are not the creator (first who demands) of the zone&#xD;
+ creator = FALSE;&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON shmget(m_key, size, 0)&quot;);&#xD;
+ }&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;ON shmget(m_key, size, IPC_CREAT | IPC_EXCL)&quot;);&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ // For the creator of this shared memory:&#xD;
+ creator = TRUE;&#xD;
+ }&#xD;
+&#xD;
+ // 3 - Attach the shared memory to an address in the calling&#xD;
+ // address-space (zone)&#xD;
+ m_address = m_address0 = m_address00 = (char *) shmat (m_id, 0, 0);&#xD;
+ if ((int) m_address0 == -1)&#xD;
+ OSAL_ERROR (&quot;ON shmat(m_id, )&quot;);&#xD;
+&#xD;
+ init1 (creator, synchro, size);&#xD;
+#endif // ATT_SHM&#xD;
+&#xD;
+#endif // SYNCHRO_Solaris || SYNCHRO_Cygwin&#xD;
+ // ============================================================&#xD;
+&#xD;
+ PR (&quot;for &quot; &lt;&lt; m_name &lt;&lt; &quot; , m_key= &quot; &lt;&lt; (long) m_key&#xD;
+ &lt;&lt; &quot;, required size= &quot; &lt;&lt; shmSize &lt;&lt; &quot;, effective size= &quot;&#xD;
+ &lt;&lt; size &lt;&lt; showI&#xD;
+ &lt;&lt; &quot;, adr00 = &quot; &lt;&lt; (void *) m_address00&#xD;
+ &lt;&lt; &quot;, adr0 = &quot; &lt;&lt; (void *) m_address0&#xD;
+ &lt;&lt; &quot;, adr = &quot; &lt;&lt; (void *) m_address &lt;&lt; showI);&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_W9qUsFCwEdyqzLG48ixyqA" name="SharedMemory" method="_VNNcAVC2EdyqzLG48ixyqA"/>
+ <ownedOperation xmi:id="_ZznOIFCwEdyqzLG48ixyqA" name="SharedMemory" method="_ZB5OkVC2EdyqzLG48ixyqA">
+ <ownedComment xmi:id="_ksGaoFCwEdyqzLG48ixyqA" annotatedElement="_ZznOIFCwEdyqzLG48ixyqA">
+ <body>create a new shared memory segment. The constructor will call the&#xD;
+ method open. See open for a description of the parameters.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_bUnt4FCwEdyqzLG48ixyqA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bU6o0FCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bVEZ0FCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_c7SwwFCwEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_bX5rYFCwEdyqzLG48ixyqA" name="char1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bYVwQFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bYfhQFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ekyeIFCwEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_bbLB0FCwEdyqzLG48ixyqA" name="size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bbej0FCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bbxewFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_glFh8FCwEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_bev6QFCwEdyqzLG48ixyqA" name="synchro">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bfMmMFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bffhIFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jVX4QFCwEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yFEm4FCwEdyqzLG48ixyqA" name="SharedMemory" method="_rbZVcFC2EdyqzLG48ixyqA"/>
+ <ownedOperation xmi:id="_2k0vsFCwEdyqzLG48ixyqA" name="open" method="_dMLdsFC2EdyqzLG48ixyqA">
+ <ownedComment xmi:id="_4k04kFCwEdyqzLG48ixyqA" annotatedElement="_2k0vsFCwEdyqzLG48ixyqA">
+ <body>The passed name is a path name (which must refer to an existing,&#xD;
+ accessible file). Together with the least significant 8 bits of&#xD;
+ char1 (which must be nonzero) a key for the access is generated.&#xD;
+ &#xD;
+ oflag is not used.&#xD;
+ &#xD;
+ If synchro is TRUE, an instance of class SM_Mutex is place at the&#xD;
+ begin of the segment, increasing its size. The first process&#xD;
+ establishing a connection that to ensure that the segment is&#xD;
+ initialized with zeros.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_83TaYFCwEdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_83m8YFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8353UFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-asfwFCwEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_87L00FCwEdyqzLG48ixyqA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_87evwFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_87xqsFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__9M0UFCwEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_8-dLQFCwEdyqzLG48ixyqA" name="char1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8-53MFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8_NZMFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Bi-fUFCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9CL0sFCwEdyqzLG48ixyqA" name="oflag">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9CogoFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9CyRoFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_DOHLcFCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9F6eIFCwEdyqzLG48ixyqA" name="mode">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9GXKEFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9GqFAFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_E1-hIFCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9JCqoFCwEdyqzLG48ixyqA" name="size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9JL0kFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9JVlkFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GqDt4FCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9MK3IFCwEdyqzLG48ixyqA" name="synchro">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9MUoIFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9MnjEFCwEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IsSrYFCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WZFykFCxEdyqzLG48ixyqA" name="getAddress0" method="_46GywFC1EdyqzLG48ixyqA">
+ <ownedComment xmi:id="_Y09YEFCxEdyqzLG48ixyqA" annotatedElement="_WZFykFCxEdyqzLG48ixyqA">
+ <body>return the segment address (if existent) of the current process&#xD;
+ This address is might not be the same for all processes, but all&#xD;
+ addresses point to the same place.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_bNjAEFCxEdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bN_sAFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bOJdAFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_cWHxsFCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_gRW4MFCxEdyqzLG48ixyqA" name="getName" method="_7UyFcFC1EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_iRXBEFCxEdyqzLG48ixyqA" name="param_0" type="_sQ1JADO0EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iRgLAFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iRp8AFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jBfdgFCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_qK9akFCxEdyqzLG48ixyqA" name="allocate" method="_g6wBMFC2EdyqzLG48ixyqA">
+ <ownedComment xmi:id="_sf1AMFCxEdyqzLG48ixyqA" annotatedElement="_qK9akFCxEdyqzLG48ixyqA">
+ <body>Returns the address of an element of size itemSize. If the sequence&#xD;
+ of successive allocate calls is the same for all communicating&#xD;
+ processes, they share the same view of the segment organization.&#xD;
+ If there is not enough space for the item, the process is stopped&#xD;
+ with an error message.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_vhjEwFCxEdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vh_JoFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_viI6oFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wt14wFCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_vkrRQFCxEdyqzLG48ixyqA" name="itemSize">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vlH9MFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vlRHIFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ysDR4FCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_2nJOcFCxEdyqzLG48ixyqA" name="unlink" method="_pde3QFC2EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_3ZzacFCxEdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3aGVYFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3aZ3YFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_4i-B8FCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7F2OYFCxEdyqzLG48ixyqA" name="getMutex" method="_80JmcFC1EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_-rLWUFCxEdyqzLG48ixyqA" name="param_0" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-roCQFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-rxMMFCxEdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__vbBkFCxEdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_KxUW0FC0EdyqzLG48ixyqA" name="_key" method="__3W4wFC1EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_fYiScFC0EdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fY--YFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fZR5UFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_g-ducFC0EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_K3bl4FC0EdyqzLG48ixyqA" name="_id" method="_BFvXcFC2EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_iLzEQFC0EdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iMF_MFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iMY6IFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jW5lcFC0EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_K8DAIFC0EdyqzLG48ixyqA" name="_shmSize" method="_CahZEFC2EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_jpOrkFC0EdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jphmgFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jp0hcFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ktoH0FC0EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_LAqaYFC0EdyqzLG48ixyqA" name="set_shmSize" method="_DsohMFC2EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_mW06QFC0EdyqzLG48ixyqA" name="cr_operand">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mXIcQFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mXRmMFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_nWUBUFC0EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_35gG0FC0EdyqzLG48ixyqA" name="init1" visibility="private" method="_vp258FC2EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_812sEFC0EdyqzLG48ixyqA" name="creator">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_82TYAFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_82ch8FC0EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-kuBoFC0EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_84r9oFC0EdyqzLG48ixyqA" name="synchro">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_84-4kFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_85IpkFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_A3y3gFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_87XeMFC0EdyqzLG48ixyqA" name="size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_87qZIFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8797IFC0EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_CwgFkFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_4JcAQFC0EdyqzLG48ixyqA" name="openIntern" visibility="private" method="_3a0U0FC2EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_OigUAFC1EdyqzLG48ixyqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Oi8_8FC1EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OjZr4FC1EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_S9obgFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FrNjMFC1EdyqzLG48ixyqA" name="char1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FrgeIFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FrzZEFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_HT0fwFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FuC0wFC1EdyqzLG48ixyqA" name="oflag">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FuVvsFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FuoqoFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_JAdAsFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FxBQQFC1EdyqzLG48ixyqA" name="mode">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FxUyQFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FxntMFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Kj2GEFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FztX4FC1EdyqzLG48ixyqA" name="size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F0JcwFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F0TNwFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_MLs0sFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_F2Y4cFC1EdyqzLG48ixyqA" name="synchro">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F2rzYFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F2-uUFC1EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_NxLkwFC1EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_xp3uEFCvEdyqzLG48ixyqA" name="FromSharedMemorytop_Communication" client="_sq-yMFCvEdyqzLG48ixyqA" supplier="_M5gBkFCDEdy2tpS719xBwQ"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_0vA6EFCvEdyqzLG48ixyqA" name="FromSharedMemorytoBString50" client="_sq-yMFCvEdyqzLG48ixyqA" supplier="_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_oT0acC-OEdySSa8YESkO2w" name="ProcessingResources">
+ <packagedElement xmi:type="uml:Class" xmi:id="_-HeCsDj_Edy0Rd6V_tf1-Q" clientDependency="_Az5ewE_gEdy2tpS719xBwQ _GNdkcE_gEdy2tpS719xBwQ _NdL6gE_gEdy2tpS719xBwQ _JMMZwFnbEd-9TNLvplUFDQ _aG940FnbEd-9TNLvplUFDQ _9knnwFncEd-9TNLvplUFDQ" name="Thread">
+ <ownedComment xmi:id="_YnsrIE_gEdy2tpS719xBwQ" annotatedElement="_-HeCsDj_Edy0Rd6V_tf1-Q">
+ <body>Abstraction of an operating system thread. It is possible to control&#xD;
+priorities and the thread's lifecycle (suspend/resume/exit).&#xD;
+&#xD;
+\code&#xD;
+Example:&#xD;
+&#xD;
+class Run {&#xD;
+void run ();&#xD;
+static void run_fct (void * arg);&#xD;
+}&#xD;
+&#xD;
+void Run::run_fct (void * arg)&#xD;
+{&#xD;
+((Run*) myThreadCode)->run ();&#xD;
+}&#xD;
+&#xD;
+void Run::run ()&#xD;
+{&#xD;
+// do something ...&#xD;
+}&#xD;
+&#xD;
+Thread myThread (&quot;MyThread&quot;);&#xD;
+myThread.exec (myThreadCode);&#xD;
+\endcode</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_nyBcEE_nEdy2tpS719xBwQ" name="m_policy" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nyn5AE_nEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nyn5AU_nEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3Q0FUE_nEdy2tpS719xBwQ" name="m_threadAttributes" visibility="private" type="_Saw1YDkDEdyuzNpSiGPe4w" isUnique="false" association="_3QgjUE_nEdy2tpS719xBwQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5faq4E_nEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5fkb4E_nEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_-6w5QE_nEdy2tpS719xBwQ" name="m_name" visibility="private" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false">
+ <ownedComment xmi:id="_EAp1AE_oEdy2tpS719xBwQ" annotatedElement="_-6w5QE_nEdy2tpS719xBwQ">
+ <body>A thread also has a name that should be provided by the constructor&#xD;
+It is primarily used to enhance the readability of the trace output.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B6PiIE_oEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B6ZTIE_oEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_LLUE4U_oEdy2tpS719xBwQ" name="m_semaphore" visibility="private" type="_D8njME_gEdy2tpS719xBwQ" isUnique="false" association="_LLUE4E_oEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_RAAAUE_oEdy2tpS719xBwQ" annotatedElement="_LLUE4U_oEdy2tpS719xBwQ">
+ <body>The semaphore is used for different purposes in vxWorks and&#xD;
+Linux/Solaris, respectively.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MpCnIE_oEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MpMYIE_oEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UO0swE_oEdy2tpS719xBwQ" name="m_startRoutine" visibility="private" type="_kor6MFdhEd-9TNLvplUFDQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UPbJsE_oEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UPbJsU_oEdy2tpS719xBwQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WUyTsE_oEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Z47I0E_oEdy2tpS719xBwQ" name="m_startArg" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gFRCQFnmEd-9TNLvplUFDQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gFazQFnmEd-9TNLvplUFDQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_fsj7YE_oEdy2tpS719xBwQ" name="m_threadId" visibility="private" type="_l2xogFdiEd-9TNLvplUFDQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ftKYUE_oEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ftKYUU_oEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_jQG6oE_oEdy2tpS719xBwQ" name="m_joined" visibility="private" isUnique="false">
+ <ownedComment xmi:id="_mXosQE_oEdy2tpS719xBwQ" annotatedElement="_jQG6oE_oEdy2tpS719xBwQ">
+ <body>in case, of a joinable thread, this attribute indicates whether the&#xD;
+thread has already been joined.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jQjmkE_oEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jQjmkU_oEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_qE3L8E_oEdy2tpS719xBwQ" name="m_execPrio" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qFT34E_oEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qFT34U_oEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_sbg6QE_oEdy2tpS719xBwQ" name="m_accordID" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sbqEME_oEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sbqEMU_oEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_u5djYE_oEdy2tpS719xBwQ" name="m_RTthreads" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u56PUE_oEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u56PUU_oEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_z3tugFnlEd-9TNLvplUFDQ" name="m_suspendPriority" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2uBNQFnlEd-9TNLvplUFDQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2uMMYFnlEd-9TNLvplUFDQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0g4e4E_oEdy2tpS719xBwQ" name="getThreadAttributes" specification="_bvjFgE_jEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_threadAttributes;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3mBq4E_oEdy2tpS719xBwQ" name="isDetached" specification="_mdJ3sE_jEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_threadAttributes.getDetached ();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_5vt7QE_oEdy2tpS719xBwQ" name="setName" specification="_dS4V8E_iEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> m_name = name;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1BbKsE_pEdy2tpS719xBwQ" name="Thread" specification="_oCK1EE_gEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>TRACEpr (VM);&#xD;
+ PR (&quot;Thread::Thread (...)&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ if (attrPtr != NULL) {&#xD;
+ m_threadAttributes = *attrPtr;&#xD;
+ }&#xD;
+ int r = exec (startRoutine, arg, exPrio);&#xD;
+&#xD;
+ if (r &lt; 0) {&#xD;
+ OSAL_ERROR (&quot;could not exec thread&quot;);&#xD;
+ }&#xD;
+&#xD;
+ set_of_threads.append (this);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_75TogE_pEdy2tpS719xBwQ" name="Thread " specification="_VpnT8E_hEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> if (attrPtr != NULL) {&#xD;
+ m_threadAttributes = *attrPtr;&#xD;
+ }&#xD;
+&#xD;
+ set_of_threads.append (this);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-P0M4E_pEdy2tpS719xBwQ" name="Thread" specification="_vOOWoE_hEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Thread::~Thread () : isDetached () = &quot; &lt;&lt; isDetached ()&#xD;
+ &lt;&lt; &quot;, m_joined= &quot; &lt;&lt; m_joined &lt;&lt; showI);&#xD;
+&#xD;
+ if (!isDetached () &amp;&amp; !m_joined) {&#xD;
+ // don't join, if thread hasn't been executed yet.&#xD;
+ if (m_threadId != 0) {&#xD;
+ PR (&quot;really delete thread, m_threadId: &quot; &lt;&lt; m_threadId &lt;&lt; showI);&#xD;
+ join ();&#xD;
+ }&#xD;
+ }&#xD;
+ set_of_threads.eraseValue (this);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AwmHkE_qEdy2tpS719xBwQ" name="initZ " specification="_5LQAcE_hEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Thread::initZ ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+#if defined THREAD_VxWorks&#xD;
+ bool stackFill = ProDesc::isEnvTrue (&quot;A_StackFill&quot;);&#xD;
+ m_vx_options = VX_FP_TASK | (stackFill ? 0 : VX_NO_STACK_FILL);&#xD;
+#elif defined THREAD_Linux || defined THREAD_POSIX4&#xD;
+ m_suspendPriority = 1; // lowest priority for SCHED_RR/SCHED_FIFO&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DjaNcE_qEdy2tpS719xBwQ" name="entryRoutC" specification="_-xoaIE_hEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>// blocked by default&#xD;
+modifySigMask (SIG_BLOCK, SIGRTMIN);&#xD;
+((Thread*) arg)->entryRoutine ();&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FyBaEE_qEdy2tpS719xBwQ" name="getId" specification="_S8E6ME_iEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>#if defined THREAD_POSIX4&#xD;
+ return pthread_self ();&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ return thr_self ();&#xD;
+&#xD;
+#elif defined THREAD_VxWorks //-VxW&#xD;
+ return taskIdSelf ();&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IEyt8E_qEdy2tpS719xBwQ" name="getName" specification="_dG0P4E_iEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> ThreadId id = getId ();&#xD;
+ for (int i = 0; i &lt; set_of_threads.size (); i++) {&#xD;
+ if (set_of_threads.get(i)->m_threadId == id) {&#xD;
+ return set_of_threads.get(i)->m_name;&#xD;
+ }&#xD;
+ }&#xD;
+ return threadName_main;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LK1R0E_qEdy2tpS719xBwQ" name="getPriority" specification="_GnaOIE_jEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Thread::getPriority ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ int priority;&#xD;
+&#xD;
+#if defined THREAD_POSIX4&#xD;
+ SchedParam schedParam;&#xD;
+ int policy;&#xD;
+ if (pthread_getschedparam (getId (), &amp;policy, &amp;schedParam)) {&#xD;
+ OSAL_ERROR (&quot;ON pthread_getschedparam(...)&quot;);&#xD;
+ }&#xD;
+ priority = schedParam.sched_priority;&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+&#xD;
+ // errno= thr_getprio(thr_self(), &amp;pri);&#xD;
+ // if (errno) OSAL_ERROR(&quot;ON thr_getprio()&quot;);&#xD;
+&#xD;
+ pcparms_t params;&#xD;
+ params.pc_cid = PC_CLNULL;&#xD;
+ long l;&#xD;
+ l = priocntl (P_LWPID, _lwp_self (), PC_GETPARMS, (caddr_t) &amp; params);&#xD;
+ if (l == -1L)&#xD;
+ OSAL_ERROR (&quot;ON priocntl( , PC_GETPARMS, )&quot;);&#xD;
+&#xD;
+ rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;&#xD;
+ prio = rtParms->rt_pri;&#xD;
+&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ if (taskPriorityGet (taskIdSelf (), &amp;prio)) //-VxW&#xD;
+ OSAL_ERROR (&quot;ON taskPriorityGet()&quot;);&#xD;
+#endif&#xD;
+&#xD;
+ return priority;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ONl4ME_qEdy2tpS719xBwQ" name="setPriority" specification="_Gzx2ME_jEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Thread::setPriority (&quot; &lt;&lt; prio &lt;&lt; &quot;), old prio: &quot;&#xD;
+ &lt;&lt; getPriority () &lt;&lt; showI);&#xD;
+&#xD;
+#if defined THREAD_POSIX4&#xD;
+ SchedParam schedParam;&#xD;
+ schedParam.sched_priority = prio;&#xD;
+&#xD;
+ if (pthread_setschedparam (getId (), m_policy, &amp;schedParam)) {&#xD;
+ OSAL_ERROR (&quot;ON pthread_setschedparam (...)&quot;);&#xD;
+ }&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ pcparms_t params;&#xD;
+ params.pc_cid = ProDesc::_classId ();&#xD;
+ long l;&#xD;
+&#xD;
+ rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;&#xD;
+ rtParms->rt_pri = prio;&#xD;
+ rtParms->rt_tqsecs = 0;&#xD;
+ rtParms->rt_tqnsecs = RT_NOCHANGE;&#xD;
+ l = priocntl (P_LWPID, _lwp_self (), PC_SETPARMS, (caddr_t) &amp; params);&#xD;
+ if (l == -1L)&#xD;
+ {&#xD;
+ BString500 tmp (&quot;to pri= &quot;);&#xD;
+ tmp &lt;&lt; prio &lt;&lt; &quot;, ON priocntl( , PC_SETPARMS, )&quot;;&#xD;
+ OSAL_ERROR (tmp);&#xD;
+ }&#xD;
+&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ if (taskPrioritySet (taskIdSelf (), prio)) //-VxW&#xD;
+ OSAL_ERROR (&quot;ON taskPrioritySet()&quot;);&#xD;
+#endif&#xD;
+ PR (&quot; after setting, prio= &quot; &lt;&lt; getPriority () &lt;&lt; showI);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Q3UTgE_qEdy2tpS719xBwQ" name="getPrioMax" specification="_G6VKIE_jEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return ProDesc::getPrioMax ();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_T9W3YE_qEdy2tpS719xBwQ" name="changeSigMask" specification="_yp_A8E_jEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Thread::changeSigMask (...)&quot; &lt;&lt; showI);&#xD;
+&#xD;
+#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
+ errno = pthread_sigmask (how, newSet, oldSet);&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;ON pthread_sigmask()&quot;);&#xD;
+ }&#xD;
+#elif defined THREAD_Solaris&#xD;
+ errno = thr_sigsetmask (how, newSet, oldSet);&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;ON thr_sigsetmask()&quot;);&#xD;
+ }&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ if (sigprocmask (how, newSet, oldSet)) { //-VxW&#xD;
+ OSAL_ERROR (&quot;ON sigprocmask()&quot;);&#xD;
+ }&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Wid4cE_qEdy2tpS719xBwQ" name="modifySigMask" specification="_MYHzEE_kEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> sigset_t sigSet;&#xD;
+ if (sigemptyset (&amp;sigSet) == -1) {&#xD;
+ OSAL_ERROR (&quot;ON sigemptyset( )&quot;);&#xD;
+ }&#xD;
+ if (sigaddset (&amp;sigSet, signalID) == -1) { // add 'sig' as a signal&#xD;
+ OSAL_ERROR (&quot;ON sigaddset( )&quot;);&#xD;
+ }&#xD;
+&#xD;
+ Thread::changeSigMask (how, &amp;sigSet, NULL); // modify signal mask&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZVR-UE_qEdy2tpS719xBwQ" name="printSigMask" specification="_X5b6IE_kEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> sigset_t sigSet;&#xD;
+ changeSigMask (SIG_UNBLOCK, NULL, &amp;sigSet); // get current signal mask&#xD;
+&#xD;
+ PRINTpr (&quot;signals to block for current thread &quot;);&#xD;
+ PR (&quot; : \n\t\t&quot;);&#xD;
+&#xD;
+ for (int s = 1; s &lt; SIGRTMAX; ++s) {&#xD;
+ if (sigismember (&amp;sigSet, s))&#xD;
+ {&#xD;
+#ifdef SYSTEM_VxWorks&#xD;
+ PR (s &lt;&lt; &quot;, &quot;);&#xD;
+#else&#xD;
+ PR (strsignal (s) &lt;&lt; &quot;, &quot;);&#xD;
+#endif&#xD;
+ }&#xD;
+ }&#xD;
+&#xD;
+ PR (showI);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_b6rTQE_qEdy2tpS719xBwQ" name="exit" specification="_bh5OkE_kEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Thread::exit ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
+ throw (&quot;Thread::exit() : throw()&quot;); // an attempt for exception catching&#xD;
+ pthread_exit (status);&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ throw (&quot;Thread::exit() : throw()&quot;); // an attempt for exception catching&#xD;
+ thr_exit (status);&#xD;
+&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ // throw(&quot;Thread::exit(): throw()&quot;); => 'use -fhandle-exceptions to enable'&#xD;
+ // but VxWorks does not support C/C++ exceptions&#xD;
+ int code = status ? *(int *) status : 0;&#xD;
+ ::exit (code);&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hzh9AE_qEdy2tpS719xBwQ" name="exec" specification="_NaGikE_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>// NEW 3/01 : added argument execPrio&#xD;
+m_startRoutine = startRoutine; // save pointer for entryRoutine&#xD;
+m_startArg = arg; // save pointer for entryRoutine&#xD;
+m_execPrio = execPrio; // demanded priority&#xD;
+&#xD;
+m_threadAttributes.getDetached ();&#xD;
+&#xD;
+#if defined THREAD_POSIX4&#xD;
+&#xD;
+ pthread_attr_t attributes;&#xD;
+ pthread_attr_init (&amp;attributes);&#xD;
+ pthread_attr_setdetachstate (&amp;attributes,&#xD;
+ (isDetached () ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE));&#xD;
+ if (m_threadAttributes.getStackAddr () != NULL) {&#xD;
+#ifdef THREAD_LINUX&#xD;
+ pthread_attr_setstack (&amp;attributes,&#xD;
+ m_threadAttributes.getStackAddr (),&#xD;
+ m_threadAttributes.getStackSize ());&#xD;
+#endif&#xD;
+ }&#xD;
+ else if (m_threadAttributes.getStackSize () != 0) {&#xD;
+ pthread_attr_setstacksize (&amp;attributes,&#xD;
+ m_threadAttributes.getStackSize ());&#xD;
+ }&#xD;
+&#xD;
+ if (execPrio != DefaultExecPrio) {&#xD;
+ if (m_RTthreads) {&#xD;
+ pthread_attr_setinheritsched (&amp;attributes, PTHREAD_EXPLICIT_SCHED);&#xD;
+ }&#xD;
+ pthread_attr_setschedpolicy (&amp;attributes, m_policy);&#xD;
+ sched_param sp;&#xD;
+ sp.sched_priority = execPrio;&#xD;
+ pthread_attr_setschedparam (&amp;attributes, &amp;sp);&#xD;
+ }&#xD;
+&#xD;
+ errno = pthread_create (&amp;m_threadId, &amp;attributes,&#xD;
+ entryRoutC, (void *) this); // , startRoutine, arg&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ long flags = THR_BOUND; // THR_NEW_LWP leads to SIGLWP;&#xD;
+ if (ProDesc::existEnv (&quot;A_ThreadFlags&quot;))&#xD;
+ {&#xD;
+ OS_AL::Util::BString500 s (ProDesc::getEnv (&quot;A_ThreadFlags&quot;));&#xD;
+ if (s == &quot;THR_BOUND&quot;)&#xD;
+ flags = THR_BOUND;&#xD;
+ else if (s == &quot;THR_NEW_LWP&quot;)&#xD;
+ flags = THR_NEW_LWP;&#xD;
+ else&#xD;
+ OSAL_ERROR&#xD;
+ (&quot;Recognised values for A_ThreadFlags : THR_BOUND, THR_NEW_LWP.&quot;);&#xD;
+ }&#xD;
+ if (isDetached ()) {&#xD;
+ flags |= THR_DETACHED;&#xD;
+ }&#xD;
+ errno = thr_create (&#xD;
+ m_threadAttributes.getStackAddr (),&#xD;
+ m_threadAttributes.getStackSize (),&#xD;
+ (PfAvpRvp) entryRoutC, (void *) this, // , startRoutine, arg&#xD;
+ flags, &amp;thrId);&#xD;
+&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ if (execPrio == DefaultExecPrio)&#xD;
+ {&#xD;
+ // priority of this tasks inherits by current tasks&#xD;
+ if (taskPriorityGet (taskIdSelf (), &amp;m_execPrio)) //-VxW&#xD;
+ PRINTerr (&quot;ON taskPriorityGet()&quot;);&#xD;
+ }&#xD;
+ m_threadId =&#xD;
+ taskSpawn (NULL, m_execPrio, m_vx_options,&#xD;
+ (int) m_threadAttributes.getStackSize (),&#xD;
+ (FUNCPTR) entryRoutC, (int) this, 0, 0, 0, 0, 0, 0, 0, 0, 0);&#xD;
+ if (m_threadId != -1)&#xD;
+ errno = 0; // OK&#xD;
+&#xD;
+#endif&#xD;
+ if ((errno &amp;&amp; (errno != EINTR))) {&#xD;
+ if (errno == EPERM) {&#xD;
+ OS_AL::Util::Print warning;&#xD;
+ warning &lt;&lt; &quot;warning: insufficient permission to create rt-thread (must be root)&quot; &lt;&lt; showI;&#xD;
+ if (m_RTthreads)&#xD;
+ {&#xD;
+ warning &lt;&lt; &quot;falling back to non-rt threads&quot; &lt;&lt; showI;&#xD;
+ m_RTthreads = false;&#xD;
+ // retry exec&#xD;
+ // use &quot;return&quot; to avoid that semaphore wait is executed twice&#xD;
+ return exec (startRoutine, arg, execPrio);&#xD;
+ }&#xD;
+ }&#xD;
+ else {&#xD;
+ OSAL_ERROR (OS_AL::Util::BString50 (&quot;thread_create() failed with code &quot;) &lt;&lt; errno);&#xD;
+ }&#xD;
+ }&#xD;
+&#xD;
+#if defined THREAD_POSIX4 || THREAD_Linux || THREAD_Solaris&#xD;
+ // No error on thread_create... continue&#xD;
+ m_semaphore.wait();&#xD;
+ &#xD;
+#endif&#xD;
+TRACEpr (VM);&#xD;
+PR (&quot;return.&quot; &lt;&lt; showI);&#xD;
+return errno;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_k-CxME_qEdy2tpS719xBwQ" name="entryRoutine" specification="_nQJTgE_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>#if defined THREAD_Solaris&#xD;
+ lwpId = _lwp_self ();&#xD;
+#endif&#xD;
+#if !defined THREAD_VxWorks // else done in taskSpawn ()&#xD;
+ // synchronization to force the system to start this thread&#xD;
+ // [todo: necessary?]&#xD;
+ m_semaphore.post ();&#xD;
+#endif&#xD;
+&#xD;
+m_startRoutine (m_startArg); // go to user function&#xD;
+&#xD;
+#ifdef THREAD_VxWorks&#xD;
+ if (!isDetached ())&#xD;
+ m_semaphore.post ();&#xD;
+#endif&#xD;
+&#xD;
+m_threadId = (pthread_t) ThExecOUT; // quasi completed&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_npGpQE_qEdy2tpS719xBwQ" name="isMyself" specification="_p66QoE_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>pthread_t currentId;&#xD;
+&#xD;
+#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
+ currentId = pthread_self ();&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ currentId = thr_self ();&#xD;
+&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ currentId = taskIdSelf (); //-VxW&#xD;
+#endif&#xD;
+&#xD;
+return (currentId == m_threadId);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p2-PAE_qEdy2tpS719xBwQ" name="equal" specification="_xR8IkE_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>return (otherThread.m_threadId == m_threadId);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_vvrHwE_qEdy2tpS719xBwQ" name="resume" specification="_xldhgE_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>TRACEpr (VM);&#xD;
+PR (&quot;Thread::resume ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+OS_AL::Util::Print pr2;&#xD;
+pr2 &lt;&lt; &quot;in resume&quot; &lt;&lt; showI;&#xD;
+int r = 0;&#xD;
+&#xD;
+if (m_threadId == 0)&#xD;
+ OSAL_ERROR (&quot;call exec() first&quot;);&#xD;
+&#xD;
+if ((int) m_threadId != ThExecOUT)&#xD;
+{ // Execution not completed&#xD;
+#if defined THREAD_POSIX4&#xD;
+ // version that uses priority modification&#xD;
+ SchedParam schedParam;&#xD;
+ schedParam.sched_priority = m_execPrio;&#xD;
+ r = pthread_setschedparam (m_threadId, m_policy, &amp;schedParam);&#xD;
+&#xD;
+ if (r &amp;&amp; r != ESRCH) {&#xD;
+ OS_AL::Util::Print pr;&#xD;
+ pr &lt;&lt; &quot;Thread::resume: cannot change thread priority. Are you root?&quot;&#xD;
+ &lt;&lt; showI;&#xD;
+ }&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ r = thr_continue (m_threadId);&#xD;
+ // only ESRCH is possible&#xD;
+&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ if (taskResume (m_threadId) == -1) { //-VxW&#xD;
+ r = errno;&#xD;
+ }&#xD;
+ else {&#xD;
+ r = 0;&#xD;
+ }&#xD;
+&#xD;
+#endif&#xD;
+}&#xD;
+else {&#xD;
+ r = 0; // Execution has been completed&#xD;
+}&#xD;
+&#xD;
+return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_y4ZMME_qEdy2tpS719xBwQ" name="suspend" specification="_xsdhYE_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>TRACEpr (VM);&#xD;
+PR (&quot;Thread::suspend ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+int r = 0;&#xD;
+&#xD;
+if (m_threadId == 0) {&#xD;
+ OSAL_ERROR (&quot;Thread::suspend (): call exec() first&quot;);&#xD;
+}&#xD;
+OS_AL::Util::Print pr2;&#xD;
+pr2 &lt;&lt; &quot;in suspend&quot; &lt;&lt; showI;&#xD;
+&#xD;
+if ((int) m_threadId != ThExecOUT)&#xD;
+{&#xD;
+#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
+ // suspend by setting priority to a low value. Only works for root&#xD;
+ SchedParam schedParam;&#xD;
+ schedParam.sched_priority = m_suspendPriority;&#xD;
+&#xD;
+ if (pthread_setschedparam (m_threadId, m_policy, &amp;schedParam) != 0) {&#xD;
+ OS_AL::Util::Print pr2;&#xD;
+ pr2 &lt;&lt; &quot;Thread::suspend: cannot change thread priority. Are you root?&quot;&#xD;
+ &lt;&lt; showI;&#xD;
+ }&#xD;
+#elif defined THREAD_Solaris&#xD;
+ // version with real suspension:&#xD;
+ r = thr_suspend (m_threadId);&#xD;
+ // only ESRCH is possible&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ if (taskSuspend (m_threadId) == -1) { //-VxW&#xD;
+ r = errno;&#xD;
+ }&#xD;
+ else {&#xD;
+ r = 0;&#xD;
+ }&#xD;
+#endif&#xD;
+}&#xD;
+else {&#xD;
+ OSAL_ERROR (&quot;Execution has been completed.&quot;);&#xD;
+}&#xD;
+return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1UZ7oE_qEdy2tpS719xBwQ" name="runBackground" specification="_x0gqIE_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>TRACEpr (VM);&#xD;
+PR (&quot;Thread::runBackground ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+OS_AL::Util::Print pr2;&#xD;
+pr2 &lt;&lt; &quot;run background&quot; &lt;&lt; showI;&#xD;
+if (m_threadId == 0) {&#xD;
+ OSAL_ERROR (&quot;Tread::runBackground (): call exec() first&quot;);&#xD;
+}&#xD;
+&#xD;
+if ((int) m_threadId != ThExecOUT) {&#xD;
+ int backgroundPriority = 0; // background priority&#xD;
+ setPriority (backgroundPriority);&#xD;
+}&#xD;
+else {&#xD;
+ OSAL_ERROR (&quot;Execution has been completed.&quot;);&#xD;
+}&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4Z_zkE_qEdy2tpS719xBwQ" name="join" specification="_x7XgEE_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>TRACEpr (VM);&#xD;
+PR (&quot;Thread::join (...)&quot; &lt;&lt; showI);&#xD;
+&#xD;
+if ((int) m_threadId != ThExecOUT)&#xD;
+{&#xD;
+ int r;&#xD;
+&#xD;
+ if (isDetached ()) {&#xD;
+ errno = EINVAL; // join is forbiden (and not necessary)&#xD;
+ }&#xD;
+ else { // attached&#xD;
+ if (m_joined) {&#xD;
+ errno = EINVAL; // already joined&#xD;
+ }&#xD;
+ else {&#xD;
+#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
+ PR (&quot;join thread 1&quot; &lt;&lt; showI);&#xD;
+ // if (pthread_equal (m_threadId, pthread_self ()) == 0)&#xD;
+ {&#xD;
+ PR (&quot;join thread 2&quot; &lt;&lt; showI);&#xD;
+ r = errno = pthread_join (m_threadId, status);&#xD;
+ }&#xD;
+#elif defined THREAD_Solaris&#xD;
+ errno = 0;&#xD;
+ r = errno = thr_join (m_threadId, NULL, status);&#xD;
+&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ m_semaphore.wait ();&#xD;
+ m_joined = true;&#xD;
+#endif&#xD;
+ &#xD;
+#if defined THREAD_POSIX4 || defined THREAD_Linux || defined THREAD_Solaris&#xD;
+ if (r == 0) {&#xD;
+ m_joined = true;&#xD;
+ }&#xD;
+#endif&#xD;
+ }&#xD;
+ }&#xD;
+ if (errno &amp;&amp; (errno != ESRCH)) {&#xD;
+ OSAL_ERROR (&quot;join of threads failed&quot;);&#xD;
+ }&#xD;
+}&#xD;
+// else Execution has been completed. OK.&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7VJ9IE_qEdy2tpS719xBwQ" name="cancel" specification="_yChQ8E_mEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Thread::cancel ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ int r;&#xD;
+&#xD;
+ if (m_threadId == 0)&#xD;
+ OSAL_ERROR (&quot;call exec() firstly.&quot;);&#xD;
+&#xD;
+ if ((int) m_threadId != ThExecOUT)&#xD;
+ {&#xD;
+#if defined THREAD_POSIX4 || defined THREAD_Linux&#xD;
+ // treat as well? setCancelState(), setCancelType(), testCancel(),&#xD;
+ // cleanupPush(), cleanupPop() ??&#xD;
+ r = errno = pthread_cancel (m_threadId);&#xD;
+#elif defined THREAD_Solaris&#xD;
+ r = errno = thr_kill (m_threadId, CancelThSIG);&#xD;
+&#xD;
+#elif defined THREAD_VxWorks&#xD;
+ // use taskSafe() and taskUnsafe() ??&#xD;
+ r = taskDelete (m_threadId);&#xD;
+&#xD;
+#endif&#xD;
+&#xD;
+ if (errno)&#xD;
+ {&#xD;
+ OS_AL::Util::BString500 tmp (&quot;m_threadId= &quot;);&#xD;
+ tmp &lt;&lt; m_threadId;&#xD;
+ OSAL_ERROR (tmp);&#xD;
+ }&#xD;
+ }&#xD;
+ else&#xD;
+ r = 0; // Execution has been completed. OK.&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_oCK1EE_gEdy2tpS719xBwQ" name="Thread" method="_1BbKsE_pEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_NJ3gcE_hEdy2tpS719xBwQ" annotatedElement="_oCK1EE_gEdy2tpS719xBwQ">
+ <body>create a new thread. The passed parameter @param name is used to&#xD;
+identify the thread in the trace files.&#xD;
+&#xD;
+By default, the Thread will block the SIGRTMIN signal which is&#xD;
+used by class Timer</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_srl3QE_gEdy2tpS719xBwQ" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sr4yME_gEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ssCjME_gEdy2tpS719xBwQ" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_suk50E_gEdy2tpS719xBwQ" name="attrPtr" type="_Saw1YDkDEdyuzNpSiGPe4w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_su30wE_gEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_svBlwE_gEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_zHKzkE_gEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_sx2QQE_gEdy2tpS719xBwQ" name="startRoutine" type="_kor6MFdhEd-9TNLvplUFDQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_syJyQE_gEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_syS8ME_gEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_0qaH8E_gEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_s1R-wE_gEdy2tpS719xBwQ" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s1k5sE_gEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s1uqsE_gEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2tPiYE_gEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_s423ME_gEdy2tpS719xBwQ" name="exPrio">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s5JyIE_gEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s5ctEE_gEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_41S0AE_gEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_VpnT8E_hEdy2tpS719xBwQ" name="Thread " method="_75TogE_pEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_hCJScE_hEdy2tpS719xBwQ" annotatedElement="_VpnT8E_hEdy2tpS719xBwQ">
+ <body>create a new thread by passing its name and optionally a&#xD;
+pointer to ThreadAttributes.&#xD;
+&#xD;
+By default, the Thread will block the SIGRTMIN signal which is&#xD;
+used by class Timer</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_X1168E_hEdy2tpS719xBwQ" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X2I14E_hEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X2Sm4E_hEdy2tpS719xBwQ" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_X4XqgE_hEdy2tpS719xBwQ" name="attrPtr" type="_Saw1YDkDEdyuzNpSiGPe4w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X4rMgE_hEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X4-HcE_hEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ejSqYE_hEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_vOOWoE_hEdy2tpS719xBwQ" name="Thread" method="_-P0M4E_pEdy2tpS719xBwQ"/>
+ <ownedOperation xmi:id="_5LQAcE_hEdy2tpS719xBwQ" name="initZ " isStatic="true" method="_AwmHkE_qEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_7klPUE_hEdy2tpS719xBwQ" annotatedElement="_5LQAcE_hEdy2tpS719xBwQ">
+ <body>initialize the suspend priority of threads in this zone&#xD;
+and the suspension mode (static method). This method has to&#xD;
+be called during the application startup.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_-xoaIE_hEdy2tpS719xBwQ" name="entryRoutC" isStatic="true" method="_DjaNcE_qEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_a-nNQE_iEdy2tpS719xBwQ" annotatedElement="_-xoaIE_hEdy2tpS719xBwQ">
+ <body>This routine wraps the thread execution (static method)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_BxQ0AE_iEdy2tpS719xBwQ" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EPvs4FnmEd-9TNLvplUFDQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EPywMFnmEd-9TNLvplUFDQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GP0C8E_iEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FeNrIFnmEd-9TNLvplUFDQ" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FeNrIlnmEd-9TNLvplUFDQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FeNrIVnmEd-9TNLvplUFDQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_FeNrI1nmEd-9TNLvplUFDQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_S8E6ME_iEdy2tpS719xBwQ" name="getId" isStatic="true" method="_FyBaEE_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_UzcEcE_iEdy2tpS719xBwQ" name="param_0" type="_l2xogFdiEd-9TNLvplUFDQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Uzu_YE_iEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Uz4wYE_iEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WR6NkE_iEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_dG0P4E_iEdy2tpS719xBwQ" name="getName" isStatic="true" method="_IEyt8E_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_h151ME_iEdy2tpS719xBwQ" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h2NXME_iEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h2WhIE_iEdy2tpS719xBwQ" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_dS4V8E_iEdy2tpS719xBwQ" name="setName" method="_5vt7QE_oEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_qgiDAE_iEdy2tpS719xBwQ" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qg098E_iEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qg-u8E_iEdy2tpS719xBwQ" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GnaOIE_jEdy2tpS719xBwQ" name="getPriority" isStatic="true" method="_LK1R0E_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_O4G5AE_jEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O4Zz8E_jEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O4jk8E_jEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_QhdccE_jEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Gzx2ME_jEdy2tpS719xBwQ" name="setPriority" isStatic="true" method="_ONl4ME_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_RuWGUE_jEdy2tpS719xBwQ" name="prio">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RupoUE_jEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RuyyQE_jEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_S8R5EE_jEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_G6VKIE_jEdy2tpS719xBwQ" name="getPrioMax" isStatic="true" method="_Q3UTgE_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_T8pw8E_jEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T89S8E_jEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T9Gc4E_jEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_VljocE_jEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_bvjFgE_jEdy2tpS719xBwQ" name="getThreadAttributes" method="_0g4e4E_oEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_h-J80E_jEdy2tpS719xBwQ" annotatedElement="_bvjFgE_jEdy2tpS719xBwQ">
+ <body>provides access to the thread attributes (also for modification)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_diu6YE_jEdy2tpS719xBwQ" name="param_0" type="_Saw1YDkDEdyuzNpSiGPe4w" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_djCcYE_jEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_djLmUE_jEdy2tpS719xBwQ" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_mdJ3sE_jEdy2tpS719xBwQ" name="isDetached" method="_3mBq4E_oEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_rPrLgE_jEdy2tpS719xBwQ" annotatedElement="_mdJ3sE_jEdy2tpS719xBwQ">
+ <body>denotes whether the thread is detached or joinable</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ngEGME_jEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ngXBIE_jEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nggyIE_jEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pRm8UE_jEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yp_A8E_jEdy2tpS719xBwQ" name="changeSigMask" isStatic="true" method="_T9W3YE_qEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_2BdTEE_jEdy2tpS719xBwQ" annotatedElement="_yp_A8E_jEdy2tpS719xBwQ">
+ <body>changes the signal mask for the calling thread as described by&#xD;
+the how and newmask arguments. If oldmask is not NULL, the previous&#xD;
+signal mask is stored in the location pointed to by oldmask.&#xD;
+&#xD;
+The meaning of the how and newmask arguments is the same as for&#xD;
+sig-procmask(2). If how is SIG_SETMASK, the signal mask is set to&#xD;
+newmask.&#xD;
+If how is SIG_BLOCK, the signals specified to newmask are added to&#xD;
+the current signal mask.&#xD;
+If how is SIG_UNBLOCK, the signals specified to newmask are removed&#xD;
+from the current signal mask.&#xD;
+Recall that signal masks are set on a per-thread basis, but signal&#xD;
+actions and signal handlers, as set with sigaction(2), are shared&#xD;
+between all threads.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="__Rod8E_jEdy2tpS719xBwQ" name="how">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__RyO8E_jEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__R7Y4E_jEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Ci_hAE_kEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="__Um5cE_jEdy2tpS719xBwQ" name="newSet" type="_5J3-8FdkEd-9TNLvplUFDQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__UwqcE_jEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__VDlYE_jEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_EF76cE_kEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="__YLx4E_jEdy2tpS719xBwQ" name="oldSet" type="_5J3-8FdkEd-9TNLvplUFDQ" direction="inout">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__YfT4E_jEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Yod0E_jEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AK2k8E_kEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_MYHzEE_kEdy2tpS719xBwQ" name="modifySigMask" isStatic="true" method="_Wid4cE_qEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_UEwuoE_kEdy2tpS719xBwQ" annotatedElement="_MYHzEE_kEdy2tpS719xBwQ">
+ <body>similar changeSigMask, used by Main and ServiceRequest classes.&#xD;
+Compared to changeSigMask, it is more convenient to use if a single&#xD;
+signal is modified, since the user does not have to create a set and&#xD;
+add the signal to it.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_M8x_UE_kEdy2tpS719xBwQ" name="how">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M87wUE_kEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M9OrQE_kEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_O-k38E_kEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_NA9UsE_kEdy2tpS719xBwQ" name="signalID">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NBGeoE_kEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NBQPoE_kEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_R6U3YE_kEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_X5b6IE_kEdy2tpS719xBwQ" name="printSigMask" method="_ZVR-UE_qEdy2tpS719xBwQ"/>
+ <ownedOperation xmi:id="_bh5OkE_kEdy2tpS719xBwQ" name="exit" isStatic="true" method="_b6rTQE_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_dhdSkE_kEdy2tpS719xBwQ" name="status">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dhwNgE_kEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dh5XcE_kEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_etTaoE_kEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_NaGikE_mEdy2tpS719xBwQ" name="exec" method="_hzh9AE_qEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_P7COQE_mEdy2tpS719xBwQ" annotatedElement="_NaGikE_mEdy2tpS719xBwQ">
+ <body>This method initiates the execution of a new thread. The new thread&#xD;
+will start the entryRoutine, which acts as a wrapper for the execution&#xD;
+of the passed startRoutine. The parameter arg will be passed to it&#xD;
+(often a &quot;this&quot; pointer, if a static method is passed).&#xD;
+&#xD;
+The last parameter is the Tasks priority. It is optional, if not&#xD;
+given, the priority has a default value.&#xD;
+&#xD;
+Don't confuse this method with the Task::exec which will execute&#xD;
+periodic tasks.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_WnJg8E_mEdy2tpS719xBwQ" name="startRoutine" type="_kor6MFdhEd-9TNLvplUFDQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wncb4E_mEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WnmM4E_mEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Ys0M8E_mEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WqIjgE_mEdy2tpS719xBwQ" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WqbecE_mEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WqlPcE_mEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_aqR_ME_mEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WuKH4E_mEdy2tpS719xBwQ" name="execPrio">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WudC0E_mEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Wuv9wE_mEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dHC8kE_mEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_-r98QFnaEd-9TNLvplUFDQ" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BGPmUFnbEd-9TNLvplUFDQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BGQ0cFnbEd-9TNLvplUFDQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_BGSpoFnbEd-9TNLvplUFDQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nQJTgE_mEdy2tpS719xBwQ" name="entryRoutine" method="_k-CxME_qEdy2tpS719xBwQ"/>
+ <ownedOperation xmi:id="_p66QoE_mEdy2tpS719xBwQ" name="isMyself" method="_npGpQE_qEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_sG1VoE_mEdy2tpS719xBwQ" annotatedElement="_p66QoE_mEdy2tpS719xBwQ">
+ <body>checks whether the currently executing thread has the same ID as&#xD;
+the one for which this operation is called</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_t6BKgE_mEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t6UsgE_mEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t6d2cE_mEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vSrmkE_mEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_xR8IkE_mEdy2tpS719xBwQ" name="equal" method="_p2-PAE_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_9dk_AE_mEdy2tpS719xBwQ" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9d358E_mEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9eBD4E_mEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__pgEAE_mEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9hJ3cE_mEdy2tpS719xBwQ" name="otherThread" type="_-HeCsDj_Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9hl8UE_mEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9hvtUE_mEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_C4UwcE_nEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_xldhgE_mEdy2tpS719xBwQ" name="resume" method="_vvrHwE_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_PsMEgE_nEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PsfmgE_nEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PsyhcE_nEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Q4VukE_nEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_xsdhYE_mEdy2tpS719xBwQ" name="suspend" method="_y4ZMME_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_R_arYE_nEdy2tpS719xBwQ" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R_tmUE_nEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R_3XUE_nEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_TQU5oE_nEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_x0gqIE_mEdy2tpS719xBwQ" name="runBackground" method="_1UZ7oE_qEdy2tpS719xBwQ"/>
+ <ownedOperation xmi:id="_x7XgEE_mEdy2tpS719xBwQ" name="join" method="_4Z_zkE_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_VzWQAE_nEdy2tpS719xBwQ" name="status" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VzpyAE_nEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Vzy78E_nEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_XUNl0E_nEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yChQ8E_mEdy2tpS719xBwQ" name="cancel" method="_7VJ9IE_qEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_hXC8sE_nEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hXWesE_nEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hXfooE_nEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ij8NoE_nEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Saw1YDkDEdyuzNpSiGPe4w" name="ThreadAttribute">
+ <ownedComment xmi:id="_TcVYgE_rEdy2tpS719xBwQ" annotatedElement="_Saw1YDkDEdyuzNpSiGPe4w">
+ <body>Attributes of a thread, i.e. stack information and whether a thread&#xD;
+is detached (becomes independent from initiator) or joinable (it&#xD;
+can be/has to be explicitly joined by the thread initiator).&#xD;
+&#xD;
+=> see pthread documentation</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_6bg4AE_tEdy2tpS719xBwQ" name="m_stackSize" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6b9j8E_tEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6b9j8U_tEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_9TGJIE_tEdy2tpS719xBwQ" name="m_stackAddress" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9TZEEE_tEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Ti1EE_tEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_BBEPsE_uEdy2tpS719xBwQ" name="m_detached" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BBg7oE_uEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BBqsoE_uEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GyeNoE_uEdy2tpS719xBwQ" name="getStackSize" specification="_f_9RIE_rEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_stackSize;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IITYIE_uEdy2tpS719xBwQ" name="setStackAddr" specification="_vxhFYE_rEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> m_stackAddress = stackAddress;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_J3nZoE_uEdy2tpS719xBwQ" name="getStackAddr" specification="_v5HiME_rEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_stackAddress;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LQR1sE_uEdy2tpS719xBwQ" name="setDetached" specification="_oN8UUE_tEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> m_detached = detached;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MoV00E_uEdy2tpS719xBwQ" name="getDetached" specification="_ofORkE_tEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_detached;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_rbyT4E_uEdy2tpS719xBwQ" name="ThreadAttribute" specification="_YAjKkE_rEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> m_stackAddress = NULL;&#xD;
+#if defined THREAD_POSIX4 || THREAD_Linux&#xD;
+ m_stackSize = 0; // use defaults from system&#xD;
+#else&#xD;
+ m_stackSize = 0x10000; // default values : 64 Kbytes&#xD;
+#endif&#xD;
+ m_detached = true;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_t_GlME_uEdy2tpS719xBwQ" name="setStackSize" specification="_f6SuAE_rEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>#ifdef THREAD_LINUX&#xD;
+ if (stackSize != 0 &amp;&amp; stackSize &lt; PTHREAD_STACK_MIN) {&#xD;
+#else&#xD;
+ if (stackSize != 0) {&#xD;
+#endif&#xD;
+ return -EINVAL;&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ m_stackSize = stackSize;&#xD;
+ return 0;&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_YAjKkE_rEdy2tpS719xBwQ" name="ThreadAttribute" method="_rbyT4E_uEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_Z482oE_rEdy2tpS719xBwQ" annotatedElement="_YAjKkE_rEdy2tpS719xBwQ">
+ <body>create a thread with default attributes:&#xD;
+- a stack address chosen by the system&#xD;
+- a stack size of 64K in case of Solaris and vxWorks&#xD;
+ or the system default, in case of Linux&#xD;
+- detached</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_f6SuAE_rEdy2tpS719xBwQ" name="setStackSize" method="_t_GlME_uEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_jHMH0E_rEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jHfCwE_rEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jHozwE_rEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kbYTkE_rEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_jLD7ME_rEdy2tpS719xBwQ" name="stackSize">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jLW2IE_rEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jLgnIE_rEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_mpZDQE_rEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_f_9RIE_rEdy2tpS719xBwQ" name="getStackSize" method="_GyeNoE_uEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_pNKAgE_rEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pNc7cE_rEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pNmscE_rEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_qbrpIE_rEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_vxhFYE_rEdy2tpS719xBwQ" name="setStackAddr" method="_IITYIE_uEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_ztpjwE_rEdy2tpS719xBwQ" name="stackAddress">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zt8esE_rEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zuGPsE_rEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1FQ28E_rEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_v5HiME_rEdy2tpS719xBwQ" name="getStackAddr" method="_J3nZoE_uEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_2eX-8E_rEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2eq54E_rEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2e0q4E_rEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3ty_cE_rEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_oN8UUE_tEdy2tpS719xBwQ" name="setDetached" method="_LQR1sE_uEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_sC6awE_tEdy2tpS719xBwQ" name="detached">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sDNVsE_tEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sDg3sE_tEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_teHNcE_tEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ofORkE_tEdy2tpS719xBwQ" name="getDetached" method="_MoV00E_uEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_w84aYE_tEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w9L8YE_tEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w9e3UE_tEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ymrpwE_tEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_oSgIME_BEdy2tpS719xBwQ" clientDependency="_y3w2sE_BEdy2tpS719xBwQ _BARjMFnFEd-9TNLvplUFDQ _HQSIsFnFEd-9TNLvplUFDQ" name="ProDesc">
+ <ownedAttribute xmi:id="_hhJsAE_IEdy2tpS719xBwQ" name="m_argc" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hhcm8E_IEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hhcm8U_IEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_hkukcE_IEdy2tpS719xBwQ" name="m_argv" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hlBfYE_IEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hlBfYU_IEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xFdHYE_IEdy2tpS719xBwQ" name="m_classId" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xFwCUE_IEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xFwCUU_IEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xLHqgE_IEdy2tpS719xBwQ" name="m_sigOnErr" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xLalcE_IEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xLkWcE_IEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xO_d4E_IEdy2tpS719xBwQ" name="m_numberOfProcesses" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xPSY0E_IEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xPSY0U_IEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xSkWUE_IEdy2tpS719xBwQ" name="m_policy" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xS3RQE_IEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xTBCQE_IEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xVsi0E_IEdy2tpS719xBwQ" name="m_prioMin" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xWJOwE_IEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xWJOwU_IEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_xY-gUE_IEdy2tpS719xBwQ" name="m_prioMax" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xZRbQE_IEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xZbMQE_IEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_XIyUkE_JEdy2tpS719xBwQ" name="m_zoneName" visibility="private" isStatic="true" type="_0AwCEDO0EdyG-pUz-bb-Lg" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_baOUkE_JEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_baOUkU_JEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_es7bcE_JEdy2tpS719xBwQ" name="m_zoneNumber" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_etOWYE_JEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_etYHYE_JEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_jLVgcE_JEdy2tpS719xBwQ" name="m_pauseOnErr" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jLobYE_JEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jLobYU_JEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_wzzhQE_JEdy2tpS719xBwQ" name="getArgc" specification="_fBQXkE_HEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>return m_argc;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_zW-ooE_JEdy2tpS719xBwQ" name="getArgv" specification="_fRpkAE_HEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>return m_argv;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0-1-UE_JEdy2tpS719xBwQ" name="getArgv" specification="_fMk2wE_HEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>return m_argv[pos];</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GgAvAE_KEdy2tpS719xBwQ" name="setZoneName" specification="_Qpmc4E_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>m_zoneName = zoneName;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IMMkAE_KEdy2tpS719xBwQ" name="getZoneName" specification="_Qd0qsE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>return m_zoneName;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_J41E8E_KEdy2tpS719xBwQ" name="getPid" specification="_m11OgE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>#if defined SYSTEM_POSIX4&#xD;
+ return getpid ();&#xD;
+#elif defined SYSTEM_Solaris&#xD;
+ return getpid ();&#xD;
+#elif defined SYSTEM_VxWorks&#xD;
+ return Thread::getMyId ();&#xD;
+#else&#xD;
+ SYSTEM_x_not_defined;&#xD;
+ return -1;&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LgsaoE_KEdy2tpS719xBwQ" name="getParentPid" specification="_m8ZJgE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>#if defined SYSTEM_POSIX4&#xD;
+ return getppid ();&#xD;
+#elif defined SYSTEM_Solaris&#xD;
+ return getppid ();&#xD;
+#elif defined SYSTEM_VxWorks&#xD;
+ return -1;&#xD;
+#else&#xD;
+ SYSTEM_x_not_defined;&#xD;
+ return -1;&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_NcEiME_KEdy2tpS719xBwQ" name="getPauseOnErr" specification="_fWj5ME_HEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>return m_pauseOnErr;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Q5DmcE_KEdy2tpS719xBwQ" name="getClassId" specification="_fbomcE_HEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>return m_classId;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SYbHcE_KEdy2tpS719xBwQ" name="getNumerOfProcesses" specification="_ffqK0E_HEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>return m_numberOfProcesses;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_UKkagE_KEdy2tpS719xBwQ" name="getPolicy" specification="_fkkgAE_HEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_policy;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Fuv0sE_LEdy2tpS719xBwQ" name="init" specification="_Wg_Y8E_CEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>TRACEpr (F9);&#xD;
+m_sigOnErr = errSig;&#xD;
+&#xD;
+m_pauseOnErr = isEnvTrue (&quot;A_PauseOnErr&quot;);&#xD;
+errno = 0;&#xD;
+&#xD;
+if (existEnv (&quot;A_NumberOfProcesses&quot;))&#xD;
+{&#xD;
+ m_numberOfProcesses = atoi (getEnv (&quot;A_NumberOfProcesses&quot;));&#xD;
+ if (m_numberOfProcesses &lt; 1)&#xD;
+ {&#xD;
+ OSAL_ERROR&#xD;
+ (&quot;The environment variable 'A_NumberOfProcesses' must be > 0&quot;);&#xD;
+ }&#xD;
+}&#xD;
+&#xD;
+#if defined SYSTEM_Solaris&#xD;
+ pcparms_t params;&#xD;
+ params.pc_cid = PC_CLNULL; // To force update of pc_cid&#xD;
+ long l;&#xD;
+ l = priocntl (P_PID, getPid (), PC_GETPARMS, (caddr_t) &amp; params);&#xD;
+ if (l == -1L)&#xD;
+ OSAL_ERROR (&quot;ON priocntl( , PC_GETPARMS, )&quot;);&#xD;
+ classId = params.pc_cid;&#xD;
+&#xD;
+ pcinfo_t infos;&#xD;
+ infos.pc_cid = classId; // Infos about current process&#xD;
+ l = priocntl ((idtype_t) 0, (id_t) 0, PC_GETCLINFO, (caddr_t) &amp; infos);&#xD;
+ if (l == -1L)&#xD;
+ OSAL_ERROR (&quot;ON priocntl( , PC_GETCLINFO, )&quot;);&#xD;
+&#xD;
+ m_prioMax = 59;&#xD;
+ m_prioMin = 0;&#xD;
+&#xD;
+#else // SYSTEM_POSIX4, SYSTEM_Linux and SYSTEM_VxWorks&#xD;
+&#xD;
+ m_policy = sched_getscheduler (getPid ());&#xD;
+ if (m_policy == -1)&#xD;
+ OSAL_ERROR (&quot;ON sched_getscheduler(myPid)&quot;);&#xD;
+ PR (&quot; Current scheduling policy is &quot;);&#xD;
+ PR ((m_policy == SCHED_FIFO ? &quot;SCHED_FIFO&quot; :&#xD;
+ (m_policy == SCHED_RR ? &quot;SCHED_RR&quot; : &quot;SCHED_OTHER&quot;)));&#xD;
+&#xD;
+ posixPriorityNumbering = true; // for VxWorks, otherwise number inversion&#xD;
+&#xD;
+ m_prioMax = sched_get_priority_max (m_policy);&#xD;
+ if (m_prioMax == -1)&#xD;
+ OSAL_ERROR (&quot;ON sched_get_priority_max()&quot;);&#xD;
+ m_prioMin = sched_get_priority_min (m_policy);&#xD;
+ if (m_prioMin == -1)&#xD;
+ OSAL_ERROR (&quot;ON sched_get_priority_min()&quot;);&#xD;
+&#xD;
+#endif&#xD;
+&#xD;
+PR (&quot;, priority mini for a thread =&quot; &lt;&lt; m_prioMin);&#xD;
+PR (&quot;, priority maxi for a thread =&quot; &lt;&lt; m_prioMax &lt;&lt; showI);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_InEssE_LEdy2tpS719xBwQ" name="existEnv" specification="_Wn__4E_CEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>bool r = false;&#xD;
+const char *p =::getenv (name);&#xD;
+if (p &amp;&amp; *p != '\0')&#xD;
+ r = true;&#xD;
+&#xD;
+return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_K8r5ME_LEdy2tpS719xBwQ" name="getEnv" specification="_WtXBAE_CEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>// a call to getenv(3C) is standard UNIX&#xD;
+const char *p =::getenv (name);&#xD;
+&#xD;
+// result is &quot;&quot; if name is not found in environment&#xD;
+&#xD;
+return (p ? p : &quot;&quot;);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_NumnME_LEdy2tpS719xBwQ" name="getEnvInt" specification="_Wx1RUE_CEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>int r = 0; // default return value 0 (variable does not exist or empty)&#xD;
+&#xD;
+const char *p = ::getenv (name);&#xD;
+if (p &amp;&amp; *p != '\0')&#xD;
+{&#xD;
+ char *pEnd;&#xD;
+ r = (int) strtol (p, &amp;pEnd, base);&#xD;
+ if (pEnd == p) {&#xD;
+ // the variable exists, but is not numeric&#xD;
+ OS_AL::Util::BString200 s (&quot;Environment variable '&quot;);&#xD;
+ s &lt;&lt; name &lt;&lt; &quot;' should be integer.&quot;;&#xD;
+ OSAL_ERROR (s);&#xD;
+ }&#xD;
+}&#xD;
+&#xD;
+return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Qc9D0E_LEdy2tpS719xBwQ" name="isEnvTrue" specification="_W2mckE_CEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>bool r = false; // if variable does not exist&#xD;
+const char *p = ::getenv (name);&#xD;
+if (p) {&#xD;
+ char c = *p;&#xD;
+ if (c == 't' || c == 'T' || // true or TRUE or True or ...&#xD;
+ c == 'y' || c == 'Y') { // yes or YES or Yes or ...&#xD;
+ r = true;&#xD;
+ }&#xD;
+ else if (c == 'f' || c == 'F' || c == 'n' || c == 'N') {&#xD;
+ // false is already assigned&#xD;
+ }&#xD;
+ else {&#xD;
+ OS_AL::Util::BString200 str (name);&#xD;
+ OSAL_ERROR (str &lt;&lt; &quot; is not boolean.&quot;);&#xD;
+ }&#xD;
+}&#xD;
+&#xD;
+return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_TRQXcE_LEdy2tpS719xBwQ" name="getCommProcNb" specification="_W8HOsE_CEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>if (m_sigOnErr == 0) {&#xD;
+ init ();&#xD;
+}&#xD;
+&#xD;
+return m_numberOfProcesses;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VJXIkE_LEdy2tpS719xBwQ" name="saveArg" specification="_XA4Z8E_CEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>m_argc = argc;&#xD;
+m_argv = argv;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_XD2fUE_LEdy2tpS719xBwQ" name="setZoneNumber" specification="_EmmlEE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>if ((zoneNumber &lt; 0) || (zoneNumber >= m_numberOfProcesses)) {&#xD;
+ OSAL_ERROR (&quot;requires : 0 &lt;= number &lt; numberOfProcesses&quot;);&#xD;
+}&#xD;
+m_zoneNumber = zoneNumber;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Zj4zIE_LEdy2tpS719xBwQ" name="getZoneNumber" specification="_FQU3gE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>if (m_zoneNumber == -1) {&#xD;
+ OSAL_ERROR (&quot;zone number not yet assigned&quot;);&#xD;
+}&#xD;
+&#xD;
+return m_zoneNumber;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dMM9oE_LEdy2tpS719xBwQ" name="getPrioMax" specification="_nCDsoE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>if (m_sigOnErr == 0) {&#xD;
+ init ();&#xD;
+}&#xD;
+&#xD;
+return m_prioMax;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fW7v0E_LEdy2tpS719xBwQ" name="getPrioMin" specification="_nGrG4E_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>if (m_sigOnErr == 0) {&#xD;
+ init ();&#xD;
+}&#xD;
+&#xD;
+return m_prioMin;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_i-fsYE_LEdy2tpS719xBwQ" name="setMyPriority" specification="_nL4-EE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>int r = 0;&#xD;
+&#xD;
+if (prio &lt; getPrioMin () || prio > getPrioMax ())&#xD;
+{&#xD;
+ OS_AL::Util::BString200 s (&quot;priority = &quot;);&#xD;
+ s &lt;&lt; prio &lt;&lt; &quot; out of range [&quot; &lt;&lt; getPrioMin ()&#xD;
+ &lt;&lt; &quot;, &quot; &lt;&lt; getPrioMax () &lt;&lt; &quot;]&quot;;&#xD;
+ OSAL_ERROR (s);&#xD;
+}&#xD;
+&#xD;
+#ifdef SYSTEM_VxWorks&#xD;
+OSAL_ERROR (&quot;Not available with VxWorks&quot;); //-VxW&#xD;
+// sched_setparam() set a task's priority for VxWorks&#xD;
+// for us, a task is a thread&#xD;
+// VxWorks is mono-process (only 1 address space)&#xD;
+// so inter-process facilities like this one should not be required&#xD;
+&#xD;
+#elif defined SYSTEM_POSIX4&#xD;
+struct sched_param params;&#xD;
+params.sched_priority = prio;&#xD;
+&#xD;
+r = sched_setparam (0, &amp;params);&#xD;
+if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON sched_setparam()&quot;);&#xD;
+&#xD;
+#elif defined SYSTEM_Linux&#xD;
+if (getPolicy () != SCHED_OTHER)&#xD;
+{&#xD;
+ // SCHED_RR or SCHED_FIFO: use POSIX functions to change static priority&#xD;
+ struct sched_param params;&#xD;
+ params.sched_priority = prio;&#xD;
+ r = sched_setparam (0, &amp;params);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON sched_setparam()&quot;);&#xD;
+}&#xD;
+else&#xD;
+{&#xD;
+ // TIME-SHARING&#xD;
+ // We have to be super-user to modify the priority&#xD;
+}&#xD;
+#else&#xD;
+if (getPolicy () != SCHED_OTHER)&#xD;
+{ // REAL-TIME&#xD;
+ pcparms_t params;&#xD;
+ params.pc_cid = classId;&#xD;
+ long l;&#xD;
+&#xD;
+ rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;&#xD;
+ rtParms->rt_pri = pri;&#xD;
+ rtParms->rt_tqsecs = 0;&#xD;
+ rtParms->rt_tqnsecs = RT_NOCHANGE;&#xD;
+ l = priocntl (P_PID, getPid (), PC_SETPARMS, (caddr_t) &amp; params);&#xD;
+ if (l == -1L)&#xD;
+ OSAL_ERROR (&quot;ON priocntl( , PC_SETPARMS, )&quot;);&#xD;
+}&#xD;
+else {&#xD;
+ // TIME-SHARING&#xD;
+ // We have to be super-user to modify the priority&#xD;
+}&#xD;
+#endif</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_l17zkE_LEdy2tpS719xBwQ" name="decrMyPriority" specification="_nPwxcE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>TRACEpr (F9);&#xD;
+&#xD;
+int prio = getMyPriority ();&#xD;
+PR (&quot;old priority = &quot; &lt;&lt; prio);&#xD;
+&#xD;
+#ifdef SYSTEM_VxWorks&#xD;
+ prio = -1;&#xD;
+ OSAL_ERROR (&quot;Not available with VxWorks&quot;); //-VxW&#xD;
+&#xD;
+#elif defined SYSTEM_POSIX4&#xD;
+ setMyPriority (prio - decrement);&#xD;
+&#xD;
+#else&#xD;
+ // Linux or other&#xD;
+ if (getPolicy () != SCHED_OTHER)&#xD;
+ { // REAL-TIME&#xD;
+ setMyPriority (prio - decrement);&#xD;
+ }&#xD;
+ else&#xD;
+ { // TIME-SHARING&#xD;
+ if (nice (decrement) == -1)&#xD;
+ OSAL_ERROR (&quot;ON nice()&quot;);&#xD;
+ }&#xD;
+ PR (&quot;, new = &quot; &lt;&lt; getMyPriority() &lt;&lt; showI);&#xD;
+#endif</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qwMuIE_LEdy2tpS719xBwQ" name="getMyPriority" specification="_nUPBwE_EEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>int prio;&#xD;
+&#xD;
+#if defined SYSTEM_VxWorks&#xD;
+ prio = -1;&#xD;
+ OSAL_ERROR (&quot;Not available with VxWorks&quot;); //-VxW&#xD;
+&#xD;
+#elif defined SYSTEM_POSIX4&#xD;
+ struct sched_param params;&#xD;
+ int r;&#xD;
+&#xD;
+ r = sched_getparam (0, &amp;params);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON sched_getparam()&quot;);&#xD;
+ prio = params.sched_priority;&#xD;
+&#xD;
+&#xD;
+#elif defined SYSTEM_Linux&#xD;
+ if (getPolicy () != SCHED_OTHER)&#xD;
+ {&#xD;
+ // SCHED_RR or SCHED_FIFO: use POSIX functions to get static priority&#xD;
+ struct sched_param params;&#xD;
+ int r;&#xD;
+&#xD;
+ r = sched_getparam (0, &amp;params);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON sched_getparam()&quot;);&#xD;
+ prio = params.sched_priority;&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ // SCHED_OTHER: i.e. time-sharing like for Solaris: dynamic priority&#xD;
+ errno = 0;&#xD;
+ prio = getpriority (PRIO_PROCESS, getPid ());&#xD;
+ if ((prio == -1) &amp;&amp; (errno != 0))&#xD;
+ OSAL_ERROR (&quot;ON getpriority()&quot;);&#xD;
+ }&#xD;
+#else&#xD;
+ pcparms_t params;&#xD;
+ params.pc_cid = classId;&#xD;
+ long l;&#xD;
+ l = priocntl (P_PID, P_MYID, PC_GETPARMS, (caddr_t) &amp; params);&#xD;
+ if (l == -1L)&#xD;
+ OSAL_ERROR (&quot;ON priocntl( , PC_GETPARMS, )&quot;);&#xD;
+&#xD;
+ if (isRealTime ())&#xD;
+ { // REAL-TIME&#xD;
+ rtparms_t *rtParms = (rtparms_t *) params.pc_clparms;&#xD;
+ prio = rtParms->rt_pri;&#xD;
+ }&#xD;
+ else&#xD;
+ { // TIME-SHARING&#xD;
+ tsparms_t *tsParms = (tsparms_t *) params.pc_clparms;&#xD;
+ prio = tsParms->ts_upri;&#xD;
+ }&#xD;
+#endif&#xD;
+&#xD;
+ return prio;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0PIGsE_LEdy2tpS719xBwQ" name="exitErr" specification="_cjQWAE_FEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>OS_AL::Util::BString500 str0 (&quot;error in &quot;);&#xD;
+exitErrP (str0 &lt;&lt; file &lt;&lt; &quot;:&quot; &lt;&lt; line &lt;&lt; &quot; : &quot; &lt;&lt; str);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2eoEIE_LEdy2tpS719xBwQ" name="exitErr" specification="_cpEqIE_FEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>OS_AL::Util::BString500 str0 (&quot;error in &quot;);&#xD;
+exitErrP (str0 &lt;&lt; file &lt;&lt; &quot;:&quot; &lt;&lt; line &lt;&lt; &quot; : &quot; &lt;&lt; str);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_5RSZAE_LEdy2tpS719xBwQ" name="exitErrP" specification="_Lv9bIE_JEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body>if (m_sigOnErr == 0)&#xD;
+ init ();&#xD;
+&#xD;
+OS_AL::Util::Print pr1;&#xD;
+pr1 &lt;&lt; str &lt;&lt; showErr;&#xD;
+&#xD;
+if (errno)&#xD;
+ pr1 &lt;&lt; &quot; - error code/msg: &quot; &lt;&lt; strerror (errno);&#xD;
+errno = 0;&#xD;
+&#xD;
+if (m_pauseOnErr) {&#xD;
+ OS_AL::Util::Print pr2;&#xD;
+ pr2 &lt;&lt; &quot;\n\t pausing due to error!&quot; &lt;&lt; showI;&#xD;
+ pause (); // or for(;;) for debugger: debug appliX pid&#xD;
+}&#xD;
+&#xD;
+// removed code that sends a signal instead of exiting&#xD;
+// [todo: reason might have been clean-up?]&#xD;
+exit (1);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_Wg_Y8E_CEdy2tpS719xBwQ" name="init" isStatic="true" method="_Fuv0sE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_oVPdsE_CEdy2tpS719xBwQ" name="errSig">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oViYoE_CEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oVsJoE_CEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_qDqHUE_CEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Wn__4E_CEdy2tpS719xBwQ" name="existEnv" isStatic="true" method="_InEssE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_w1b9IE_CEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w1lHEE_CEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w14CAE_CEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yvU28E_CEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_w5c6cE_CEdy2tpS719xBwQ" name="name">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w5wccE_CEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w55mYE_CEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1G39IE_CEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WtXBAE_CEdy2tpS719xBwQ" name="getEnv" isStatic="true" method="_K8r5ME_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_5wJ1YE_CEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5wcwUE_CEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5wvrQE_CEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_8e8W4E_CEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_5y1V8E_CEdy2tpS719xBwQ" name="name">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5zIQ4E_CEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5zSB4E_CEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AQyQ0E_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Wx1RUE_CEdy2tpS719xBwQ" name="getEnvInt" isStatic="true" method="_NumnME_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_bktVAE_DEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_blAP8E_DEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_blKA8E_DEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dA8pgE_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_bmpOsE_DEdy2tpS719xBwQ" name="name">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bnF6oE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bnProE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_hr3ggE_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_bolIYE_DEdy2tpS719xBwQ" name="base">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bo4DUE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bpB0UE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jQJWsE_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_W2mckE_CEdy2tpS719xBwQ" name="isEnvTrue" isStatic="true" method="_Qc9D0E_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_riMFYE_DEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rifAUE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rioxUE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_tLio0E_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_rj1EIE_DEdy2tpS719xBwQ" name="name">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rkH_EE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rkRwEE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vwDM8E_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_W8HOsE_CEdy2tpS719xBwQ" name="getCommProcNb" isStatic="true" method="_TRQXcE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_1Fu4ME_DEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1F4pME_DEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1GCaME_DEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2aXv4E_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_XA4Z8E_CEdy2tpS719xBwQ" name="saveArg" isStatic="true" method="_VJXIkE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_5aAJwE_DEdy2tpS719xBwQ" name="argc">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5aTrwE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5ac1sE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_7aT0oE_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_5by5gE_DEdy2tpS719xBwQ" name="argv">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5cF0cE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5cPlcE_DEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-yFBsE_DEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_EmmlEE_EEdy2tpS719xBwQ" name="setZoneNumber" isStatic="true" method="_XD2fUE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_Ipl5YE_EEdy2tpS719xBwQ" name="zoneNumber">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ip40UE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IqClUE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_KWEpUE_EEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FQU3gE_EEdy2tpS719xBwQ" name="getZoneNumber" isStatic="true" method="_Zj4zIE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_MZM-sE_EEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MZf5oE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MZpqoE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Nm_AcE_EEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Qd0qsE_EEdy2tpS719xBwQ" name="getZoneName" isStatic="true" method="_IMMkAE_KEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_T-YnYE_EEdy2tpS719xBwQ" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T-sJYE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T-1TUE_EEdy2tpS719xBwQ" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Qpmc4E_EEdy2tpS719xBwQ" name="setZoneName" isStatic="true" method="_GgAvAE_KEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_clSLwE_EEdy2tpS719xBwQ" name="zoneName" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_clltwE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_clu3sE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ebTSME_EEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_m11OgE_EEdy2tpS719xBwQ" name="getPid" isStatic="true" method="_J41E8E_KEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_uZYfgE_EEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uZracE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uZ1LcE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vxwAoE_EEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_m8ZJgE_EEdy2tpS719xBwQ" name="getParentPid" isStatic="true" method="_LgsaoE_KEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_wI2SAE_EEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wJJM8E_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wJSW4E_EEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xf3vUE_EEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nCDsoE_EEdy2tpS719xBwQ" name="getPrioMax" isStatic="true" method="_dMM9oE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_y5a8ME_EEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y5ueME_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y53oIE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_14A0QE_EEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nGrG4E_EEdy2tpS719xBwQ" name="getPrioMin" isStatic="true" method="_fW7v0E_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_2u2VoE_EEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2u_fkE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2vJQkE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_39-bME_EEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nL4-EE_EEdy2tpS719xBwQ" name="setMyPriority" isStatic="true" method="_i-fsYE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="__a9xME_EEdy2tpS719xBwQ" name="prio">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__bQsIE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__badIE_EEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Atz5IE_FEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nPwxcE_EEdy2tpS719xBwQ" name="decrMyPriority" isStatic="true" method="_l17zkE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_CMlkQE_FEdy2tpS719xBwQ" name="decrement">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CMuuME_FEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CNCQME_FEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_DWM3sE_FEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nUPBwE_EEdy2tpS719xBwQ" name="getMyPriority" isStatic="true" method="_qwMuIE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_ERzkUE_FEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ER8uQE_FEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ESQQQE_FEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Fh-LsE_FEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_cjQWAE_FEdy2tpS719xBwQ" name="exitErr" isStatic="true" method="_0PIGsE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_wYs2cE_FEdy2tpS719xBwQ" name="line">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wY2AYE_FEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wZI7UE_FEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ynJrAE_FEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_wb-M4E_FEdy2tpS719xBwQ" name="file">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wcRu4E_FEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wca40E_FEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_0wsKYE_FEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_wfQKYE_FEdy2tpS719xBwQ" name="str">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wfs2UE_FEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wf2nUE_FEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3KLKQE_FEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_cpEqIE_FEdy2tpS719xBwQ" name="exitErr" isStatic="true" method="_2eoEIE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_BemAYE_GEdy2tpS719xBwQ" name="line">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Be5iYE_GEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BfCsUE_GEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_C86_kE_GEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_BiBu4E_GEdy2tpS719xBwQ" name="file">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BiK40E_GEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BiUp0E_GEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_FYMIIE_GEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_BlTsYE_GEdy2tpS719xBwQ" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Blc2UE_GEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BlvxQE_GEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GzPJ0E_GEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fBQXkE_HEdy2tpS719xBwQ" name="getArgc" isStatic="true" method="_wzzhQE_JEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_6NopUE_HEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6NyaUE_HEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6N8LUE_HEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_7zRKYE_HEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fMk2wE_HEdy2tpS719xBwQ" name="getArgv" isStatic="true" method="_0-1-UE_JEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_9L7mcE_HEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9MOhYE_HEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9MYSYE_HEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-mYLME_HEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_9OdWAE_HEdy2tpS719xBwQ" name="pos">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9OnHAE_HEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9Ow4AE_HEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_BGk3EE_IEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fRpkAE_HEdy2tpS719xBwQ" name="getArgv" isStatic="true" method="_zW-ooE_JEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_G6XaoE_IEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G6qVkE_IEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G60GkE_IEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IR-t0E_IEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fWj5ME_HEdy2tpS719xBwQ" name="getPauseOnErr" isStatic="true" method="_NcEiME_KEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_NEzjoE_IEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NFGekE_IEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NFQPkE_IEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Oca20E_IEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fbomcE_HEdy2tpS719xBwQ" name="getClassId" isStatic="true" method="_Q5DmcE_KEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_RweBgE_IEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RwxjgE_IEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RxEecE_IEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_UxSuME_IEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ffqK0E_HEdy2tpS719xBwQ" name="getNumerOfProcesses" isStatic="true" method="_SYbHcE_KEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_WDsxQE_IEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WD_sME_IEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WEJdME_IEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_XKokIE_IEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_fkkgAE_HEdy2tpS719xBwQ" name="getPolicy" isStatic="true" method="_UKkagE_KEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_YBBZkE_IEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YBUUgE_IEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YBeFgE_IEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ZLrO0E_IEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Lv9bIE_JEdy2tpS719xBwQ" name="exitErrP" visibility="private" isStatic="true" method="_5RSZAE_LEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_NHIpcE_JEdy2tpS719xBwQ" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NHRzYE_JEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NHlVYE_JEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_PWe14E_JEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_y3w2sE_BEdy2tpS719xBwQ" name="FromProDesctoBString200" client="_oSgIME_BEdy2tpS719xBwQ" supplier="_0AwCEDO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TVGDsE_NEdy2tpS719xBwQ" name="System">
+ <ownedComment xmi:id="_d2e-0E_NEdy2tpS719xBwQ" annotatedElement="_TVGDsE_NEdy2tpS719xBwQ">
+ <body>Provide information about the system, mainly UTS information&#xD;
+(uname), as well as the number of processors, the number of message&#xD;
+queues.&#xD;
+Only partially used.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_QFAjQE_eEdy2tpS719xBwQ" name="m_cpuNb" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QFTeME_eEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QFdPME_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_QJezkE_eEdy2tpS719xBwQ" name="m_mqMax" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QJxugE_eEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QJxugU_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_QNM18E_eEdy2tpS719xBwQ" name="m_semsMax" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QNgX8E_eEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QNgX8U_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Z_zYcE_eEdy2tpS719xBwQ" name="m_hostId" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aAGTYE_eEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aAQEYE_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_c8Tl0E_eEdy2tpS719xBwQ" name="m_hostName" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c8mgwE_eEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c8mgwU_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_c_4eQE_eEdy2tpS719xBwQ" name="m_machine" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dALZME_eEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dAVKME_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_dC25wE_eEdy2tpS719xBwQ" name="m_release" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dDTlsE_eEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dDTlsU_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_dF18UE_eEdy2tpS719xBwQ" name="m_sysname" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dGI3QE_eEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dGSoQE_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_dJHSwE_eEdy2tpS719xBwQ" name="m_version" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dJa0wE_eEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dJj-sE_eEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_8jvtoE_eEdy2tpS719xBwQ" name="getCpuNb" specification="_pLuYwE_NEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_cpuNb;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9vvmsE_eEdy2tpS719xBwQ" name="setCpuNb" specification="_v9NToE_NEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> m_cpuNb = cpuNb;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__E1KUE_eEdy2tpS719xBwQ" name="getMqMax" specification="_361RgE_NEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_mqMax;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AneBwE_fEdy2tpS719xBwQ" name="setMqMax" specification="_7k7ksE_NEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> m_mqMax = mqMax;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Cm4UwE_fEdy2tpS719xBwQ" name="getSemsMax" specification="_EQ5PQE_OEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_semsMax;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_D09RcE_fEdy2tpS719xBwQ" name="setSemsMax" specification="_EW2tUE_OEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> m_semsMax = semsMax;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FDMmME_fEdy2tpS719xBwQ" name="getHostId" specification="_R3kgUE_OEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_hostId;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GbaWUE_fEdy2tpS719xBwQ" name="getHostName" specification="_R8VrkE_OEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_hostName;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_I9Yj0E_fEdy2tpS719xBwQ" name="getMachine" specification="_SCJ_sE_OEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_machine;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KHltIE_fEdy2tpS719xBwQ" name="getRelease" specification="_SHhA0E_OEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_release;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LMvXUE_fEdy2tpS719xBwQ" name="getSysName" specification="_SMSMEE_OEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_sysname;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MUtE8E_fEdy2tpS719xBwQ" name="getVersion" specification="_SQdhcE_OEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return m_version;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hdJeUE_fEdy2tpS719xBwQ" name="init" specification="_mZzqwE_NEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> m_hostName = m_machine = m_release = m_sysname = m_version = &quot;&quot;;&#xD;
+&#xD;
+ // =======================================================================&#xD;
+#if defined SYSTEM_Cygwin&#xD;
+ m_cpuNb = 1; // default value&#xD;
+&#xD;
+ // Max number of opened MQ&#xD;
+ m_mqMax = _SC_MQ_OPEN_MAX;&#xD;
+ // Max number of semaphores&#xD;
+ m_semsMax = _SC_SEM_NSEMS_MAX;&#xD;
+&#xD;
+ // other system infos&#xD;
+ m_hostId = gethostid ();&#xD;
+ int hostIndex = 0;&#xD;
+&#xD;
+#elif defined SYSTEM_POSIX4 || defined SYSTEM_Linux&#xD;
+ m_cpuNb = 1; // default value&#xD;
+&#xD;
+ //*** Max number of Message Queues ***//&#xD;
+ errno = 0;&#xD;
+ m_mqMax = _POSIX_MQ_OPEN_MAX;&#xD;
+&#xD;
+ errno = 0;&#xD;
+ m_semsMax = _POSIX_SEM_NSEMS_MAX;&#xD;
+&#xD;
+ // other system infos&#xD;
+ m_hostId = gethostid ();&#xD;
+&#xD;
+ // =======================================================================&#xD;
+#elif defined SYSTEM_Solaris&#xD;
+ // Number of configured CPUs&#xD;
+ // or? _SC_NPROCESSORS_ONLN (see sysconf(3C) )&#xD;
+ m_cpuNb = sysconf (_SC_NPROCESSORS_CONF);&#xD;
+&#xD;
+ //*** Max number of Message Queues ***//&#xD;
+ errno = 0;&#xD;
+ m_mqMax = sysconf (_SC_OPEN_MAX); // _SC_MQ_OPEN_MAX 'not defined...'&#xD;
+&#xD;
+ if (m_mqMax == -1)&#xD;
+ OSAL_ERROR (&quot;ON sysconf(_SC_OPEN_MAX)&quot;);&#xD;
+&#xD;
+ //*** Max number of Semaphores ***//&#xD;
+ /*&#xD;
+ semsMax= sysconf(_SC_SEM_NSEMS_MAX);&#xD;
+ Extract of sysconf(3C) : If sysconf() fails due to&#xD;
+ a value of name that is not defined on the system, the func-&#xD;
+ tion will return a value of -1 without changing the value of&#xD;
+ errno&#xD;
+ */&#xD;
+&#xD;
+ /* in which library is _sysconf() ?&#xD;
+ #include &lt;sys/sysconfig.h>&#xD;
+ int _sysconf(int);&#xD;
+&#xD;
+ semsMax = _sysconf(_CONFIG_SEM_NSEMS_MAX);&#xD;
+ if (semsMax == -1)&#xD;
+ OSAL_ERROR(&quot;ON sysconf(SEM_NSEMS_MAX)&quot;);&#xD;
+ */&#xD;
+ m_semsMax = 25; // semget( ) --> EINVAL au dela de 25&#xD;
+&#xD;
+ // =======================================================================&#xD;
+&#xD;
+#elif defined SYSTEM_VxWorks&#xD;
+ m_cpuNb = 1; // default value&#xD;
+&#xD;
+ //*** Max number of Message Queues ***//&#xD;
+ errno = 0;&#xD;
+ m_mqMax = SM_OBJ_MAX_MSG_Q;&#xD;
+&#xD;
+ //*** Max number of Semaphores ***//&#xD;
+ errno = 0;&#xD;
+ m_semsMax = SM_OBJ_MAX_SEM;&#xD;
+&#xD;
+ // =======================================================================&#xD;
+#endif&#xD;
+&#xD;
+&#xD;
+#if defined SYSTEM_Linux || defined SYSTEM_Solaris&#xD;
+ struct utsname names;&#xD;
+ if (uname (&amp;names) &lt; 0)&#xD;
+ OSAL_ERROR (&quot;ON uname( )&quot;);&#xD;
+&#xD;
+ m_hostName = names.nodename;&#xD;
+ m_sysname = names.sysname;&#xD;
+ m_release = names.release;&#xD;
+ m_version = names.version;&#xD;
+ m_machine = names.machine;&#xD;
+#endif&#xD;
+&#xD;
+#ifdef DEBUG&#xD;
+ activateDebugTimer ();&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_mZzqwE_NEdy2tpS719xBwQ" name="init" isStatic="true" method="_hdJeUE_fEdy2tpS719xBwQ"/>
+ <ownedOperation xmi:id="_pLuYwE_NEdy2tpS719xBwQ" name="getCpuNb" isStatic="true" method="_8jvtoE_eEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_uMQTYE_NEdy2tpS719xBwQ" annotatedElement="_pLuYwE_NEdy2tpS719xBwQ">
+ <body>returns the number of CPUs</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_q6vfUE_NEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q7CaQE_NEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q7MLQE_NEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_swKv4E_NEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_v9NToE_NEdy2tpS719xBwQ" name="setCpuNb" isStatic="true" method="_9vvmsE_eEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_ypKjkE_NEdy2tpS719xBwQ" name="cpuNb">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ypeFkE_NEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ypxAgE_NEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_0lS5EE_NEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_361RgE_NEdy2tpS719xBwQ" name="getMqMax" isStatic="true" method="__E1KUE_eEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_AuPn4E_OEdy2tpS719xBwQ" annotatedElement="_361RgE_NEdy2tpS719xBwQ">
+ <body>returns the number of message queues (useful?)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_48GhQE_NEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_48PrME_NEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_48ZcME_NEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6KoJ4E_NEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7k7ksE_NEdy2tpS719xBwQ" name="setMqMax" isStatic="true" method="_AneBwE_fEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_9jlpwE_NEdy2tpS719xBwQ" name="mqMax">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9jvawE_NEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9kCVsE_NEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-0DzIE_NEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_EQ5PQE_OEdy2tpS719xBwQ" name="getSemsMax" isStatic="true" method="_Cm4UwE_fEdy2tpS719xBwQ">
+ <ownedComment xmi:id="_OTvNME_OEdy2tpS719xBwQ" annotatedElement="_EQ5PQE_OEdy2tpS719xBwQ">
+ <body>returns the number of semaphores</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_HPLlUE_OEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HPfHUE_OEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HPoRQE_OEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IxiI4E_OEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_EW2tUE_OEdy2tpS719xBwQ" name="setSemsMax" isStatic="true" method="_D09RcE_fEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_JzPdgE_OEdy2tpS719xBwQ" name="semsMax">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jzi_gE_OEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JzsJcE_OEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_MavEME_OEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_R3kgUE_OEdy2tpS719xBwQ" name="getHostId" isStatic="true" method="_FDMmME_fEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_VLd6AE_OEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VLxcAE_OEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VL6l8E_OEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WgGxsE_OEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_R8VrkE_OEdy2tpS719xBwQ" name="getHostName" isStatic="true" method="_GbaWUE_fEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_YIRCUE_OEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YIazUE_OEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YItuQE_OEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Z6RLcE_OEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SCJ_sE_OEdy2tpS719xBwQ" name="getMachine" isStatic="true" method="_I9Yj0E_fEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_1uCPgE_dEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1uVKcE_dEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1ue7cE_dEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3uo1UE_dEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SHhA0E_OEdy2tpS719xBwQ" name="getRelease" isStatic="true" method="_KHltIE_fEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="__yhMME_dEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__y0HIE_dEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__y94IE_dEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_A-0AME_eEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SMSMEE_OEdy2tpS719xBwQ" name="getSysName" isStatic="true" method="_LMvXUE_fEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_BjxHYE_eEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Bj6RUE_eEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BkECUE_eEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_DK4PIE_eEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SQdhcE_OEdy2tpS719xBwQ" name="getVersion" isStatic="true" method="_MUtE8E_fEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_DiSCgE_eEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Dik9cE_eEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DiuHYE_eEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_E2BiUE_eEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_Az5ewE_gEdy2tpS719xBwQ" name="FromThreadtoThreadAttribute" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_Saw1YDkDEdyuzNpSiGPe4w"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_GNdkcE_gEdy2tpS719xBwQ" name="FromThreadtoSemaphore" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_D8njME_gEdy2tpS719xBwQ"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_NdL6gE_gEdy2tpS719xBwQ" name="FromThreadtoBString50" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3QgjUE_nEdy2tpS719xBwQ" name="Association_Thread_ThreadAttribute" memberEnd="_3Q0FUE_nEdy2tpS719xBwQ _3RjsMk_nEdy2tpS719xBwQ">
+ <ownedEnd xmi:id="_3RjsMk_nEdy2tpS719xBwQ" name="thread" type="_-HeCsDj_Edy0Rd6V_tf1-Q" isUnique="false" association="_3QgjUE_nEdy2tpS719xBwQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3STTEU_nEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3STTEE_nEdy2tpS719xBwQ" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_LLUE4E_oEdy2tpS719xBwQ" name="Association_Thread_Semaphore" memberEnd="_LLUE4U_oEdy2tpS719xBwQ _LMNcwE_oEdy2tpS719xBwQ">
+ <ownedEnd xmi:id="_LMNcwE_oEdy2tpS719xBwQ" name="thread" type="_-HeCsDj_Edy0Rd6V_tf1-Q" isUnique="false" association="_LLUE4E_oEdy2tpS719xBwQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LMzSoE_oEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LMqIsk_oEdy2tpS719xBwQ" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_9-OUUE_uEdy2tpS719xBwQ" clientDependency="_GhsKME_vEdy2tpS719xBwQ _I0BZME_vEdy2tpS719xBwQ" name="ThreadContext">
+ <ownedComment xmi:id="_UrPe0E_vEdy2tpS719xBwQ" annotatedElement="_9-OUUE_uEdy2tpS719xBwQ">
+ <body>Provide a context for storing pointers (get/savePtr).&#xD;
+There is currently only one use of this class in SRcompeting (and the&#xD;
+getPtr part is commented out => reconsider whether this class is needed)</body>
+ </ownedComment>
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_Z03EAE_vEdy2tpS719xBwQ" parameter="_a5QgQE_vEdy2tpS719xBwQ">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_a5QgQE_vEdy2tpS719xBwQ" parameteredElement="_eGJTAE_vEdy2tpS719xBwQ">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_eGJTAE_vEdy2tpS719xBwQ" name="CLASS" templateParameter="_a5QgQE_vEdy2tpS719xBwQ"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <ownedAttribute xmi:id="_Rt3nYE_yEdy2tpS719xBwQ" name="key" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RuKiUE_yEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RuUTUE_yEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_RwZ-AE_yEdy2tpS719xBwQ" name="dataPtr" visibility="public" type="_eGJTAE_vEdy2tpS719xBwQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Rws48E_yEdy2tpS719xBwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Rw2p8E_yEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_1oie8E_yEdy2tpS719xBwQ" name="instanceNb" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1o_K4E_yEdy2tpS719xBwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1o_K4U_yEdy2tpS719xBwQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_69LoYE_yEdy2tpS719xBwQ" name="_key" specification="_D9gO0E_yEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return key;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_8Tde0E_yEdy2tpS719xBwQ" name="set_key" specification="_ECHpEE_yEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> key = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_9ceVUE_yEdy2tpS719xBwQ" name="_dataPtr" specification="_EJIQAE_yEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> return dataPtr;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_BTiGcE_zEdy2tpS719xBwQ" name="set_dataPtr" specification="_ETtIUE_yEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> dataPtr = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DoZsEE_zEdy2tpS719xBwQ" name="ThreadContext" specification="_ZtXqAE_xEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> set_dataPtr (NULL);&#xD;
+&#xD;
+ TRACEpr (VM);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ if (++instanceNb > 1)&#xD;
+ {&#xD;
+ OSAL_ERROR (&quot;in ThreadContext::ThreadContext: ++instanceNb > 1&quot;);&#xD;
+ }&#xD;
+&#xD;
+ // puisque seulement 1 instance , key peut être non 'static' &#xD;
+ // et pas de précaution par mutex&#xD;
+#if defined THREAD_POSIX4&#xD;
+ errno = pthread_key_create (&amp;key, NULL);&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;ON pthread_key_create()&quot;);&#xD;
+ }&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ errno = thr_keycreate (&amp;key, NULL);&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;ON thr_keycreate()&quot;);&#xD;
+ }&#xD;
+&#xD;
+#elif defined THREAD_VxWorks //-VxW&#xD;
+ ;&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GrAhcE_zEdy2tpS719xBwQ" name="savePtr" specification="_Z2BPsE_xEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> // A utiliser au début du code exécuté par un thread nouveau susceptible&#xD;
+ // d'avoir besoin du pointeur (spécifique de ce thread)&#xD;
+ // via une variable globale (cf. operateur -> surchargé)&#xD;
+&#xD;
+ TRACEpr (VM);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ dataPtr = ptr;&#xD;
+#if defined THREAD_POSIX4&#xD;
+ errno = pthread_setspecific (key, dataPtr);&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;ON pthread_setspecific()&quot;);&#xD;
+ }&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ errno = thr_setspecific (key, dataPtr);&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;ON thr_setspecific()&quot;);&#xD;
+ }&#xD;
+&#xD;
+#elif defined THREAD_VxWorks //-VxW&#xD;
+ errno = taskVarAdd (0, (int *) &amp;dataPtr);&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;ON taskVarAdd()&quot;);&#xD;
+ }&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JDmJcE_zEdy2tpS719xBwQ" name="getPtr" specification="_Z7FV4E_xEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> // useful to allow check :&#xD;
+ // if (globalVar.getPtr() ==NULL) // in client side,&#xD;
+ // before globalVar->memberOfCLASS&#xD;
+&#xD;
+ // Get the thread specific pointer&#xD;
+#if defined THREAD_POSIX4&#xD;
+ dataPtr = (CLASS *) pthread_getspecific (key);&#xD;
+&#xD;
+#elif defined THREAD_Solaris&#xD;
+ errno = thr_getspecific (key, (void **) &amp;dataPtr);&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;ON thr_getspecific()&quot;);&#xD;
+ }&#xD;
+&#xD;
+#elif defined THREAD_VxWorks //-VxW&#xD;
+ // l'attribut 'dataPtr' doit être restauré par le système&#xD;
+ // pour ce thread à chaque fois qu'il est réélu pour la CPU&#xD;
+ ;&#xD;
+#endif&#xD;
+&#xD;
+ return dataPtr;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_M_R74E_zEdy2tpS719xBwQ" name="operator->" specification="_aJrykE_xEdy2tpS719xBwQ">
+ <language>C/C++</language>
+ <body> // Overload of ->&#xD;
+ // since the unique instance of ThrCtxt&lt;CLASS> is a global variable&#xD;
+ // directly accessed (not via a pointer)&#xD;
+ // operator-> can't be confused with access to members of ThrCtxt&lt;CLASS>&#xD;
+ // globalVar.savePtr(...)&#xD;
+ // globalVar->memberOfCLASS // to Access to the thread specific data&#xD;
+&#xD;
+ TRACEpr (VM);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ CLASS *dataP = getPtr ();&#xD;
+&#xD;
+ if (dataP == NULL) {&#xD;
+ OSAL_ERROR (&quot;lack of previous 'globalVar.savePtr(...)'&quot;);&#xD;
+ }&#xD;
+&#xD;
+ return dataP;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_ZtXqAE_xEdy2tpS719xBwQ" name="ThreadContext" method="_DoZsEE_zEdy2tpS719xBwQ"/>
+ <ownedOperation xmi:id="_Z2BPsE_xEdy2tpS719xBwQ" name="savePtr" method="_GrAhcE_zEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_n-EvgE_xEdy2tpS719xBwQ" name="ptr" type="_eGJTAE_vEdy2tpS719xBwQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n-XqcE_xEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n-hbcE_xEdy2tpS719xBwQ" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Z7FV4E_xEdy2tpS719xBwQ" name="getPtr" method="_JDmJcE_zEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_vzzVoE_xEdy2tpS719xBwQ" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v0GQkE_xEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v0QBkE_xEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xTdxkE_xEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aJrykE_xEdy2tpS719xBwQ" name="operator->" method="_M_R74E_zEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_1w0tsE_xEdy2tpS719xBwQ" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1xRZoE_xEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1xbKoE_xEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2pTN0E_xEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_D9gO0E_yEdy2tpS719xBwQ" name="_key" method="_69LoYE_yEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_blraAE_yEdy2tpS719xBwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bl-8AE_yEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bmIF8E_yEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_cuGaoE_yEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ECHpEE_yEdy2tpS719xBwQ" name="set_key" method="_8Tde0E_yEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_e1jPUE_yEdy2tpS719xBwQ" name="cr_operand">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_e12xUE_yEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_e2JsQE_yEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_gBs5YE_yEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_EJIQAE_yEdy2tpS719xBwQ" name="_dataPtr" method="_9ceVUE_yEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_iqPB4E_yEdy2tpS719xBwQ" name="param_0" type="_eGJTAE_vEdy2tpS719xBwQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iqh80E_yEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iqrt0E_yEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_mc1JwE_yEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ETtIUE_yEdy2tpS719xBwQ" name="set_dataPtr" method="_BTiGcE_zEdy2tpS719xBwQ">
+ <ownedParameter xmi:id="_tK4WIE_yEdy2tpS719xBwQ" name="cr_operand" type="_eGJTAE_vEdy2tpS719xBwQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tLLREE_yEdy2tpS719xBwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tLeMAE_yEdy2tpS719xBwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_uQnPIE_yEdy2tpS719xBwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_GhsKME_vEdy2tpS719xBwQ" name="FromThreadContexttoProDesc" client="_9-OUUE_uEdy2tpS719xBwQ" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_I0BZME_vEdy2tpS719xBwQ" name="FromThreadContexttoTrace" client="_9-OUUE_uEdy2tpS719xBwQ" supplier="_1DM54DxBEdyfAeav5abbAw"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_kor6MFdhEd-9TNLvplUFDQ" name="funcPtr_AvpRvp"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_l2xogFdiEd-9TNLvplUFDQ" name="ThreadId"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_5J3-8FdkEd-9TNLvplUFDQ" name="sigset_t"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_BARjMFnFEd-9TNLvplUFDQ" name="FromProDesctoBString200" client="_oSgIME_BEdy2tpS719xBwQ" supplier="_0AwCEDO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_HQSIsFnFEd-9TNLvplUFDQ" name="FromProDesctoBString500" client="_oSgIME_BEdy2tpS719xBwQ" supplier="_1vnXoDO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_JMMZwFnbEd-9TNLvplUFDQ" name="FromThreadtoTrace" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_1DM54DxBEdyfAeav5abbAw"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_aG940FnbEd-9TNLvplUFDQ" name="FromThreadtoSetOf" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_2bXLkDUuEdyDReAOQiyvOg"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_9knnwFncEd-9TNLvplUFDQ" name="FromThreadtoProDesc" client="_-HeCsDj_Edy0Rd6V_tf1-Q" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_q6QRMC-OEdySSa8YESkO2w" name="Sets">
+ <ownedComment xmi:id="_S5s5gDalEdyMZ7r5-upW2A" annotatedElement="_zOJVcDaeEdyC6dXxO2UOEQ">
+ <body>must be stereotyped CppFriend ()not availbale for the moment for classes)</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_xxCKcDUuEdyDReAOQiyvOg" name="BOL">
+ <ownedComment xmi:id="_F7DMsDUvEdyDReAOQiyvOg" annotatedElement="_xxCKcDUuEdyDReAOQiyvOg">
+ <body>The class BOL (Bounded ordered list) is a template class applied to a&#xD;
+certain type element type (ELType). The list consists of cells of type&#xD;
+ListCell&lt;ELType>: the elements are stored by value in each cell. The&#xD;
+element type must have a default constructor.&#xD;
+&#xD;
+The element type has to fulfill two criterions:&#xD;
+ - It has to define a comparison relation to enable the insertion of an&#xD;
+ element at the right position within the list. It requires the existence&#xD;
+ of the operators ElType::operator>= and ElType::operator!=&#xD;
+&#xD;
+ - the second criterion rests on the identity of data of two elements,&#xD;
+ independently of the value being used for their scheduling. It makes it&#xD;
+ possible to compare two elements or to seek an element in the list and to&#xD;
+ modify it. It requires l'existence of the method ElType::sameAs() and&#xD;
+ possibly of the operator ElType::operator=&#xD;
+&#xD;
+These two criteria can be independent. The super class of BOL, SMO,&#xD;
+redefines the new operator to allows for specifying an address where to&#xD;
+the instance should be located in memory. The class BOL can be used for&#xD;
+any management * of ordered lists according to specified comparison&#xD;
+criterions'. A list of unlimited size has to create and release memory&#xD;
+dynamicylly, which is expensive. Moreover, one list divided between&#xD;
+several processes and established in a shared memory segment of fixed&#xD;
+size must itself be of a limited size that has to be known at creation.</body>
+ </ownedComment>
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_RKC0sDUvEdyDReAOQiyvOg" parameter="_Vvc5kDUvEdyDReAOQiyvOg">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_Vvc5kDUvEdyDReAOQiyvOg" parameteredElement="_XE1_MDUvEdyDReAOQiyvOg">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_XE1_MDUvEdyDReAOQiyvOg" name="ElType" templateParameter="_Vvc5kDUvEdyDReAOQiyvOg"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <ownedAttribute xmi:id="_yaiaUDa2Edyv9PRkTrTu0A" name="beginning" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_yZpCcDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EZ0qYDa3Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EZ-bYDa3Edyv9PRkTrTu0A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_0wvcsDa2Edyv9PRkTrTu0A" name="endElement" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_0wmSwDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NcmScDa3Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NcmScTa3Edyv9PRkTrTu0A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_1ZuIQTa2Edyv9PRkTrTu0A" name="current" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_1ZuIQDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OpotUDa3Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OpyeUDa3Edyv9PRkTrTu0A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_2AnwMTa2Edyv9PRkTrTu0A" name="firstFreeCellule" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_2AnwMDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q7rBYDa3Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q7rBYTa3Edyv9PRkTrTu0A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_3cG2wTa2Edyv9PRkTrTu0A" name="freeMemory" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_3cG2wDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WcF9ADa3Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WcPG8Da3Edyv9PRkTrTu0A" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_8nYBwDa2Edyv9PRkTrTu0A" name="endOfMemory" visibility="protected" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_8nOQwDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ejHHcDa3Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ejQRYDa3Edyv9PRkTrTu0A" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_cYvxYDamEdyMZ7r5-upW2A" name="findElement" specification="_Am2XwDamEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+&#xD;
+ ListCell *cur = beginning, *lstCelPtr = NULL;&#xD;
+ for (; cur->next; cur = cur->next) {&#xD;
+ if (element.sameAs (cur->next->value))&#xD;
+ {&#xD;
+ lstCelPtr = cur;&#xD;
+ break;&#xD;
+ }&#xD;
+ }&#xD;
+ PR (&quot;BOL&lt; ElType >::findElement&quot;);&#xD;
+ &#xD;
+&#xD;
+ return (lstCelPtr);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_zhpmoDamEdyMZ7r5-upW2A" name="findPrevious" specification="_gDSwgDamEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (&quot;BOL&lt; ElType >::findPrevious&quot;);&#xD;
+&#xD;
+ ListCell *cur = beginning;&#xD;
+ for (; cur->next &amp;&amp; element >= cur->next->value; cur = cur->next);&#xD;
+&#xD;
+ return (cur);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_I4Q-4DanEdyMZ7r5-upW2A" name="modifyCellule" specification="_2-Vv8DamEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> // Recherche de la place de la cellule dans la liste :&#xD;
+ if (!(element >= beginning->value)) // C'est le premier.&#xD;
+ {&#xD;
+ cellule->next = beginning;&#xD;
+ beginning = cellule;&#xD;
+ // Il y avait au départ plus d'un élément,&#xD;
+ // le dernier et le premier sont donc différents,&#xD;
+ // endElement est donc à jour.&#xD;
+ }&#xD;
+ else if (element >= endElement->value) // Dernier élément&#xD;
+ {&#xD;
+ endElement->next = cellule;&#xD;
+ endElement = cellule;&#xD;
+ cellule->next = NULL;&#xD;
+ }&#xD;
+ else // Autres cas :&#xD;
+ {&#xD;
+ ListCell *newPrevCel = findPrevious (element);&#xD;
+&#xD;
+ // Réinsertion de la cellule :&#xD;
+ cellule->next = newPrevCel->next;&#xD;
+ newPrevCel->next = cellule;&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__2PqIDa5Edyv9PRkTrTu0A" name="_current" specification="_ORpB4DaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body>return current;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_EpXa4Da6Edyv9PRkTrTu0A" name="set_current" specification="_QxrVsDaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> current = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ILalUDa6Edyv9PRkTrTu0A" name="_beginning" specification="_InFS0DaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> return beginning;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LiAGoDa6Edyv9PRkTrTu0A" name="set_beginning" specification="_Kzm0wDaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> beginning = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_OGEl4Da6Edyv9PRkTrTu0A" name="_endElement" specification="_Mh4UcDaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> return endElement;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RVM0UDa6Edyv9PRkTrTu0A" name="set_endElement" specification="_NLvw0DaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> endElement = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_UDZf8Da6Edyv9PRkTrTu0A" name="_freeMemory" specification="_WklIcDaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> return freeMemory;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Vc9T4Da6Edyv9PRkTrTu0A" name="set_freeMemory" specification="_YZZ8EDaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> freeMemory = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_X405YDa6Edyv9PRkTrTu0A" name="_endOfMemory" specification="_aO0lkDaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> return endOfMemory;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZNniEDa6Edyv9PRkTrTu0A" name="set_endOfMemory" specification="_ddN0MDaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> endOfMemory = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_b9AggDa6Edyv9PRkTrTu0A" name="_firstFreeCellule" specification="_SaIhQDaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> return firstFreeCellule;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dh4zoDa6Edyv9PRkTrTu0A" name="set_firstFreeCellule" specification="_ToX2ADaoEdyMZ7r5-upW2A">
+ <language>C/C++</language>
+ <body> firstFreeCellule = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_j5TBoDa6Edyv9PRkTrTu0A" name="BOL" specification="_ky3HADUyEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (&quot; $$$ endOfMemory : &quot; &lt;&lt; (void *) endOfMemory);&#xD;
+ PR (&quot; - freeMemory : &quot; &lt;&lt; (void *) freeMemory);&#xD;
+ PR (&quot; = &quot; &lt;&lt; (int) endOfMemory - (int) freeMemory &lt;&lt; showI);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_vrKtMDa6Edyv9PRkTrTu0A" name="insert" specification="_9DJbEDUyEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ ElType *elementPtr = NULL;&#xD;
+&#xD;
+ ListCell *newCellule = new (this) ListCell (element);&#xD;
+&#xD;
+ PR (&quot;newCellule=&quot; &lt;&lt; (void *) newCellule &lt;&lt; showI);&#xD;
+&#xD;
+ if (newCellule)&#xD;
+ {&#xD;
+ PR (&quot;beginning=&quot; &lt;&lt; (void *) beginning);&#xD;
+ PR (&quot;, endElement=&quot; &lt;&lt; (void *) endElement &lt;&lt; showI);&#xD;
+&#xD;
+ if (!beginning)&#xD;
+ { // Cas liste vide :&#xD;
+ current = endElement = beginning = newCellule;&#xD;
+ PR (element &lt;&lt; &quot; : single element.&quot;);&#xD;
+ }&#xD;
+ else if (!(element >= beginning->value))&#xD;
+ { // Cas élément plus petit que tous les autres (plus petit que le premier) :&#xD;
+ newCellule->next = beginning;&#xD;
+ beginning = newCellule;&#xD;
+ PR (element &lt;&lt; &quot; : element stored ahead.&quot;);&#xD;
+ }&#xD;
+ else if (element >= endElement->value)&#xD;
+ { // Cas élément plus grand que tous les autres, ou égal au(x) plus grand(s),&#xD;
+ // (supérieur ou égal au dernier de la liste):&#xD;
+ endElement->next = newCellule;&#xD;
+ endElement = newCellule;&#xD;
+ PR (element &lt;&lt; &quot; : element stored at bottom.&quot;);&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ // Cas général, élément à insérer en milieu de liste:&#xD;
+ ListCell *prevCel = findPrevious (element);&#xD;
+ PR (&quot;prevCel=&quot; &lt;&lt; (void *) prevCel &lt;&lt; showI);&#xD;
+ newCellule->next = prevCel->next;&#xD;
+ prevCel->next = newCellule;&#xD;
+ PR (element &lt;&lt; &quot; : element stored after : &quot; &lt;&lt; prevCel->value);&#xD;
+ }&#xD;
+&#xD;
+ elementPtr = &amp;(newCellule->value);&#xD;
+ }&#xD;
+ PR (showI);&#xD;
+&#xD;
+ return elementPtr;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1ITrUDa6Edyv9PRkTrTu0A" name="retract" specification="_-f1bgDUyEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+ bool result = FALSE;&#xD;
+&#xD;
+ if (beginning)&#xD;
+ { // List not empty.&#xD;
+ if (element.sameAs (beginning->value))&#xD;
+ { // Cas où l'élément est le premier de la liste :&#xD;
+ ListCell *nextBeginning = beginning->next;&#xD;
+&#xD;
+ if (endElement == beginning)&#xD;
+ endElement = NULL;&#xD;
+&#xD;
+ beginning->free (this);&#xD;
+&#xD;
+ current = beginning = nextBeginning;&#xD;
+ // Sinon, current risque d'indiquer un élément inexistant ;&#xD;
+&#xD;
+ result = TRUE;&#xD;
+ }&#xD;
+ else&#xD;
+ { // Autres cas :&#xD;
+ ListCell *prevCel = findElement (element);&#xD;
+&#xD;
+ if (prevCel)&#xD;
+ { // L'élément est trouvé.&#xD;
+ // prevCel->next est toujours non NULL, car c'est&#xD;
+ // le précédent. S'il n'y en a pas, c'est soit que la&#xD;
+ // liste est vide (beginning == NULL), soit qu'elle n'a&#xD;
+ // qu'un élément, c'est alors aussi le premier et c'est&#xD;
+ // traité avant !&#xD;
+ ListCell *destroyedCel = prevCel->next;&#xD;
+&#xD;
+ if (prevCel->next->next)&#xD;
+ prevCel->next = prevCel->next->next;&#xD;
+ else // prevCel->next == endElement&#xD;
+ {&#xD;
+ prevCel->next = NULL;&#xD;
+ endElement = prevCel;&#xD;
+ }&#xD;
+&#xD;
+ if (current == destroyedCel)&#xD;
+ current = beginning;&#xD;
+ // Sinon, current risque d'indiquer un élément inexistant.&#xD;
+ destroyedCel->free (this);&#xD;
+ result = TRUE;&#xD;
+ }&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;Element not found !&quot;);&#xD;
+ // ERROR ( &quot;HORREUR, Element inexistant...&quot; ) ;&#xD;
+ }&#xD;
+ }&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;empty list !&quot;);&#xD;
+ // ERROR ( &quot;HORREUR, Retrait d'un element dans une liste vide...&quot; ) ;&#xD;
+&#xD;
+ return result;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4YCWsDa6Edyv9PRkTrTu0A" name="first" specification="_ApOw8DUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ ElType *element = NULL;&#xD;
+&#xD;
+ if (beginning)&#xD;
+ element = &amp;(beginning->value);&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;empty list !&quot;);&#xD;
+// ERROR ( &quot;HORREUR, Demande du premier élément d'une liste vide...&quot; ) ;&#xD;
+&#xD;
+ return ((element));&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7z1IIDa6Edyv9PRkTrTu0A" name="last" specification="_CTesQDUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ ElType *element = NULL;&#xD;
+&#xD;
+ if (endElement)&#xD;
+ element = &amp;(endElement->value);&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;empty list !&quot;);&#xD;
+// ERROR (&quot;HORREUR, Demande du dernier élément d'une liste vide...&quot;) ;&#xD;
+&#xD;
+ return ((element));&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-_iPIDa6Edyv9PRkTrTu0A" name="goFirst" specification="_DrscYDUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ ElType *element = NULL;&#xD;
+&#xD;
+ if (beginning)&#xD;
+ {&#xD;
+ element = &amp;(beginning->value);&#xD;
+ current = beginning;&#xD;
+ }&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;empty list !&quot;);&#xD;
+&#xD;
+ return element;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_CiCFgDa7Edyv9PRkTrTu0A" name="goLast" specification="_E8J-sDUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ ElType *element = NULL;&#xD;
+&#xD;
+ if (endElement)&#xD;
+ {&#xD;
+ element = &amp;(endElement->value);&#xD;
+ current = endElement;&#xD;
+ }&#xD;
+ else {&#xD;
+ OSAL_ERROR (&quot;empty list !&quot;);&#xD;
+ }&#xD;
+&#xD;
+ return element;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FvrGMDa7Edyv9PRkTrTu0A" name="next" specification="_GN0a4DUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ ElType *element = NULL;&#xD;
+&#xD;
+ while (current != NULL &amp;&amp; (index--) > 0)&#xD;
+ {&#xD;
+ if (current->next != NULL)&#xD;
+ {&#xD;
+ element = &amp;(current->next->value);&#xD;
+ current = current->next;&#xD;
+ }&#xD;
+ else {&#xD;
+ // current->next == NULL&#xD;
+ current = NULL;&#xD;
+ }&#xD;
+ }&#xD;
+&#xD;
+ return element;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JX1fsDa7Edyv9PRkTrTu0A" name="modify" specification="_HjplYDUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ ElType *elementPtr = NULL;&#xD;
+&#xD;
+ if (beginning)&#xD;
+ { // List not empty&#xD;
+ if (element.sameAs (beginning->value))&#xD;
+ { // Cas où l'élément est le premier :&#xD;
+ elementPtr = &amp;(beginning->value);&#xD;
+&#xD;
+ if (element != (*elementPtr))&#xD;
+ { // Sa valeur est différente&#xD;
+ beginning->value = element;&#xD;
+ if (beginning->next)&#xD;
+ { // La liste contient plus d'un élément&#xD;
+ if (element >= beginning->next->value)&#xD;
+ modifyFirst (element);&#xD;
+ // else, on ne modifie pas la place, il reste le premier.&#xD;
+ }&#xD;
+ // else, la liste n'a qu'un élément, c'est donc le premier.&#xD;
+ }&#xD;
+ // else, sa valeur est la même que celle qu'on veut mettre,&#xD;
+ // on ne fait donc rien.&#xD;
+ }&#xD;
+&#xD;
+ else {&#xD;
+ ListCell *prevCel = findElement (element);&#xD;
+&#xD;
+ if (prevCel)&#xD;
+ { // L'élément est trouvé&#xD;
+ // prevCel->next est toujours non NULL,&#xD;
+ // car c'est le &quot;précédent&quot;. S'il n'y en a pas,&#xD;
+ // c'est soit que la la liste est vide (beginning == NULL),&#xD;
+ // soit qu'elle n'a qu'un élément qui est alors aussi le&#xD;
+ // premier et cela a été traité avant !&#xD;
+&#xD;
+ elementPtr = &amp;(prevCel->next->value);&#xD;
+&#xD;
+ if (element != (*elementPtr))&#xD;
+ { // Valeur différente.&#xD;
+ // Mémorisation et mise à jour de la cellule :&#xD;
+ ListCell *cellule = prevCel->next;&#xD;
+ cellule->value = element;&#xD;
+&#xD;
+ // Retrait de la cellule de la liste :&#xD;
+ if (cellule == endElement)&#xD;
+ endElement = prevCel;&#xD;
+ prevCel->next = prevCel->next->next;&#xD;
+&#xD;
+ // Recherche de la place de la cellule dans la liste :&#xD;
+ modifyCellule (element, cellule);&#xD;
+&#xD;
+&#xD;
+ }&#xD;
+ // else, sa valeur est la même que celle qu'on veut mettre,&#xD;
+ // on ne fait donc rien.&#xD;
+ }&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;Element not found !&quot;);&#xD;
+ }&#xD;
+ }&#xD;
+ else {&#xD;
+ OSAL_ERROR (&quot;empty list !&quot;);&#xD;
+ }&#xD;
+&#xD;
+ return elementPtr;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_N1y4wDa7Edyv9PRkTrTu0A" name="search" specification="_I_JTADUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ ElType *elementPtr = NULL;&#xD;
+&#xD;
+ if (beginning)&#xD;
+ { // List not empty&#xD;
+ if (element.sameAs (beginning->value))&#xD;
+ // This is the first element&#xD;
+ elementPtr = &amp;(beginning->value);&#xD;
+ else&#xD;
+ {&#xD;
+ ListCell *prevCel = findElement (element);&#xD;
+&#xD;
+ if (prevCel)&#xD;
+ elementPtr = &amp;(prevCel->next->value);&#xD;
+ //else&#xD;
+ // ERROR ( &quot;Element not found !&quot; ) ;&#xD;
+ }&#xD;
+ }&#xD;
+ else {&#xD;
+ OSAL_ERROR (&quot;empty list !&quot;);&#xD;
+ }&#xD;
+&#xD;
+ return elementPtr;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QeojQDa7Edyv9PRkTrTu0A" name="isEmpty" specification="_KWxNQDUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (showI);&#xD;
+&#xD;
+ return (beginning ? FALSE : TRUE);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ToGOkDa7Edyv9PRkTrTu0A" name="BOL" specification="_MPd0QDUzEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body> current = beginning;&#xD;
+ ListCell *destroyedCel;&#xD;
+ while (current)&#xD;
+ {&#xD;
+ destroyedCel = current;&#xD;
+ current = current->next;&#xD;
+ destroyedCel->free (this);&#xD;
+ }&#xD;
+&#xD;
+ current = beginning = endElement = NULL;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aY1ikDa7Edyv9PRkTrTu0A" name="modifyFirst" specification="_lrJPMDa5Edyv9PRkTrTu0A">
+ <language>C/C++</language>
+ <body> // Retrait de la cellule :&#xD;
+&#xD;
+ ListCell *oldBeginning = beginning;&#xD;
+ beginning = beginning->next;&#xD;
+&#xD;
+ if (element >= endElement->value)&#xD;
+ {&#xD;
+ // if this element is bigger than the others:&#xD;
+ endElement->next = oldBeginning;&#xD;
+ endElement = oldBeginning;&#xD;
+ oldBeginning->next = NULL;&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ // general case, element is inserted in the middle&#xD;
+ ListCell *prevCel = findPrevious (element);&#xD;
+&#xD;
+ oldBeginning->next = prevCel->next;&#xD;
+ prevCel->next = oldBeginning;&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_ky3HADUyEdyDReAOQiyvOg" name="BOL" method="_j5TBoDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_npZ2UDUyEdyDReAOQiyvOg" name="nbElem">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oykd0DUyEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oyuO0DUyEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oy3_0DUyEdyDReAOQiyvOg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_9DJbEDUyEdyDReAOQiyvOg" name="insert" method="_vrKtMDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_iGkDYDUzEdyDReAOQiyvOg" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jROfsDUzEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jRXpoDUzEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jRhaoDUzEdyDReAOQiyvOg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_m35EYDUzEdyDReAOQiyvOg" name="element" type="_XE1_MDUvEdyDReAOQiyvOg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_-f1bgDUyEdyDReAOQiyvOg" name="retract" method="_1ITrUDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_8lwfADUzEdyDReAOQiyvOg" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_8pB1cDUzEdyDReAOQiyvOg" name="element" type="_XE1_MDUvEdyDReAOQiyvOg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ApOw8DUzEdyDReAOQiyvOg" name="first" method="_4YCWsDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_XB94EDU0EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YWTNwDU0EdylmKH0Uq8VaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YWc-wDU0EdylmKH0Uq8VaA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_YWc-wTU0EdylmKH0Uq8VaA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_CTesQDUzEdyDReAOQiyvOg" name="last" method="_7z1IIDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_F0HPgDU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HFeJsDU1EdylmKH0Uq8VaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HFn6sDU1EdylmKH0Uq8VaA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_HFn6sTU1EdylmKH0Uq8VaA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_DrscYDUzEdyDReAOQiyvOg" name="goFirst" method="_-_iPIDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_PzPLEDU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_E8J-sDUzEdyDReAOQiyvOg" name="goLast" method="_CiCFgDa7Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_Vlh50DU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GN0a4DUzEdyDReAOQiyvOg" name="next" method="_FvrGMDa7Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_bbtqEDU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return"/>
+ <ownedParameter xmi:id="_bfunYDU1EdylmKH0Uq8VaA" name="index">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_HjplYDUzEdyDReAOQiyvOg" name="modify" method="_JX1fsDa7Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_yUhN0DU1EdylmKH0Uq8VaA" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return"/>
+ <ownedParameter xmi:id="_yYP3QDU1EdylmKH0Uq8VaA" name="element" type="_XE1_MDUvEdyDReAOQiyvOg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_I_JTADUzEdyDReAOQiyvOg" name="search" method="_N1y4wDa7Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_V2hJkDadEdyC6dXxO2UOEQ" name="param_0" type="_XE1_MDUvEdyDReAOQiyvOg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V20EgDadEdyC6dXxO2UOEQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V3G_cDadEdyC6dXxO2UOEQ" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WOgLwDadEdyC6dXxO2UOEQ" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WOztwDadEdyC6dXxO2UOEQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WO83sDadEdyC6dXxO2UOEQ" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_KWxNQDUzEdyDReAOQiyvOg" name="isEmpty" method="_QeojQDa7Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_u3hv8DadEdyC6dXxO2UOEQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u30q4DadEdyC6dXxO2UOEQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u3-b4DadEdyC6dXxO2UOEQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xBz2MDadEdyC6dXxO2UOEQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_MPd0QDUzEdyDReAOQiyvOg" name="BOL" method="_ToGOkDa7Edyv9PRkTrTu0A"/>
+ <ownedOperation xmi:id="_Am2XwDamEdyMZ7r5-upW2A" name="findElement" method="_cYvxYDamEdyMZ7r5-upW2A">
+ <ownedParameter xmi:id="_FBO4YDamEdyMZ7r5-upW2A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FBhzUDamEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FBrkUDamEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_FGADoDamEdyMZ7r5-upW2A" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FGS-kDamEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FGcvkDamEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_gDSwgDamEdyMZ7r5-upW2A" name="findPrevious" method="_zhpmoDamEdyMZ7r5-upW2A">
+ <ownedParameter xmi:id="_h1SSkDamEdyMZ7r5-upW2A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h1cDkDamEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h1lNgDamEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_h5KF8DamEdyMZ7r5-upW2A" name="elem" type="_XE1_MDUvEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h5dn8DamEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h5mx4DamEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_2-Vv8DamEdyMZ7r5-upW2A" name="modifyCellule" method="_I4Q-4DanEdyMZ7r5-upW2A">
+ <ownedParameter xmi:id="_44iLwDamEdyMZ7r5-upW2A" name="element" type="_XE1_MDUvEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_44rVsDamEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_441GsDamEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_47gnQDamEdyMZ7r5-upW2A" name="cellule" type="_zOJVcDaeEdyC6dXxO2UOEQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_47qYQDamEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_47ziMDamEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_InFS0DaoEdyMZ7r5-upW2A" name="_beginning" method="_ILalUDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_gR0CwDaoEdyMZ7r5-upW2A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gR9zwDaoEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gR9zwTaoEdyMZ7r5-upW2A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_hVK9MDaoEdyMZ7r5-upW2A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Kzm0wDaoEdyMZ7r5-upW2A" name="set_beginning" method="_LiAGoDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_4jvVkDaoEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4kCQgDaoEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4kVygDaoEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6lrYIDaoEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Mh4UcDaoEdyMZ7r5-upW2A" name="_endElement" method="_OGEl4Da6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_iP2AQDapEdyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iP_xQDapEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQI7MDapEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jgKYoDapEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_NLvw0DaoEdyMZ7r5-upW2A" name="set_endElement" method="_RVM0UDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_F389oDapEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F4P4kDapEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F4ZpkDapEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_MBWk0DapEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ORpB4DaoEdyMZ7r5-upW2A" name="_current" method="__2PqIDa5Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_wDf9YDapEdyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wDy4UDapEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wD8pUDapEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_w_Zk8DapEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QxrVsDaoEdyMZ7r5-upW2A" name="set_current" method="_EpXa4Da6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_5TPDYDapEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Th-UDapEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5TrvUDapEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6TwsQDapEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_SaIhQDaoEdyMZ7r5-upW2A" name="_firstFreeCellule" method="_b9AggDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_DsSh4DaqEdyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Dslc0DaqEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DsvN0DaqEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Eh7wcDaqEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ToX2ADaoEdyMZ7r5-upW2A" name="set_firstFreeCellule" method="_dh4zoDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_LADDYDaqEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LAfvUDaqEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LAo5QDaqEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_OElycDaqEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WklIcDaoEdyMZ7r5-upW2A" name="_freeMemory" method="_UDZf8Da6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_XldrwDaqEdyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XlxNwDaqEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Xl6XsDaqEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_YbQrUDaqEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_YZZ8EDaoEdyMZ7r5-upW2A" name="set_freeMemory" method="_Vc9T4Da6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_iOT5wDaqEdyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iOdqwDaqEdyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iOnbwDaqEdyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jwEncDaqEdyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aO0lkDaoEdyMZ7r5-upW2A" name="_endOfMemory" method="_X405YDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_iIN30Da1Edyv9PRkTrTu0A" name="param_0" type="_zOJVcDaeEdyC6dXxO2UOEQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iIhZ0Da1Edyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iIqjwDa1Edyv9PRkTrTu0A" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jGp2ADa1Edyv9PRkTrTu0A">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ddN0MDaoEdyMZ7r5-upW2A" name="set_endOfMemory" method="_ZNniEDa6Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_sFG-wDa1Edyv9PRkTrTu0A" name="cr_operand" type="_zOJVcDaeEdyC6dXxO2UOEQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sFQvwDa1Edyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sFZ5sDa1Edyv9PRkTrTu0A" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_lrJPMDa5Edyv9PRkTrTu0A" name="modifyFirst" visibility="protected" method="_aY1ikDa7Edyv9PRkTrTu0A">
+ <ownedParameter xmi:id="_oX2tEDa5Edyv9PRkTrTu0A" name="element" visibility="public" type="_XE1_MDUvEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oYJoADa5Edyv9PRkTrTu0A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oYSx8Da5Edyv9PRkTrTu0A" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_zOJVcDaeEdyC6dXxO2UOEQ" name="ListCell">
+ <ownedAttribute xmi:id="_VurNcDajEdyC6dXxO2UOEQ" name="value" type="_XE1_MDUvEdyDReAOQiyvOg" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZGTQkDajEdyC6dXxO2UOEQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZGdBkDajEdyC6dXxO2UOEQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_JP6ksDa5Edyv9PRkTrTu0A" name="next" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_JPxawDa5Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UWAIUDa5Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UWJ5UDa5Edyv9PRkTrTu0A" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_48-rEDafEdyC6dXxO2UOEQ" name="operator new" specification="_ftqi8DafEdyC6dXxO2UOEQ">
+ <language>C/C++</language>
+ <body> ListCell *allocatedCellule = NULL;&#xD;
+&#xD;
+ if (currentList->firstFreeCellule)&#xD;
+ {&#xD;
+ allocatedCellule = currentList->firstFreeCellule;&#xD;
+ currentList->firstFreeCellule =&#xD;
+ currentList->firstFreeCellule->next;&#xD;
+ }&#xD;
+ else if (currentList->freeMemory)&#xD;
+ {&#xD;
+ allocatedCellule = currentList->freeMemory;&#xD;
+&#xD;
+ if (currentList->freeMemory &lt; currentList->endOfMemory) {&#xD;
+ currentList->freeMemory++;&#xD;
+ }&#xD;
+ else if (currentList->freeMemory == currentList->endOfMemory) {&#xD;
+ currentList->freeMemory = NULL;&#xD;
+ }&#xD;
+ else {&#xD;
+ OSAL_ERROR (&quot;Bad allocation pointers !&quot;);&#xD;
+ }&#xD;
+ }&#xD;
+ else {&#xD;
+ OSAL_ERROR (&quot;Bounded list is full !&quot;);&#xD;
+ }&#xD;
+&#xD;
+ return allocatedCellule;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DromIDagEdyC6dXxO2UOEQ" name="free" specification="_A4X0UDagEdyC6dXxO2UOEQ">
+ <language>C/C++</language>
+ <body> next = currentList->firstFreeCellule;&#xD;
+ currentList->firstFreeCellule = this;&#xD;
+&#xD;
+ delete this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_REDRYTajEdyC6dXxO2UOEQ" name="ListCell" specification="_-xPoYDaiEdyC6dXxO2UOEQ">
+ <language>C/C++</language>
+ <body></body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_ftqi8DafEdyC6dXxO2UOEQ" name="operator new" method="_48-rEDafEdyC6dXxO2UOEQ">
+ <ownedParameter xmi:id="_heBGQDafEdyC6dXxO2UOEQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_heUBMDafEdyC6dXxO2UOEQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hedyMDafEdyC6dXxO2UOEQ" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_hjYucDafEdyC6dXxO2UOEQ" name="nbElem">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hjrpYDafEdyC6dXxO2UOEQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hj0zUDafEdyC6dXxO2UOEQ" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_hoAIsDafEdyC6dXxO2UOEQ" name="currentList" type="_xxCKcDUuEdyDReAOQiyvOg" direction="inout">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hoTDoDafEdyC6dXxO2UOEQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hoc0oDafEdyC6dXxO2UOEQ" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_A4X0UDagEdyC6dXxO2UOEQ" name="free" method="_DromIDagEdyC6dXxO2UOEQ">
+ <ownedParameter xmi:id="_GHp8oDagEdyC6dXxO2UOEQ" name="currentList" type="_xxCKcDUuEdyDReAOQiyvOg" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GH83kDagEdyC6dXxO2UOEQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GIPygDagEdyC6dXxO2UOEQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_KQmvADagEdyC6dXxO2UOEQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Z_TnEDahEdyC6dXxO2UOEQ" name="getNext"/>
+ <ownedOperation xmi:id="_-xPoYDaiEdyC6dXxO2UOEQ" name="ListCell" method="_REDRYTajEdyC6dXxO2UOEQ">
+ <ownedParameter xmi:id="_BHwMwDajEdyC6dXxO2UOEQ" name="elt" type="_XE1_MDUvEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BH59wDajEdyC6dXxO2UOEQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BIDHsDajEdyC6dXxO2UOEQ" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_a-g58DakEdyMZ7r5-upW2A" name="operator delete" visibility="protected">
+ <ownedParameter xmi:id="_nU5AwDakEdyMZ7r5-upW2A" name="memoryAddress" direction="out">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nVfdsDakEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nVonoDakEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_5hcQwDakEdyMZ7r5-upW2A" name="operator new" visibility="private">
+ <ownedComment xmi:id="_GV6o0DalEdyMZ7r5-upW2A" annotatedElement="_5hcQwDakEdyMZ7r5-upW2A">
+ <body>declare the standard new-operator as private, since its invocation&#xD;
+should be replaced by the call to the new operator defined above&#xD;
+(with the additional parameter currentList).&#xD;
+I.e. don't use &quot;new ListCell&quot;, use &quot;new (this) ListCell&quot; instead</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_7GUj4DakEdyMZ7r5-upW2A" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7GeU4DakEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7GxP0DakEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_7JcwYDakEdyMZ7r5-upW2A" name="nbElem">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7J5cUDakEdyMZ7r5-upW2A" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7KDNUDakEdyMZ7r5-upW2A" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </nestedClassifier>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_y68Y0DUuEdyDReAOQiyvOg" name="CircularBuffer">
+ <ownedComment xmi:id="_3wqfwDbdEdy0Rd6V_tf1-Q" annotatedElement="_y68Y0DUuEdyDReAOQiyvOg">
+ <body>A circular buffer - seems to be unused (besides the tests).&#xD;
+[todo:] missing the possibility to delete elements from the buffer</body>
+ </ownedComment>
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_mgxFQDbdEdy0Rd6V_tf1-Q" parameter="_pjE_sDbdEdy0Rd6V_tf1-Q _p6xuADbdEdy0Rd6V_tf1-Q">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_pjE_sDbdEdy0Rd6V_tf1-Q" parameteredElement="_sd8OUDbdEdy0Rd6V_tf1-Q">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_sd8OUDbdEdy0Rd6V_tf1-Q" name="ElType" templateParameter="_pjE_sDbdEdy0Rd6V_tf1-Q"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_p6xuADbdEdy0Rd6V_tf1-Q" parameteredElement="_v7rggDbdEdy0Rd6V_tf1-Q">
+ <ownedParameteredElement xmi:type="uml:LiteralInteger" xmi:id="_v7rggDbdEdy0Rd6V_tf1-Q" name="nbElem" templateParameter="_p6xuADbdEdy0Rd6V_tf1-Q" value="-1"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <ownedAttribute xmi:id="_IPWqUDbfEdy0Rd6V_tf1-Q" name="current" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KThhgDbfEdy0Rd6V_tf1-Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KTrSgDbfEdy0Rd6V_tf1-Q" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ISLU0DbfEdy0Rd6V_tf1-Q" name="full" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R2oGkDbfEdy0Rd6V_tf1-Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R2x3kDbfEdy0Rd6V_tf1-Q" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_IVAmYDbfEdy0Rd6V_tf1-Q" name="vector" visibility="private" type="_sd8OUDbdEdy0Rd6V_tf1-Q" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TUXP4DbfEdy0Rd6V_tf1-Q" name="nbElem"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TUXP4TbfEdy0Rd6V_tf1-Q" name="nbElem" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aslaoTbfEdy0Rd6V_tf1-Q" name="CircularBuffer" specification="_C1-AQDbeEdy0Rd6V_tf1-Q">
+ <language>C/C++</language>
+ <body></body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fDZC0DbfEdy0Rd6V_tf1-Q" name="number" specification="_p1ESIDbeEdy0Rd6V_tf1-Q">
+ <language>C/C++</language>
+ <body>return (full ? nbElem : current);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_grGngDbfEdy0Rd6V_tf1-Q" name="size" specification="_795fwDbeEdy0Rd6V_tf1-Q">
+ <language>C/C++</language>
+ <body>return nbElem;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1y9yEDbfEdy0Rd6V_tf1-Q" name="append" specification="_K37EgDbeEdy0Rd6V_tf1-Q">
+ <language>C/C++</language>
+ <body>vector[current++] = el;&#xD;
+&#xD;
+if (current == nbElem)&#xD;
+{&#xD;
+ current = 0; // if end is reached, start add the beginning&#xD;
+ full = TRUE; // only useful the first time&#xD;
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_6MJ_4DbfEdy0Rd6V_tf1-Q" name="getElement" specification="_XikLIDbeEdy0Rd6V_tf1-Q">
+ <language>C/C++</language>
+ <body> int index = -1;&#xD;
+&#xD;
+ if ((relativeIndex >= 0) &amp;&amp; (relativeIndex &lt; nbElem))&#xD;
+ {&#xD;
+ if (full)&#xD;
+ {&#xD;
+ index = current + relativeIndex;&#xD;
+ if (index >= nbElem) {&#xD;
+ index -= nbElem;&#xD;
+ }&#xD;
+ }&#xD;
+ }&#xD;
+ else if ((relativeIndex &lt; 0) &amp;&amp; (relativeIndex >= -nbElem))&#xD;
+ {&#xD;
+ if (full || (relativeIndex >= -current))&#xD;
+ {&#xD;
+ index = current + relativeIndex;&#xD;
+ if (index &lt; 0) {&#xD;
+ index += nbElem;&#xD;
+ }&#xD;
+ }&#xD;
+ }&#xD;
+&#xD;
+ if (index != -1) {&#xD;
+ return vector + index;&#xD;
+ }&#xD;
+ else {&#xD;
+ return NULL;&#xD;
+ }</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_C1-AQDbeEdy0Rd6V_tf1-Q" name="CircularBuffer" method="_aslaoTbfEdy0Rd6V_tf1-Q">
+ <ownedComment xmi:id="_HCC_IDbeEdy0Rd6V_tf1-Q" annotatedElement="_C1-AQDbeEdy0Rd6V_tf1-Q">
+ <body>Create a circular buffer containing a certain number of objects of type&#xD;
+ElType. The type and the number of elements are template parameters.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_K37EgDbeEdy0Rd6V_tf1-Q" name="append" method="_1y9yEDbfEdy0Rd6V_tf1-Q">
+ <ownedParameter xmi:id="_NLvhQDbeEdy0Rd6V_tf1-Q" name="el" type="_sd8OUDbdEdy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NMDDQDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NMMNMDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_OnPO4DbeEdy0Rd6V_tf1-Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_XikLIDbeEdy0Rd6V_tf1-Q" name="getElement" method="_6MJ_4DbfEdy0Rd6V_tf1-Q">
+ <ownedComment xmi:id="_l-AhADbeEdy0Rd6V_tf1-Q" annotatedElement="_XikLIDbeEdy0Rd6V_tf1-Q">
+ <body>Get an element from the buffer. The index is relative to the last&#xD;
+addition to the buffer: negative values address &quot;backward&quot; elements&#xD;
+(-1 addresses the last added), positive values &quot;forward&quot; elements&#xD;
+(only useful, if the buffer has already been completely filled).&#xD;
+&#xD;
+Thus, values in the range [-m_nbElem, m_nbElem] are possible.&#xD;
+Returns NULL, if index is out of bounds or no element stored so far&#xD;
+under this index.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Zd8SsDbeEdy0Rd6V_tf1-Q" name="param_0" type="_sd8OUDbdEdy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZeP0sDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZeY-oDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_bTXjQDbeEdy0Rd6V_tf1-Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Zh93EDbeEdy0Rd6V_tf1-Q" name="relativeIndex">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZiRZEDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZiajADbeEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_d_VaQDbeEdy0Rd6V_tf1-Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_p1ESIDbeEdy0Rd6V_tf1-Q" name="number" method="_fDZC0DbfEdy0Rd6V_tf1-Q">
+ <ownedComment xmi:id="_3GAjwDbeEdy0Rd6V_tf1-Q" annotatedElement="_p1ESIDbeEdy0Rd6V_tf1-Q">
+ <body>returns the number of elements currently in the buffer.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_whfG0DbeEdy0Rd6V_tf1-Q" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_who30DbeEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_whyBwDbeEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xUAI4DbeEdy0Rd6V_tf1-Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_795fwDbeEdy0Rd6V_tf1-Q" name="size" method="_grGngDbfEdy0Rd6V_tf1-Q">
+ <ownedComment xmi:id="_-SweUDbeEdy0Rd6V_tf1-Q" annotatedElement="_795fwDbeEdy0Rd6V_tf1-Q">
+ <body>returns the size of the buffer.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AV4zsDbfEdy0Rd6V_tf1-Q" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AWMVsDbfEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AWVfoDbfEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_BMIfMDbfEdy0Rd6V_tf1-Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_2bXLkDUuEdyDReAOQiyvOg" name="SetOf">
+ <ownedComment xmi:id="_mbpXsDa8Edy_E4ZljVbr-g" annotatedElement="_2bXLkDUuEdyDReAOQiyvOg">
+ <body>Manage a set of pointers to an element type (passed as template instance)&#xD;
+This class roughly resembles Objecteering's set_of macro and is used to&#xD;
+migrate existing code easily to other case tools.&#xD;
+&#xD;
+The second class for the template instantiation needs to be a&#xD;
+&quot;const variant&quot; of the first class.&#xD;
+&#xD;
+Caveat: this class uses dynamic memory allocation&#xD;
+=> todo: create a purely static variant</body>
+ </ownedComment>
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_wxa4sDa8Edy_E4ZljVbr-g" parameter="_4MoGADa8Edy_E4ZljVbr-g">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_4MoGADa8Edy_E4ZljVbr-g" parameteredElement="_O4b6IDa-Edy_E4ZljVbr-g">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_O4b6IDa-Edy_E4ZljVbr-g" name="T" templateParameter="_4MoGADa8Edy_E4ZljVbr-g"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <ownedAttribute xmi:id="_QYjFMDbCEdy0gLsbEakL5w" name="content" visibility="private" type="_O4b6IDa-Edy_E4ZljVbr-g" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_koX0gDbCEdy0gLsbEakL5w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_koX0gTbCEdy0gLsbEakL5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_QcH9oDbCEdy0gLsbEakL5w" name="cardinal_number" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kCh8gDbCEdy0gLsbEakL5w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kCh8gTbCEdy0gLsbEakL5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_QfZ7IDbCEdy0gLsbEakL5w" name="size_block" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lOq_gDbCEdy0gLsbEakL5w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lOq_gTbCEdy0gLsbEakL5w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_QiiHoDbCEdy0gLsbEakL5w" name="real_size" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nEZLADbCEdy0gLsbEakL5w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nEZLATbCEdy0gLsbEakL5w" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_gW5foDa_Edy_E4ZljVbr-g" name="size" specification="_Q1uQwDa_Edy_E4ZljVbr-g">
+ <language>C/C++</language>
+ <body>return cardinal_number; </body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_AT-gQDbAEdy0gLsbEakL5w" name="get" specification="_sUiWUDa_Edy0gLsbEakL5w">
+ <language>C/C++</language>
+ <body>return content[index];</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-zmLQDbCEdy0gLsbEakL5w" name="adjust_size" specification="_q4yCoDbCEdy0gLsbEakL5w">
+ <language>C/C++</language>
+ <body>int size = 0x10;&#xD;
+&#xD;
+while (size &lt; desired_size)&#xD;
+{&#xD;
+ if (size &lt; size_block) {&#xD;
+ size = size*2;&#xD;
+ }&#xD;
+ else {&#xD;
+ size += size_block;&#xD;
+ }&#xD;
+}&#xD;
+return size;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_B6rQ8DbDEdy0gLsbEakL5w" name="SetOf" specification="_rnk_IDa-Edy_E4ZljVbr-g">
+ <language>C/C++</language>
+ <body>size_block = init_size_block;&#xD;
+real_size = adjust_size(init_size);&#xD;
+content = new T [real_size];&#xD;
+cardinal_number = 0;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_IDLgQDbDEdy0gLsbEakL5w" name="SetOf" specification="_-M24MDa-Edy_E4ZljVbr-g">
+ <language>C/C++</language>
+ <body>delete [] content; </body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KtqJgDbDEdy0gLsbEakL5w" name="find" specification="_DQoeoDbAEdy0gLsbEakL5w">
+ <language>C/C++</language>
+ <body>for (int i = 0; i &lt; cardinal_number; i++) {&#xD;
+ if (content[i] == entry) {&#xD;
+ return i;&#xD;
+ }&#xD;
+}&#xD;
+&#xD;
+return -1;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_NpQ_ADbDEdy0gLsbEakL5w" name="append" specification="_wQyUADbAEdy0gLsbEakL5w">
+ <language>C/C++</language>
+ <body>if (cardinal_number >= real_size)&#xD;
+{&#xD;
+ real_size = adjust_size(cardinal_number + 1);&#xD;
+ T * new_content = new T [real_size];&#xD;
+ memcpy(new_content, content, cardinal_number * sizeof(T));&#xD;
+ delete [] content;&#xD;
+ content = new_content;&#xD;
+}&#xD;
+content[cardinal_number++] = (T) entry;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QvTi4DbDEdy0gLsbEakL5w" name="insert" specification="_b589wDbAEdy0gLsbEakL5w">
+ <language>C/C++</language>
+ <body>if (cardinal_number >= real_size)&#xD;
+{&#xD;
+ real_size = adjust_size(cardinal_number + 1);&#xD;
+ T * new_content = new T [real_size];&#xD;
+ memcpy(new_content, content, cardinal_number * sizeof(T));&#xD;
+ delete [] content;&#xD;
+ content = new_content;&#xD;
+}&#xD;
+if (index &lt; cardinal_number) {&#xD;
+ memmove(&#xD;
+ &amp;(content[index+1]),&#xD;
+ &amp;(content[index]),&#xD;
+ (cardinal_number-index) * sizeof(T));&#xD;
+}&#xD;
+content[index] = (T) entry;&#xD;
+cardinal_number++;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S9KhkDbDEdy0gLsbEakL5w" name="eraseValue" specification="_Ch8-QDbBEdy0gLsbEakL5w">
+ <language>C/C++</language>
+ <body>for (int i = 0; i &lt; cardinal_number; i++) {&#xD;
+ if (content[i] == entry) {&#xD;
+ erase(i);&#xD;
+ return true; // only erase first entry&#xD;
+ }&#xD;
+}&#xD;
+return false;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Vn8FwDbDEdy0gLsbEakL5w" name="erase" specification="_kEzC0DbBEdy0gLsbEakL5w">
+ <language>C/C++</language>
+ <body>if (index_to == -1) {&#xD;
+ index_to = index_from;&#xD;
+}&#xD;
+&#xD;
+if (index_to >= cardinal_number) {&#xD;
+ // out of bounds&#xD;
+ return;&#xD;
+} &#xD;
+int remaining_elements = cardinal_number - (index_to + 1);&#xD;
+cardinal_number -= (index_to - index_from + 1);&#xD;
+&#xD;
+if (remaining_elements > 0)&#xD;
+{&#xD;
+ memmove(&#xD;
+ &amp;(content[index_from]),&#xD;
+ &amp;(content[index_to+1]),&#xD;
+ remaining_elements * sizeof(T)); &#xD;
+}&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_rnk_IDa-Edy_E4ZljVbr-g" name="SetOf" method="_B6rQ8DbDEdy0gLsbEakL5w">
+ <ownedParameter xmi:id="_smT4QDa-Edy_E4ZljVbr-g" name="init_size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sm6VMDa-Edy_E4ZljVbr-g" name=""/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_snDfIDa-Edy_E4ZljVbr-g" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wivRkDa-Edy_E4ZljVbr-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_sqyIkDa-Edy_E4ZljVbr-g" name="init_size_block">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_srFDgDa-Edy_E4ZljVbr-g" name=""/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_srO0gDa-Edy_E4ZljVbr-g" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_zVaNgDa-Edy_E4ZljVbr-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_-M24MDa-Edy_E4ZljVbr-g" name="SetOf" method="_IDLgQDbDEdy0gLsbEakL5w"/>
+ <ownedOperation xmi:id="_Q1uQwDa_Edy_E4ZljVbr-g" name="size" method="_gW5foDa_Edy_E4ZljVbr-g">
+ <ownedComment xmi:id="_YCxtUDa_Edy_E4ZljVbr-g" annotatedElement="_Q1uQwDa_Edy_E4ZljVbr-g">
+ <body>Return the number of elements currently in the set</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_TBfkwDa_Edy_E4ZljVbr-g" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TBzGwDa_Edy_E4ZljVbr-g" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TB8QsDa_Edy_E4ZljVbr-g" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_T63cwDa_Edy_E4ZljVbr-g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_sUiWUDa_Edy0gLsbEakL5w" name="get" method="_AT-gQDbAEdy0gLsbEakL5w">
+ <ownedComment xmi:id="_5UCSoDa_Edy0gLsbEakL5w" annotatedElement="_sUiWUDa_Edy0gLsbEakL5w">
+ <body>Retrieve an element at index from the set</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_uAIVcDa_Edy0gLsbEakL5w" name="param_0" type="_O4b6IDa-Edy_E4ZljVbr-g" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uAuLUDa_Edy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uA38UDa_Edy0gLsbEakL5w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_u58SUDa_Edy0gLsbEakL5w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_uEc0wDa_Edy0gLsbEakL5w" name="index">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uEvvsDa_Edy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uE5gsDa_Edy0gLsbEakL5w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_DQoeoDbAEdy0gLsbEakL5w" name="find" method="_KtqJgDbDEdy0gLsbEakL5w">
+ <ownedComment xmi:id="_Tez9cDbAEdy0gLsbEakL5w" annotatedElement="_DQoeoDbAEdy0gLsbEakL5w">
+ <body>find. Find an element in the set. The index of the first element that&#xD;
+matches is returned. If the element cannot be found, -1 is returned.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_I1EXkDbAEdy0gLsbEakL5w" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_I1X5kDbAEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_I1hDgDbAEdy0gLsbEakL5w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_LR_F8DbAEdy0gLsbEakL5w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Eq75cDbAEdy0gLsbEakL5w" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ErO0YDbAEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ErYlYDbAEdy0gLsbEakL5w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_G0Ld4DbAEdy0gLsbEakL5w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_b589wDbAEdy0gLsbEakL5w" name="insert" method="_QvTi4DbDEdy0gLsbEakL5w">
+ <ownedComment xmi:id="_rSVdADbAEdy0gLsbEakL5w" annotatedElement="_b589wDbAEdy0gLsbEakL5w">
+ <body>Insert an element at position given by index into the set.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_duxxYDbAEdy0gLsbEakL5w" name="index">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_du67UDbAEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dvEsUDbAEdy0gLsbEakL5w" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_dxdR8DbAEdy0gLsbEakL5w" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dxnC8DbAEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dxwM4DbAEdy0gLsbEakL5w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_wQyUADbAEdy0gLsbEakL5w" name="append" method="_NpQ_ADbDEdy0gLsbEakL5w">
+ <ownedComment xmi:id="_yuJHQDbAEdy0gLsbEakL5w" annotatedElement="_wQyUADbAEdy0gLsbEakL5w">
+ <body>append an element to the set, it will occupy the last index.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_0ywqYDbAEdy0gLsbEakL5w" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0zNWUDbAEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0zXHUDbAEdy0gLsbEakL5w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2vVr0DbAEdy0gLsbEakL5w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ch8-QDbBEdy0gLsbEakL5w" name="eraseValue" method="_S9KhkDbDEdy0gLsbEakL5w">
+ <ownedComment xmi:id="_GTy4MDbBEdy0gLsbEakL5w" annotatedElement="_Ch8-QDbBEdy0gLsbEakL5w">
+ <body>erase an element from the set based on its value. The first element&#xD;
+with a matching value (not further elements that might match as well)&#xD;
+will be removed from the list. Returns true, if a matching value is&#xD;
+be found.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_JXddgDbBEdy0gLsbEakL5w" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXmncDbBEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXwYcDbBEdy0gLsbEakL5w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_KgUjADbBEdy0gLsbEakL5w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_JbLf4DbBEdy0gLsbEakL5w" name="entry" type="_O4b6IDa-Edy_E4ZljVbr-g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Jbea0DbBEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JboL0DbBEdy0gLsbEakL5w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_kEzC0DbBEdy0gLsbEakL5w" name="erase" method="_Vn8FwDbDEdy0gLsbEakL5w">
+ <ownedComment xmi:id="_og-TMDbBEdy0gLsbEakL5w" annotatedElement="_kEzC0DbBEdy0gLsbEakL5w">
+ <body>Erase entries from the set based on an &quot;from&quot; and &quot;to&quot; index. If&#xD;
+the latter is not supplied, only one element is erased (to = from).&#xD;
+Please note that subsequent entries change their position.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_rlE9YDbBEdy0gLsbEakL5w" name="index_from">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rlX4UDbBEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rlhpUDbBEdy0gLsbEakL5w" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_rogE0DbBEdy0gLsbEakL5w" name="index_to">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EFv20DbCEdy0gLsbEakL5w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EF5n0DbCEdy0gLsbEakL5w" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_q4yCoDbCEdy0gLsbEakL5w" name="adjust_size" visibility="private" method="_-zmLQDbCEdy0gLsbEakL5w">
+ <ownedParameter xmi:id="_ucLQ4DbCEdy0gLsbEakL5w" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uceL0DbCEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ucn80DbCEdy0gLsbEakL5w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wKAEoDbCEdy0gLsbEakL5w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ugyrIDbCEdy0gLsbEakL5w" name="desired_size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uhFmEDbCEdy0gLsbEakL5w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uhPXEDbCEdy0gLsbEakL5w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_yZpCcDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_yaiaUDa2Edyv9PRkTrTu0A _ya_GQTa2Edyv9PRkTrTu0A">
+ <ownedEnd xmi:id="_ya_GQTa2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_yZpCcDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ybbyMTa2Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ybbyMDa2Edyv9PRkTrTu0A" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_0wmSwDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_0wvcsDa2Edyv9PRkTrTu0A _0xV5oDa2Edyv9PRkTrTu0A">
+ <ownedEnd xmi:id="_0xV5oDa2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_0wmSwDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0xylkDa2Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0xo0kTa2Edyv9PRkTrTu0A" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_1ZuIQDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_1ZuIQTa2Edyv9PRkTrTu0A _1aUlMTa2Edyv9PRkTrTu0A">
+ <ownedEnd xmi:id="_1aUlMTa2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_1ZuIQDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1angIja2Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1angITa2Edyv9PRkTrTu0A" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_2AnwMDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_2AnwMTa2Edyv9PRkTrTu0A _2BD1Eja2Edyv9PRkTrTu0A">
+ <ownedEnd xmi:id="_2BD1Eja2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_2AnwMDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2BghATa2Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2BghADa2Edyv9PRkTrTu0A" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_3cG2wDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_3cG2wTa2Edyv9PRkTrTu0A _3cjisTa2Edyv9PRkTrTu0A">
+ <ownedEnd xmi:id="_3cjisTa2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_3cG2wDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3dAOoDa2Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3c3Esja2Edyv9PRkTrTu0A" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_8nOQwDa2Edyv9PRkTrTu0A" name="Association_BOL_ListCell" memberEnd="_8nYBwDa2Edyv9PRkTrTu0A _8n0Goja2Edyv9PRkTrTu0A">
+ <ownedEnd xmi:id="_8n0Goja2Edyv9PRkTrTu0A" name="bOL" type="_xxCKcDUuEdyDReAOQiyvOg" isUnique="false" association="_8nOQwDa2Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8oajkDa2Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8oQykja2Edyv9PRkTrTu0A" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JPxawDa5Edyv9PRkTrTu0A" name="Association_ListCell_ListCell" memberEnd="_JP6ksDa5Edyv9PRkTrTu0A _JQOGsja5Edyv9PRkTrTu0A">
+ <ownedEnd xmi:id="_JQOGsja5Edyv9PRkTrTu0A" name="listCell" type="_zOJVcDaeEdyC6dXxO2UOEQ" isUnique="false" association="_JPxawDa5Edyv9PRkTrTu0A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JQqLkDa5Edyv9PRkTrTu0A"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JQhBoja5Edyv9PRkTrTu0A" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_soXY0C-OEdySSa8YESkO2w" name="Synchronization">
+ <ownedComment xmi:id="_MY8NMFC6EdyqzLG48ixyqA" annotatedElement="_hZUhoFC4EdyqzLG48ixyqA">
+ <body>TODO :
+Incomplete attribute and operation definitions</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_D8njME_gEdy2tpS719xBwQ" name="Semaphore">
+ <ownedComment xmi:id="_DSvP4FF5EdyxP5ejovTmBw" annotatedElement="_D8njME_gEdy2tpS719xBwQ">
+ <body>Manages system semaphores with counters (mainly based on Posix semaphores)</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_FVU9QFF6EdyxP5ejovTmBw" name="m_sema" visibility="private" type="_IbQcUFd7Ed-9TNLvplUFDQ" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FVxpMFF6EdyxP5ejovTmBw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FVxpMVF6EdyxP5ejovTmBw" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_OSIgMFF6EdyxP5ejovTmBw" name="Semaphore" specification="_aemSgFF5EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (&quot;Semaphore::Semaphore (&quot; &lt;&lt; initValue &lt;&lt; &quot;)&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ errno = 0;&#xD;
+#if defined SYNCHRO_Solaris&#xD;
+ errno = sema_init (&amp;m_sema, initValue, USYNC_THREAD, NULL);&#xD;
+#else&#xD;
+ sem_init (&amp;m_sema, 0, initValue); // function sets errno on error&#xD;
+#endif&#xD;
+&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;Semaphore init failed&quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_P_9T8FF6EdyxP5ejovTmBw" name="Semaphore" specification="_ak3SkFF5EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (&quot;Semaphore::~Semaphore ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ errno = 0;&#xD;
+#if defined SYNCHRO_Solaris&#xD;
+ errno = sema_destroy (&amp;m_sema);&#xD;
+#else&#xD;
+ sem_destroy (&amp;m_sema); // function sets errno on error&#xD;
+#endif&#xD;
+&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RrsdAFF6EdyxP5ejovTmBw" name="post" specification="_lASvoFF5EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (&quot;Semaphore::post ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ errno = 0;&#xD;
+&#xD;
+#if defined SYNCHRO_Solaris&#xD;
+ errno = sema_post (&amp;m_sema);&#xD;
+#else&#xD;
+ sem_post (&amp;m_sema); // function sets errno if r not 0&#xD;
+#endif&#xD;
+&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;&quot;); }&#xD;
+&#xD;
+ return errno;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Ty2WwFF6EdyxP5ejovTmBw" name="wait" specification="_0TcwoFF5EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (&quot;Semaphore::wait ()&quot; &lt;&lt; showI);&#xD;
+ int r;&#xD;
+ errno = 0;&#xD;
+ for (;;)&#xD;
+ {&#xD;
+#if defined SYNCHRO_Solaris&#xD;
+ errno = sema_wait (&amp;m_sema);&#xD;
+ if ((errno == 0) || (errno == EBUSY))&#xD;
+ break;&#xD;
+#elif defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks&#xD;
+ r = sem_wait (&amp;m_sema); // sem_wait sets errno if r not 0&#xD;
+ if ((r == 0) || (errno == EAGAIN))&#xD;
+ break;&#xD;
+#else&#xD;
+ #error define synchronization strategy&#xD;
+#endif&#xD;
+ if (errno != EINTR)&#xD;
+ OSAL_ERROR (&quot;wait returned error code&quot;);&#xD;
+ errno = 0;&#xD;
+ }&#xD;
+&#xD;
+ return errno;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VmxygFF6EdyxP5ejovTmBw" name="tryWait" specification="_skbPcFF5EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (&quot;Semaphore::trywait ()&quot; &lt;&lt; showI);&#xD;
+ int r;&#xD;
+ errno = 0;&#xD;
+&#xD;
+ for (;;)&#xD;
+ {&#xD;
+#if defined SYNCHRO_Solaris&#xD;
+ errno = sema_trywait (&amp;m_sema);&#xD;
+ if ((errno == 0) || (errno == EBUSY))&#xD;
+ break;&#xD;
+#elif defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks&#xD;
+ r = sem_trywait (&amp;m_sema); // sem_trywait sets errno if r not 0&#xD;
+ if ((r == 0) || (errno == EAGAIN))&#xD;
+ break;&#xD;
+#else&#xD;
+ #error define synchronization strategy&#xD;
+#endif&#xD;
+ if (errno != EINTR)&#xD;
+ OSAL_ERROR (&quot;tryWait returned error code&quot;);&#xD;
+ errno = 0;&#xD;
+ }&#xD;
+ PR (&quot;Semaphore::tryWait () - returns value (errno): &quot; &lt;&lt; errno &lt;&lt; showI);&#xD;
+&#xD;
+ return errno;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_W5L1kFF6EdyxP5ejovTmBw" name="getValue" specification="_76k6EFF5EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> TRACEpr (F7);&#xD;
+ PR (&quot;Semaphore::getValue ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ int value;&#xD;
+ sem_getvalue ((sem_t*) &amp;m_sema, &amp;value);&#xD;
+ return value;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_aemSgFF5EdyxP5ejovTmBw" name="Semaphore" method="_OSIgMFF6EdyxP5ejovTmBw">
+ <ownedParameter xmi:id="_fQq6YFF5EdyxP5ejovTmBw" name="initValue">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fQ-cYFF5EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fRRXUFF5EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_gO9uoFF5EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ak3SkFF5EdyxP5ejovTmBw" name="Semaphore" method="_P_9T8FF6EdyxP5ejovTmBw"/>
+ <ownedOperation xmi:id="_lASvoFF5EdyxP5ejovTmBw" name="post" method="_RrsdAFF6EdyxP5ejovTmBw">
+ <ownedComment xmi:id="_qJT34FF5EdyxP5ejovTmBw" annotatedElement="_lASvoFF5EdyxP5ejovTmBw">
+ <body>This operation unlocks the semaphore.&#xD;
+ It increments atomically the counter and if other threads are&#xD;
+ blocked waiting, it unblocks one of these.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_m8aeEFF5EdyxP5ejovTmBw" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m83KAFF5EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m9KE8FF5EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oBtSMFF5EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_skbPcFF5EdyxP5ejovTmBw" name="tryWait" method="_VmxygFF6EdyxP5ejovTmBw">
+ <ownedComment xmi:id="_uciAkFF5EdyxP5ejovTmBw" annotatedElement="_skbPcFF5EdyxP5ejovTmBw">
+ <body>This operation locks the semaphore only if that semaphore is currently&#xD;
+ not locked - that is, if the semaphore value is currently positive.&#xD;
+ &#xD;
+ The underlying posix function is executed in a loop, since it could&#xD;
+ legally return with an error code, if it is interrupted by a&#xD;
+ signal (EINTR).&#xD;
+ &#xD;
+ Returns 0 on success or the error code</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wZs34FF5EdyxP5ejovTmBw" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_waJj0FF5EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wadF0FF5EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_x6kNsFF5EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_0TcwoFF5EdyxP5ejovTmBw" name="wait" method="_Ty2WwFF6EdyxP5ejovTmBw">
+ <ownedComment xmi:id="_4IRtIFF5EdyxP5ejovTmBw" annotatedElement="_0TcwoFF5EdyxP5ejovTmBw">
+ <body>This operation locks the semaphore.&#xD;
+ If the counter is zero, this method blocks the current thread until the&#xD;
+ counter is positive. Afterwords it decrements the counter atomically.&#xD;
+ &#xD;
+ The underlying posix function is executed in a loop, since it could&#xD;
+ legally return with an error code, if it is interrupted by a&#xD;
+ signal (EINTR).&#xD;
+ &#xD;
+ Returns 0 on success or the error code</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_1ZMQsFF5EdyxP5ejovTmBw" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1Zo8oFF5EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1Z73kFF5EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2jjLAFF5EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_76k6EFF5EdyxP5ejovTmBw" name="getValue" method="_W5L1kFF6EdyxP5ejovTmBw">
+ <ownedComment xmi:id="_9Z8bEFF5EdyxP5ejovTmBw" annotatedElement="_76k6EFF5EdyxP5ejovTmBw">
+ <body>Provide access to the semaphore counter</body>
+ </ownedComment>
+ <ownedParameter xmi:id="__SpCEFF5EdyxP5ejovTmBw" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__TO38FF5EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__TYo8FF5EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_BDvMQFF6EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_jXTGsFC3EdyqzLG48ixyqA" clientDependency="_wNG7gFC3EdyqzLG48ixyqA _whFAYFC3EdyqzLG48ixyqA _z0-aEFC3EdyqzLG48ixyqA" name="Barrier">
+ <ownedComment xmi:id="_lnirAFC3EdyqzLG48ixyqA" annotatedElement="_jXTGsFC3EdyqzLG48ixyqA">
+ <body>Allows to synchronize N threads: N-1 threads arriving at the barrier&#xD;
+are blocked, the last arriving thread unblocks all threads.&#xD;
+&#xD;
+Only one thread creates the barrier, other threads should only use&#xD;
+references.&#xD;
+In addition to an inefficient (file based!) implementation, we use&#xD;
+directly the pthread barrier.</body>
+ </ownedComment>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_neizcFC4EdyqzLG48ixyqA" name="_name" specification="_VNO_QFC4EdyqzLG48ixyqA">
+ <language>C/C++</language>
+ <body>return m_name;&#xD;
+}&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_FFwlYFC4EdyqzLG48ixyqA" name="Barrier">
+ <ownedParameter xmi:id="_IsliIFC4EdyqzLG48ixyqA" name="name" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ItCOEFC4EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ItLYAFC4EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_J31NQFC4EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_IxM8YFC4EdyqzLG48ixyqA" name="nb">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IxpoUFC4EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IxzZUFC4EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_MBXsoFC4EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FQyJoFC4EdyqzLG48ixyqA" name="Barrier"/>
+ <ownedOperation xmi:id="_VNO_QFC4EdyqzLG48ixyqA" name="_name" method="_neizcFC4EdyqzLG48ixyqA">
+ <ownedParameter xmi:id="_XPBQ0FC4EdyqzLG48ixyqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XPUy0FC4EdyqzLG48ixyqA" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XPd8wFC4EdyqzLG48ixyqA" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_X-aGYFC4EdyqzLG48ixyqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hZUhoFC4EdyqzLG48ixyqA" name="wait">
+ <ownedComment xmi:id="_i_1zgFC4EdyqzLG48ixyqA" annotatedElement="_hZUhoFC4EdyqzLG48ixyqA">
+ <body>block, until the number of threads specified in the constructor&#xD;
+ invoke this method</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_qIyBkFC3EdyqzLG48ixyqA" clientDependency="_s6W6oFFiEdyjobZYtXo9NQ" name="Lock">
+ <ownedComment xmi:id="_o43bIFFiEdyjobZYtXo9NQ" annotatedElement="_qIyBkFC3EdyqzLG48ixyqA">
+ <body>Interface to lock a file (like flock in POSIX)&#xD;
+This class is currently a candidate for being removed from the&#xD;
+virtual machine, since file based locking is seldom relevant in&#xD;
+embedded system. Its main use is the inefficient fallback implementation&#xD;
+variant of the barrier (if Posix functions are not available)</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_8z5vwFFuEdyjobZYtXo9NQ" name="m_lockType" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_80WbsFFuEdyjobZYtXo9NQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_80gMsFFuEdyjobZYtXo9NQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_87gMkFFuEdyjobZYtXo9NQ" name="m_flock" visibility="private" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8784gFFuEdyjobZYtXo9NQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8784gVFuEdyjobZYtXo9NQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_9BdqoFFuEdyjobZYtXo9NQ" name="m_fd" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9B6WkFFuEdyjobZYtXo9NQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9B6WkVFuEdyjobZYtXo9NQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_JHu44FFvEdyjobZYtXo9NQ" name="initFileDesc" specification="_GFqrgFFuEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> m_fd = fd;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_OcrkUVFvEdyjobZYtXo9NQ" name="Lock" specification="_F6fWQFFuEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Lock::Lock (...)&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ // probably not a good idea to reset a global error variable here&#xD;
+ // errno = 0;&#xD;
+&#xD;
+/* #if defined SYNCHRO_VxWorks // it compiles on VxWorks &#xD;
+ OSAL_ERROR (&quot;Not implemented for VxWorks&quot;);&#xD;
+ #endif */&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RgCAkFFvEdyjobZYtXo9NQ" name="take" specification="_GNaSQFFuEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Lock::take&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ m_flock.l_type = m_lockType;&#xD;
+ m_flock.l_whence = 0;&#xD;
+ m_flock.l_start = (off_t) 0;&#xD;
+ m_flock.l_len = (off_t) 0;&#xD;
+&#xD;
+ if (fcntl (m_fd, F_SETLKW, &amp;m_flock) &lt; 0) { // wait if hold&#xD;
+ OSAL_ERROR (&quot;ON fcntl(m_fd, F_SETLKW:F_WRLCK) &quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Th05MFFvEdyjobZYtXo9NQ" name="tryTake" specification="_GSVOgFFuEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+&#xD;
+ int r;&#xD;
+ m_flock.l_type = m_lockType;&#xD;
+ m_flock.l_whence = 0;&#xD;
+ m_flock.l_start = (off_t) 0;&#xD;
+ m_flock.l_len = (off_t) 0;&#xD;
+&#xD;
+ while ((r = fcntl (m_fd, F_SETLK, &amp;m_flock)) &lt; 0) // NO wait if hold&#xD;
+ {&#xD;
+ if (errno == 0 || errno == EAGAIN)&#xD;
+ break;&#xD;
+ if (errno != EINTR)&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ errno = 0;&#xD;
+ }&#xD;
+&#xD;
+ PR (&quot;Lock::tryTake () - return value (errno): &quot; &lt;&lt; errno &lt;&lt; showI);&#xD;
+ return errno;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_V21owFFvEdyjobZYtXo9NQ" name="release" specification="_GZx6UFFuEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Lock::release ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ m_flock.l_type = F_UNLCK;&#xD;
+ m_flock.l_whence = 0;&#xD;
+ m_flock.l_start = (off_t) 0;&#xD;
+ m_flock.l_len = (off_t) 0;&#xD;
+&#xD;
+ if (fcntl (m_fd, F_SETLK, &amp;m_flock) &lt; 0) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_XjxEoFFvEdyjobZYtXo9NQ" name="getInfo" specification="_Ge2AgFFuEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> TRACEpr (VM);&#xD;
+ PR (&quot;Lock::getInfo&quot; &lt;&lt; showI);&#xD;
+&#xD;
+ infoP->l_whence = 0;&#xD;
+ infoP->l_start = 0L;&#xD;
+ infoP->l_len = 0L;&#xD;
+ infoP->l_type = m_lockType;&#xD;
+ if (fcntl (m_fd, F_GETLK, infoP) == -1) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+&#xD;
+ // return TRUE, if lock busy&#xD;
+ return (infoP->l_type != F_UNLCK);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_F6fWQFFuEdyjobZYtXo9NQ" name="Lock" method="_OcrkUVFvEdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_KCr6sFFuEdyjobZYtXo9NQ" annotatedElement="_F6fWQFFuEdyjobZYtXo9NQ">
+ <body>Create a lock for a file that is identified by a file descriptor. This&#xD;
+ descriptor can be obtained for instance using the &quot;open&quot;. The second,&#xD;
+ optional parameter denotes whether the lock is also exclusive for&#xD;
+ reading (otherwise, only the write access is protected). The default&#xD;
+ value &quot;true&quot; guarantees exlusive read and write access.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_N9oGQFFuEdyjobZYtXo9NQ" name="fileDesc">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_N-EyMFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_N-N8IFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_P9VUMFFuEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OATm0FFuEdyjobZYtXo9NQ" name="exclusive">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OAwSwFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OA6DwFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Sd9d4FFuEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GFqrgFFuEdyjobZYtXo9NQ" name="initFileDesc" method="_JHu44FFvEdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_bphOgFFuEdyjobZYtXo9NQ" annotatedElement="_GFqrgFFuEdyjobZYtXo9NQ">
+ <body>this method can be called to initialize the file descriptor, if it&#xD;
+ is not yet known at creation time. This should only be called once&#xD;
+ after construction (and before take/release).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_d8c6cFFuEdyjobZYtXo9NQ" name="fd">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d84_UFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d9MhUFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_fgb1sFFuEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GNaSQFFuEdyjobZYtXo9NQ" name="take" method="_RgCAkFFvEdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_itxUYFFuEdyjobZYtXo9NQ" annotatedElement="_GNaSQFFuEdyjobZYtXo9NQ">
+ <body>take a lock. This method blocks, until the lock is available</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GSVOgFFuEdyjobZYtXo9NQ" name="tryTake" method="_Th05MFFvEdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_mxzKgFFuEdyjobZYtXo9NQ" annotatedElement="_GSVOgFFuEdyjobZYtXo9NQ">
+ <body>a non-blocking variant of take. It returns the error code of the&#xD;
+ underlying function fcntl or 0, if take was successfull</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_n7HjAFFuEdyjobZYtXo9NQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n7kO8FFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n73J4FFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pFK7UFFuEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GZx6UFFuEdyjobZYtXo9NQ" name="release" method="_V21owFFvEdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_sj8vUFFuEdyjobZYtXo9NQ" annotatedElement="_GZx6UFFuEdyjobZYtXo9NQ">
+ <body>release the lock</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ge2AgFFuEdyjobZYtXo9NQ" name="getInfo" method="_XjxEoFFvEdyjobZYtXo9NQ">
+ <ownedParameter xmi:id="_wsTEwFFuEdyjobZYtXo9NQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wsvwsFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ws46oFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yIYoQFFuEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_wwdzEFFuEdyjobZYtXo9NQ" name="infoP" direction="inout">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wwxVEFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wxEQAFFuEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_0kjIsFFuEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rsw80FC3EdyqzLG48ixyqA" clientDependency="_OIKeIFF1EdyjobZYtXo9NQ" name="p_Synchronization">
+ <nestedClassifier xmi:type="uml:Enumeration" xmi:id="__JUq0FF1EdyxP5ejovTmBw" name="Scope">
+ <ownedLiteral xmi:id="_BnRT8FF2EdyxP5ejovTmBw" name="IntraProcess"/>
+ <ownedLiteral xmi:id="_DFwEIFF2EdyxP5ejovTmBw" name="InterProcess"/>
+ </nestedClassifier>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_wNG7gFC3EdyqzLG48ixyqA" name="FromBarriertop_Synchronization" client="_jXTGsFC3EdyqzLG48ixyqA" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_whFAYFC3EdyqzLG48ixyqA" name="FromBarriertoLock" client="_jXTGsFC3EdyqzLG48ixyqA" supplier="_qIyBkFC3EdyqzLG48ixyqA"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_z0-aEFC3EdyqzLG48ixyqA" name="FromBarriertoBString200" client="_jXTGsFC3EdyqzLG48ixyqA" supplier="_0AwCEDO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Jj9usFC7EdyqzLG48ixyqA" clientDependency="_tfdf4FFvEdyjobZYtXo9NQ" name="Mutex">
+ <ownedComment xmi:id="_wP5AIFFvEdyjobZYtXo9NQ" annotatedElement="_Jj9usFC7EdyqzLG48ixyqA">
+ <body>Allows to manage system locks to prevent threads from simultaneous&#xD;
+execution of the same section (see CriticalSection)</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_PL5ogFF0EdyjobZYtXo9NQ" name="m_mutexS" visibility="public" type="_uWQvMBD4EeG3cfLoiI6G7g" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PMgFcFF0EdyjobZYtXo9NQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PMgFcVF0EdyjobZYtXo9NQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZOvmcFF0EdyjobZYtXo9NQ" name="Mutex" specification="_4NODEFFvEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body>creatEff (IntraProcess);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_a4i10FF0EdyjobZYtXo9NQ" name="lock" specification="_-Hj6kFFvEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body>TRACEpr (F7);&#xD;
+PR (&quot;before Mutex::lock()&quot; &lt;&lt; showI);&#xD;
+#if defined SYNCHRO_POSIX4&#xD;
+ int error = pthread_mutex_lock (&amp;m_mutexS);&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+ int error = mutex_lock (&amp;m_mutexS);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ int error = 0;&#xD;
+ if (semTake (m_mutexS, WAIT_FOREVER) != OK)&#xD;
+ OSAL_ERROR (&quot;ON semTake()&quot;);&#xD;
+#endif&#xD;
+&#xD;
+ if (error) { // == EDEADLK : the current thread already owns the mutex&#xD;
+ OSAL_ERROR (&quot;can't lock mutex&quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dWfe8FF0EdyjobZYtXo9NQ" name="unlock" specification="_DEz3sFFwEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body>TRACEpr (F7);&#xD;
+PR (&quot;Mutex::unlock ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+#if defined SYNCHRO_POSIX4&#xD;
+ int error = pthread_mutex_unlock (&amp;m_mutexS);&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+ int error = mutex_unlock (&amp;m_mutexS);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ int error = 0;&#xD;
+ if (semGive (m_mutexS) != OK)&#xD;
+ OSAL_ERROR (&quot;ON semGive()&quot;);&#xD;
+#endif&#xD;
+&#xD;
+if (error) { // == EPERM : the current thread does not own the mutex&#xD;
+ OSAL_ERROR (&quot;can't unlock mutex&quot;);&#xD;
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_f75a8FF0EdyjobZYtXo9NQ" name="tryLock" specification="_Jid3oFFwEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body>TRACEpr (F7);&#xD;
+PR (&quot;before Mutex::trylock()&quot;&lt;&lt; showI);&#xD;
+&#xD;
+#define Nretry 3 // re-try N times if EINTR&#xD;
+&#xD;
+int i;&#xD;
+int error;&#xD;
+for (i = 0; i &lt; Nretry; ++i)&#xD;
+{&#xD;
+#if defined SYNCHRO_POSIX4&#xD;
+ error = pthread_mutex_trylock (&amp;m_mutexS);&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+ error = mutex_trylock (&amp;m_mutexS);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ error = semTake (m_mutexS, NO_WAIT);&#xD;
+ if (error == S_objLib_OBJ_UNAVAILABLE) {&#xD;
+ error = EBUSY;&#xD;
+ }&#xD;
+&#xD;
+#endif&#xD;
+ if (error == 0 || error == EBUSY) {&#xD;
+ break;&#xD;
+ }&#xD;
+ if (error != EINTR) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+}&#xD;
+if (i == Nretry) {&#xD;
+ OSAL_ERROR (&quot;EINTR Nretry times&quot;);&#xD;
+}&#xD;
+&#xD;
+// errno == EBUSY : the mutex could not be acquired because it was already&#xD;
+// locked&#xD;
+return error;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_larX0FF0EdyjobZYtXo9NQ" name="Mutex" specification="_4cRLsFFvEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body>int error;&#xD;
+#if defined SYNCHRO_POSIX4&#xD;
+ TRACEpr (F7);&#xD;
+ PR (&quot;Mutex::~Mutex: m_mutexS = &quot; &lt;&lt; &amp;m_mutexS &lt;&lt; showI);&#xD;
+ error = pthread_mutex_destroy (&amp;m_mutexS);&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+ error = mutex_destroy (&amp;m_mutexS);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ if (semDelete (m_mutexS) == OK) {&#xD;
+ error = 0;&#xD;
+ }&#xD;
+ else {&#xD;
+ error = -1;&#xD;
+ }&#xD;
+#endif&#xD;
+&#xD;
+if (error) {&#xD;
+ OSAL_ERROR (&quot;cannot delete Mutex&quot;);&#xD;
+}&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_oFvP4FF0EdyjobZYtXo9NQ" name="Operation_0" specification="_OEl_AFFwEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body>// any value is equally valable as argument&#xD;
+// inutile d'avoir une portee InterProcess couteuse si le process est seul.&#xD;
+&#xD;
+creatEff (OS_AL::ProcessingResources::ProDesc::getNumerOfProcesses() > 1 ? InterProcess : IntraProcess);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_s_tPgFF0EdyjobZYtXo9NQ" name="creatEff" specification="_W33LcFFwEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body>// --------------------------------------------&#xD;
+#if defined SYNCHRO_POSIX4&#xD;
+pthread_mutexattr_t attr; // mutex attributes object&#xD;
+int result = pthread_mutexattr_init (&amp;attr); // and initialized by only 1 process&#xD;
+// ?? comment savoir que je suis le premier ?? .....................&#xD;
+if (result != 0) {&#xD;
+ OSAL_ERROR (&quot;ON pthread_mutexattr_init()&quot;);&#xD;
+}&#xD;
+if (scope == InterProcess) {&#xD;
+ result = pthread_mutexattr_setpshared (&amp;attr, PTHREAD_PROCESS_SHARED);&#xD;
+ if (errno != 0) {&#xD;
+ OSAL_ERROR (&quot;ON pthread_mutexattr_setpshared()&quot;);&#xD;
+ }&#xD;
+}&#xD;
+result = pthread_mutex_init (&amp;m_mutexS, &amp;attr);&#xD;
+if (result != 0) {&#xD;
+ OSAL_ERROR (&quot;ON pthread_mutex_init()&quot;);&#xD;
+}&#xD;
+&#xD;
+// pthread_mutexattr_destroy(&amp;attr); // required?&#xD;
+&#xD;
+// --------------------------------------------&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+if (scope != InterProcess) {&#xD;
+ // initial RAZ, with only 1 thread&#xD;
+ // #include &lt;string.h>&#xD;
+ // memset(&amp;m_mutexS, 0, sizeof(MutexStruc));&#xD;
+ char *pc = (char *) &amp;m_mutexS;&#xD;
+ for (int k = 0; k &lt; sizeof (MutexStruc); ++k) {&#xD;
+ *pC/C++ = '\0'; // initial reset&#xD;
+ }&#xD;
+}&#xD;
+ //else&#xD;
+ // only 1 process must reset this structure&#xD;
+&#xD;
+int result = mutex_init ((MutexStruc *) &amp; m_mutexS,&#xD;
+ (scope == InterProcess) ? USYNC_PROCESS : USYNC_THREAD, NULL);&#xD;
+if (result != 0) {&#xD;
+ OSAL_ERROR (&quot;ON mutex_init()&quot;);&#xD;
+}&#xD;
+&#xD;
+// --------------------------------------------&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+if (scope == InterProcess) {&#xD;
+ OSAL_ERROR (&quot;Only 1 processus for VxWorks&quot;);&#xD;
+}&#xD;
+#if defined SYNCHRO_VxWorks_MES&#xD;
+m_mutexS = semMCreate (SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE);&#xD;
+#else&#xD;
+m_mutexS = semBCreate (SEM_Q_PRIORITY, SEM_FULL);&#xD;
+#endif&#xD;
+if (m_mutexS == NULL) {&#xD;
+ OSAL_ERROR (&quot;ON semaphore create()&quot;);&#xD;
+}&#xD;
+&#xD;
+// --------------------------------------------&#xD;
+#else&#xD;
+#error SYNCHRO_?? not defined&#xD;
+#endif&#xD;
+&#xD;
+TRACEpr (F7);&#xD;
+PR (&quot;after Mutex::createEff()&quot; &lt;&lt; showI);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_v4CukFF0EdyjobZYtXo9NQ" name="print" specification="_CFHYcFF0EdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body>TRACEpr (F7);&#xD;
+PR (&quot;Mutex::print (&quot; &lt;&lt; label &lt;&lt; &quot;), errno= &quot; &lt;&lt; errno &lt;&lt; showI);&#xD;
+&#xD;
+unsigned short *pc1;&#xD;
+int size;&#xD;
+#if defined SYNCHRO_VxWorks&#xD;
+ if (m_mutexS == NULL) {&#xD;
+ OSAL_ERROR (&quot;m_mutexS == NULL&quot;);&#xD;
+ }&#xD;
+ pc1 = (unsigned short *) m_mutexS;&#xD;
+ size = 40; // sizeof(class semaphore);&#xD;
+&#xD;
+ semShow (m_mutexS, 1); // dump of system structure&#xD;
+ //-- errno= 0;&#xD;
+#else&#xD;
+ pc1 = (unsigned short *) &amp;m_mutexS;&#xD;
+ size = sizeof (MutexId);&#xD;
+#endif&#xD;
+&#xD;
+char buffer[200];&#xD;
+char *pb = buffer;&#xD;
+unsigned short *pc = pc1;&#xD;
+for (int k = 0; k &lt; size; k += 2)&#xD;
+{&#xD;
+ if (k % 16 == 0)&#xD;
+ pb += sprintf (pb, &quot;\n\t&quot;);&#xD;
+ pb += sprintf (pb, &quot;%4.4x &quot;, *pc++);&#xD;
+ if ((pb - buffer) > (int) sizeof (buffer))&#xD;
+ OSAL_ERROR (&quot;Enlarge size of buffer.&quot;);&#xD;
+}&#xD;
+&#xD;
+PR (&quot;, dump of m_mutexS at 0x&quot; &lt;&lt; pc1 &lt;&lt; &quot;: &quot; &lt;&lt; buffer &lt;&lt; showI);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_4NODEFFvEdyjobZYtXo9NQ" name="Mutex" method="_ZOvmcFF0EdyjobZYtXo9NQ"/>
+ <ownedOperation xmi:id="_4cRLsFFvEdyjobZYtXo9NQ" name="Mutex" method="_larX0FF0EdyjobZYtXo9NQ"/>
+ <ownedOperation xmi:id="_-Hj6kFFvEdyjobZYtXo9NQ" name="lock" method="_a4i10FF0EdyjobZYtXo9NQ">
+ <ownedComment xmi:id="__4g60FFvEdyjobZYtXo9NQ" annotatedElement="_-Hj6kFFvEdyjobZYtXo9NQ">
+ <body>Locks the mutex. If the mutex is currently unlocked, it becomes locked&#xD;
+ and owned by the calling thread, and returns immediately.&#xD;
+ If the mutex is already locked by another thread, &quot;lock&quot; suspends the&#xD;
+ calling thread until the mutex is unlocked.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_DEz3sFFwEdyjobZYtXo9NQ" name="unlock" method="_dWfe8FF0EdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_E-Z2kFFwEdyjobZYtXo9NQ" annotatedElement="_DEz3sFFwEdyjobZYtXo9NQ">
+ <body>Unlocks the given mutex. The mutex is assumed to be locked and owned&#xD;
+ by the calling thread on entrance to unlock.&#xD;
+ unlock always returns the mutex to the unlocked state (we do not use the&#xD;
+ pthread option &quot;recursive&quot;, which decrements the locking count of the mutex&#xD;
+ [number of lock operations performed on it by the calling thread], and&#xD;
+ only when this count reaches zero is the mutex actually unlocked).</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Jid3oFFwEdyjobZYtXo9NQ" name="tryLock" method="_f75a8FF0EdyjobZYtXo9NQ">
+ <ownedParameter xmi:id="_KnwrwFFwEdyjobZYtXo9NQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KoNXsFFwEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KoWhoFFwEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_L9vAMFFwEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_OEl_AFFwEdyjobZYtXo9NQ" name="Mutex" visibility="protected" method="_oFvP4FF0EdyjobZYtXo9NQ">
+ <ownedParameter xmi:id="_Oq5KAFFwEdyjobZYtXo9NQ" name="interProc">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OrME8FFwEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ore_4FFwEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_QKQrAFFwEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_W33LcFFwEdyjobZYtXo9NQ" name="creatEff" visibility="private" method="_s_tPgFF0EdyjobZYtXo9NQ">
+ <ownedParameter xmi:id="_ZYNBQFFwEdyjobZYtXo9NQ" name="scope" type="_0H3-IBEcEeG3cfLoiI6G7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZYf8MFFwEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZYpGIFFwEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_aJ0rcFFwEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_CFHYcFF0EdyjobZYtXo9NQ" name="print" visibility="private" method="_v4CukFF0EdyjobZYtXo9NQ">
+ <ownedParameter xmi:id="_Dd6-cFF0EdyjobZYtXo9NQ" name="label">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DeXqYFF0EdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DehbYFF0EdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_FDspcFF0EdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5HEaAFFgEdyjobZYtXo9NQ" clientDependency="_FQwvsFFhEdyjobZYtXo9NQ _Gyg2UFFhEdyjobZYtXo9NQ _OztsoFFhEdyjobZYtXo9NQ" name="CriticalSection">
+ <ownedComment xmi:id="_7UU7wFFgEdyjobZYtXo9NQ" annotatedElement="_5HEaAFFgEdyjobZYtXo9NQ">
+ <body>Protects the code following a declaration of an instance of this class&#xD;
+against an interruption for signal handling and against reentrance of&#xD;
+this code. It is associated with an instance of class Mutex (passed in&#xD;
+the constructor).&#xD;
+&#xD;
+Example:&#xD;
+Management of a list (see class SR_List) that can be accessed by multiple&#xD;
+threads. To assure data integrity, each list instance contains a mutex,&#xD;
+all public methods look like:&#xD;
+SR_Liste::append()&#xD;
+{&#xD;
+ CriticalSection cs(mutex);&#xD;
+ ...&#xD;
+} // end of critical section.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="__4miwFFhEdyjobZYtXo9NQ" name="m_mutex" visibility="private" type="_Jj9usFC7EdyqzLG48ixyqA" isUnique="false" association="__4cxwFFhEdyjobZYtXo9NQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DGPjcFFiEdyjobZYtXo9NQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DGYtYFFiEdyjobZYtXo9NQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_IAWtAFFiEdyjobZYtXo9NQ" name="m_maskAll" visibility="private" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IAzY8FFiEdyjobZYtXo9NQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IAzY8VFiEdyjobZYtXo9NQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_IEFWcFFiEdyjobZYtXo9NQ" name="m_oldMask" visibility="private" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IEiCYFFiEdyjobZYtXo9NQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IErMUFFiEdyjobZYtXo9NQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_VGs4MFFiEdyjobZYtXo9NQ" name="CriticalSection" specification="_df1i0FFhEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> m_mutex = mutex;&#xD;
+&#xD;
+ sigfillset (&amp;m_maskAll);&#xD;
+ Thread::changeSigMask (SIG_SETMASK, &amp;m_maskAll, &amp;m_oldMask);&#xD;
+&#xD;
+ m_mutex->lock ();&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WjY4oFFiEdyjobZYtXo9NQ" name="CriticalSection" specification="_dnb_oFFhEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> m_mutex = shmPtr->getMutex ();&#xD;
+&#xD;
+ sigfillset (&amp;m_maskAll);&#xD;
+ Thread::changeSigMask (SIG_SETMASK, &amp;m_maskAll, &amp;m_oldMask);&#xD;
+ m_mutex->lock ();&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_X3u1YFFiEdyjobZYtXo9NQ" name="CriticalSection" specification="_du4rcFFhEdyjobZYtXo9NQ">
+ <language>C/C++</language>
+ <body> if (m_mutex) {&#xD;
+ m_mutex->unlock ();&#xD;
+ }&#xD;
+&#xD;
+ Thread::changeSigMask (SIG_SETMASK, &amp;m_oldMask, NULL);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_df1i0FFhEdyjobZYtXo9NQ" name="CriticalSection" method="_VGs4MFFiEdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_jdwSwFFhEdyjobZYtXo9NQ" annotatedElement="_df1i0FFhEdyjobZYtXo9NQ">
+ <body>Create a Critical section using the passed mutex pointer</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_lihm4FFhEdyjobZYtXo9NQ" name="mutexPtr" type="_Jj9usFC7EdyqzLG48ixyqA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_li0h0FFhEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ljHcwFFhEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_m_D2UFFhEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_dnb_oFFhEdyjobZYtXo9NQ" name="CriticalSection" method="_WjY4oFFiEdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_ski4IFFhEdyjobZYtXo9NQ" annotatedElement="_dnb_oFFhEdyjobZYtXo9NQ">
+ <body>Create a critical section using the mutex provided by the SharedMemory</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_u2uWIFFhEdyjobZYtXo9NQ" name="shmPtr" type="_sq-yMFCvEdyqzLG48ixyqA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_u3LCEFFhEdyjobZYtXo9NQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_u3d9AFFhEdyjobZYtXo9NQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vr64wFFhEdyjobZYtXo9NQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_du4rcFFhEdyjobZYtXo9NQ" name="CriticalSection" method="_X3u1YFFiEdyjobZYtXo9NQ">
+ <ownedComment xmi:id="_21F64FFhEdyjobZYtXo9NQ" annotatedElement="_du4rcFFhEdyjobZYtXo9NQ">
+ <body>The destructor will release the mutex.</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_FQwvsFFhEdyjobZYtXo9NQ" name="FromCriticalSectiontop_Synchronization" client="_5HEaAFFgEdyjobZYtXo9NQ" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_Gyg2UFFhEdyjobZYtXo9NQ" name="FromCriticalSectiontoMutex" client="_5HEaAFFgEdyjobZYtXo9NQ" supplier="_Jj9usFC7EdyqzLG48ixyqA"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_OztsoFFhEdyjobZYtXo9NQ" name="FromCriticalSectiontoSharedMemory" client="_5HEaAFFgEdyjobZYtXo9NQ" supplier="_sq-yMFCvEdyqzLG48ixyqA"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="__4cxwFFhEdyjobZYtXo9NQ" name="Association_CriticalSection_Mutex" memberEnd="__4miwFFhEdyjobZYtXo9NQ __5f6oFFhEdyjobZYtXo9NQ">
+ <ownedEnd xmi:id="__5f6oFFhEdyjobZYtXo9NQ" name="criticalSection" type="_5HEaAFFgEdyjobZYtXo9NQ" isUnique="false" association="__4cxwFFhEdyjobZYtXo9NQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__6FwglFhEdyjobZYtXo9NQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__6FwgVFhEdyjobZYtXo9NQ" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_s6W6oFFiEdyjobZYtXo9NQ" name="FromLocktop_Synchronization" client="_qIyBkFC3EdyqzLG48ixyqA" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_tfdf4FFvEdyjobZYtXo9NQ" name="FromMutextop_Synchronization" client="_Jj9usFC7EdyqzLG48ixyqA" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_OIKeIFF1EdyjobZYtXo9NQ" name="Fromp_SynchronizationtoBaseTypes" client="_rsw80FC3EdyqzLG48ixyqA" supplier="_0TXx4DUOEdy0feurbW0fyQ"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_dhMBIFF2EdyxP5ejovTmBw" clientDependency="_nORxgFF2EdyxP5ejovTmBw" name="RWLock">
+ <ownedComment xmi:id="_h-_pMFF2EdyxP5ejovTmBw" annotatedElement="_dhMBIFF2EdyxP5ejovTmBw">
+ <body>Allows to authorize the access to data shared between multiple threads.&#xD;
+Access can be shared by multiple reades, but there can only be one writer.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_Ce-GEFF4EdyxP5ejovTmBw" name="rwl" visibility="private" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CfRBAFF4EdyxP5ejovTmBw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CfayAFF4EdyxP5ejovTmBw" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Pus2wFF4EdyxP5ejovTmBw" name="_rwl" specification="_-EmMgFF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> return rwl;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RLryIFF4EdyxP5ejovTmBw" name="set_rwl" specification="_-N-yAFF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> rwl = cr_operand;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_eCFc0FF4EdyxP5ejovTmBw" name="RWLock" specification="_tz4-IFF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_Solaris&#xD;
+ errno = rwlock_init (&amp;rwl, USYNC_THREAD, NULL);&#xD;
+&#xD;
+#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
+ errno = pthread_rwlock_init (&amp;rwl, NULL);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ rwl.readers = 0; // pas de lecteur au début&#xD;
+ rwl.writers = 0; // pas d'écrivain au début&#xD;
+&#xD;
+ rwl.readersMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //initialisation&#xD;
+ rwl.writersMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //des&#xD;
+ rwl.readMut = semBCreate (SEM_Q_FIFO, SEM_FULL); //mutexes&#xD;
+ rwl.writeSem = semCCreate (SEM_Q_FIFO, 1); //et des&#xD;
+ rwl.readSem = semCCreate (SEM_Q_FIFO, 1); //semaphores&#xD;
+&#xD;
+ if ((rwl.readersMut != NULL) &amp;&amp; (rwl.writersMut != NULL)&#xD;
+ &amp;&amp; (rwl.readMut != NULL)&#xD;
+ &amp;&amp; (rwl.writeSem != NULL) &amp;&amp; (rwl.readSem != NULL))&#xD;
+ errno = 0;&#xD;
+ else&#xD;
+ errno = ENOMEM; // semBCreate et semCCreate ne positionnent pas errno&#xD;
+&#xD;
+&#xD;
+#else // RWLock_Simulation&#xD;
+ rwl.readers = 0; //pas de lecteur au début&#xD;
+ rwl.writers = 0; //pas d'écrivain au début&#xD;
+ errno = 0;&#xD;
+#endif&#xD;
+&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_gGHKEFF4EdyxP5ejovTmBw" name="RWLock" specification="_t6TIIFF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_Solaris&#xD;
+ errno = rwlock_destroy (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
+ errno = pthread_rwlock_destroy (&amp;rwl);&#xD;
+&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks //-VxW&#xD;
+ errno = 0; // je suppose qu'1 exécution OK ne touche pas errno &#xD;
+ semDelete (rwl.readersMut);&#xD;
+ semDelete (rwl.writersMut);&#xD;
+ semDelete (rwl.readMut);&#xD;
+ semDelete (rwl.readSem);&#xD;
+ semDelete (rwl.writeSem);&#xD;
+&#xD;
+#else&#xD;
+ errno = 0;&#xD;
+#endif&#xD;
+&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_jtFQwFF4EdyxP5ejovTmBw" name="rdlock" specification="_uA2cEFF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_Solaris&#xD;
+ errno = rw_rdlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
+ errno = pthread_rwlock_rdlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ errno = 0;&#xD;
+ if (semTake (rwl.readMut, WAIT_FOREVER) == OK)&#xD;
+ if (semTake (rwl.readSem, WAIT_FOREVER) == OK)&#xD;
+ if (semTake (rwl.readersMut, WAIT_FOREVER) == OK) //début de section critique&#xD;
+ {&#xD;
+ rwl.readers++; //incremente nb de lecteurs&#xD;
+ if (rwl.readers == 1) //si premier lecteur alors il &#xD;
+ semTake (rwl.writeSem, WAIT_FOREVER); //bloque l'ecriture&#xD;
+ if (semGive (rwl.readersMut) == OK) //fin de section critique&#xD;
+ if (semGive (rwl.readSem) == OK)&#xD;
+ semGive (rwl.readMut);&#xD;
+ }&#xD;
+&#xD;
+#else // RWLock_Simulation&#xD;
+ errno = 0;&#xD;
+ rwl.readMut.lock ();&#xD;
+ rwl.readSem.wait ();&#xD;
+ rwl.readersMut.lock (); // début de section critique&#xD;
+ {&#xD;
+ rwl.readers++; //incrémente nb de lecteurs&#xD;
+ if (rwl.readers == 1) //si premier lecteur alors il &#xD;
+ rwl.writeSem.wait (); //bloque l'ecriture&#xD;
+ }&#xD;
+ rwl.readersMut.unlock (); // fin de section critique&#xD;
+ rwl.readSem.post ();&#xD;
+ rwl.readMut.unlock ();&#xD;
+&#xD;
+#endif&#xD;
+&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_mnfzcFF4EdyxP5ejovTmBw" name="wrlock" specification="_uHG1EFF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_Solaris&#xD;
+ errno = rw_wrlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
+ errno = pthread_rwlock_wrlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ errno = 0;&#xD;
+ if (semTake (rwl.writersMut, WAIT_FOREVER) == OK) //début de section critique&#xD;
+ {&#xD;
+ if (++rwl.writers == 1) //si premier écrivain, alors &#xD;
+ semTake (rwl.readSem, WAIT_FOREVER); // attendre fin des lecteurs et les bloquer&#xD;
+ if (semGive (rwl.writersMut) == OK) //fin de section critique&#xD;
+ semTake (rwl.writeSem, WAIT_FOREVER); //verrouille acces en ecriture/lecture pour autres&#xD;
+ }&#xD;
+&#xD;
+#else // RWLock_Simulation&#xD;
+ errno = 0;&#xD;
+ rwl.writersMut.lock (); // début de section critique&#xD;
+ if (++rwl.writers == 1) //si premier écrivain, alors &#xD;
+ rwl.readSem.wait (); // attendre fin des lecteurs et les bloquer&#xD;
+ rwl.writersMut.unlock (); // fin de section critique&#xD;
+ rwl.writeSem.wait (); // demande à écrire seul&#xD;
+#endif&#xD;
+&#xD;
+ if (errno) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p0ZNQFF4EdyxP5ejovTmBw" name="unlock" specification="_uL4AUFF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_Solaris&#xD;
+ errno = rw_unlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
+ errno = pthread_rwlock_unlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ errno = 0;&#xD;
+ // test, if a reader or writer requires end&#xD;
+ if (rwl.readers)&#xD;
+ {&#xD;
+ if (semTake (rwl.readersMut, WAIT_FOREVER) == OK)&#xD;
+ {&#xD;
+ // entered critical section (through semTake)&#xD;
+ if (--rwl.readers == 0) // if last reader, authorize writers&#xD;
+ semGive (rwl.writeSem);&#xD;
+ semGive (rwl.readersMut); // end of critical section&#xD;
+ }&#xD;
+ }&#xD;
+ else if (rwl.writers)&#xD;
+ {&#xD;
+ if (semGive (rwl.writeSem) == OK) // authorize other writers&#xD;
+ if (semTake (rwl.writersMut, WAIT_FOREVER) == OK)&#xD;
+ {&#xD;
+ // entered critical section (through semTake)&#xD;
+ if (--rwl.writers == 0) // if last writer, authorize readers&#xD;
+ semGive (rwl.readSem);&#xD;
+ semGive (rwl.writersMut); // end of critical section&#xD;
+ }&#xD;
+ }&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;readers==0 &amp;&amp; writers==0&quot;);&#xD;
+&#xD;
+#else // RWLock_Simulation&#xD;
+ errno = 0;&#xD;
+ // test, if a reader or writer requires end&#xD;
+ if (rwl.readers)&#xD;
+ {&#xD;
+ rwl.readersMut.lock (); // enter ciritical section&#xD;
+ if (--rwl.readers == 0) // if last reader, authorize writers&#xD;
+ rwl.writeSem.post ();&#xD;
+ rwl.readersMut.unlock (); // end of critical section&#xD;
+ }&#xD;
+ else if (rwl.writers)&#xD;
+ {&#xD;
+ rwl.writeSem.post (); // authorize other writer&#xD;
+ rwl.writersMut.lock (); // enter critical section&#xD;
+ if (--rwl.writers == 0) // if last writer, authorize readers&#xD;
+ rwl.readSem.post ();&#xD;
+ rwl.writersMut.unlock (); // end of critical section&#xD;
+ }&#xD;
+ else&#xD;
+ OSAL_ERROR (&quot;readers==0 &amp;&amp; writers==0&quot;);&#xD;
+#endif&#xD;
+&#xD;
+ if (errno)&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_stT7IFF4EdyxP5ejovTmBw" name="tryRdLock" specification="_uQNGsFF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_Solaris&#xD;
+ errno = rw_tryrdlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
+ errno = pthread_rwlock_tryrdlock (&amp;rwl);&#xD;
+&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ if (semTake (rwl.readMut, WAIT_FOREVER) == OK)&#xD;
+ if (semTake (rwl.readSem, WAIT_FOREVER) == OK) // VERIFIER ???????????&#xD;
+ if (semTake (rwl.readersMut, WAIT_FOREVER) == OK)&#xD;
+ {&#xD;
+ // entered critical section (through semTake)&#xD;
+ rwl.readers++; // increment number of readers&#xD;
+ if (rwl.readers == 1) // if first reader, ...&#xD;
+ semTake (rwl.writeSem, NO_WAIT); // ... block writer // VERIFIER ???????????&#xD;
+ if (semGive (rwl.readersMut) == OK) // end of critical section&#xD;
+ if (semGive (rwl.readSem) == OK)&#xD;
+ semGive (rwl.readMut);&#xD;
+ }&#xD;
+&#xD;
+#else // RWLock_Simulation&#xD;
+ errno = 0;&#xD;
+ rwl.readMut.lock ();&#xD;
+ if (rwl.readSem.tryWait () == 0)&#xD;
+ {&#xD;
+ rwl.readersMut.lock (); // begin of critical section&#xD;
+ {&#xD;
+ rwl.readers++; // increment number of readers&#xD;
+ if (rwl.readers == 1) // if first reader, ...&#xD;
+ rwl.writeSem.wait (); // ... block writer&#xD;
+ }&#xD;
+ rwl.readersMut.unlock (); // end of critical section&#xD;
+ rwl.readSem.post ();&#xD;
+ }&#xD;
+ rwl.readMut.unlock ();&#xD;
+#endif&#xD;
+&#xD;
+ if (errno &amp;&amp; errno != EBUSY)&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+&#xD;
+ return errno;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_v3OSYFF4EdyxP5ejovTmBw" name="tryWrLock" specification="_uVHb4FF3EdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_Solaris&#xD;
+ errno = rw_trywrlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;
+ errno = pthread_rwlock_trywrlock (&amp;rwl);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ errno = 0;&#xD;
+ if (semTake (rwl.writeSem, NO_WAIT) == OK) // request write access&#xD;
+ {&#xD;
+ if (semTake (rwl.writersMut, WAIT_FOREVER) == OK)&#xD;
+ {&#xD;
+ // entered critical section (through semTake)&#xD;
+ if (++rwl.writers == 1) //si premier ecrivain alors il &#xD;
+ semTake (rwl.readSem, WAIT_FOREVER); //bloque les lecteurs&#xD;
+ semGive (rwl.writersMut); //fin de section critique&#xD;
+ }&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ if (errno == S_objLib_OBJ_UNAVAILABLE)&#xD;
+ errno = EBUSY;&#xD;
+ }&#xD;
+&#xD;
+#else // RWLock_Simulation&#xD;
+ errno = 0;&#xD;
+ rwl.writersMut.lock (); // begin of critical section&#xD;
+ {&#xD;
+ rwl.writers++; // increment number of readers&#xD;
+ if (rwl.writers == 1) // if first reader, ... &#xD;
+ rwl.readSem.wait (); // ... block writers&#xD;
+ }&#xD;
+ rwl.writersMut.unlock (); // end of critical section&#xD;
+ rwl.writeSem.wait (); // lock write/read access for others&#xD;
+#endif&#xD;
+&#xD;
+ if (errno &amp;&amp; errno != EBUSY)&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+&#xD;
+ return errno;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_tz4-IFF3EdyxP5ejovTmBw" name="RWLock" method="_eCFc0FF4EdyxP5ejovTmBw"/>
+ <ownedOperation xmi:id="_t6TIIFF3EdyxP5ejovTmBw" name="RWLock" method="_gGHKEFF4EdyxP5ejovTmBw"/>
+ <ownedOperation xmi:id="_uA2cEFF3EdyxP5ejovTmBw" name="rdlock" method="_jtFQwFF4EdyxP5ejovTmBw"/>
+ <ownedOperation xmi:id="_uHG1EFF3EdyxP5ejovTmBw" name="wrlock" method="_mnfzcFF4EdyxP5ejovTmBw"/>
+ <ownedOperation xmi:id="_uL4AUFF3EdyxP5ejovTmBw" name="unlock" method="_p0ZNQFF4EdyxP5ejovTmBw"/>
+ <ownedOperation xmi:id="_uQNGsFF3EdyxP5ejovTmBw" name="tryRdLock" method="_stT7IFF4EdyxP5ejovTmBw">
+ <ownedParameter xmi:id="_2732UFF3EdyxP5ejovTmBw" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_28T7MFF3EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_28dsMFF3EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_4eqewFF3EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_uVHb4FF3EdyxP5ejovTmBw" name="tryWrLock" method="_v3OSYFF4EdyxP5ejovTmBw">
+ <ownedParameter xmi:id="_5qzhwFF3EdyxP5ejovTmBw" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5rHDwFF3EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5rZ-sFF3EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_69gfwFF3EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_-EmMgFF3EdyxP5ejovTmBw" name="_rwl" method="_Pus2wFF4EdyxP5ejovTmBw">
+ <ownedParameter xmi:id="_K9Or0FF4EdyxP5ejovTmBw" name="param_0" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K9rXwFF4EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_K9-SsFF4EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_LtXIQFF4EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_-N-yAFF3EdyxP5ejovTmBw" name="set_rwl" method="_RLryIFF4EdyxP5ejovTmBw">
+ <ownedParameter xmi:id="_M0l2EFF4EdyxP5ejovTmBw" name="cr_operand">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M1B68FF4EdyxP5ejovTmBw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_M1Vc8FF4EdyxP5ejovTmBw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Nlw0UFF4EdyxP5ejovTmBw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_nORxgFF2EdyxP5ejovTmBw" name="FromRWLocktop_Synchronization" client="_dhMBIFF2EdyxP5ejovTmBw" supplier="_rsw80FC3EdyqzLG48ixyqA"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_IbQcUFd7Ed-9TNLvplUFDQ" name="SemStruc"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_QWlVgPRTEeCUGrV0Hl4JwQ" name="Condition">
+ <ownedComment xmi:id="_QWlVgfRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVgPRTEeCUGrV0Hl4JwQ">
+ <body>From the Posix man page:&#xD;
+A condition (short for ``condition variable'') is a synchronization&#xD;
+device that allows threads to suspend execution and relinquish the&#xD;
+processors until some predicate on shared data is satisfied. The basic&#xD;
+operations on conditions are: signal the condition (when the predicate&#xD;
+becomes true), and wait for the condition, suspending the thread&#xD;
+execution until another thread signals the condition.&#xD;
+&#xD;
+A condition variable must always be associated with a mutex, to avoid&#xD;
+the race condition where a thread prepares to wait on a condition&#xD;
+variable and another thread signals the condition just before the&#xD;
+first thread actually waits on it.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_QWlVgvRTEeCUGrV0Hl4JwQ" name="m_isLocked" visibility="private" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVhPRTEeCUGrV0Hl4JwQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVg_RTEeCUGrV0Hl4JwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_QWlVhvRTEeCUGrV0Hl4JwQ" name="m_mutex" visibility="private" type="_Jj9usFC7EdyqzLG48ixyqA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlViPRTEeCUGrV0Hl4JwQ"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVh_RTEeCUGrV0Hl4JwQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SAnLoBEhEeG3cfLoiI6G7g" name="m_condition" type="_U_uoIBEhEeG3cfLoiI6G7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SBsJsBEhEeG3cfLoiI6G7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SBv0EBEhEeG3cfLoiI6G7g" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVifRTEeCUGrV0Hl4JwQ" name="Condition" specification="_QWlVkfRTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_POSIX4&#xD;
+ int error = pthread_cond_init (&amp;m_condition, NULL);&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+ int error = cond_init (&amp;m_condition, USYNC_THREAD, 0);&#xD;
+&#xD;
+#elif defined SYNCHRO_VxWorks&#xD;
+ OSAL_ERROR (&quot;Not available with VxWorks&quot;);&#xD;
+ // maybe a mechanism can be implemented by means of a signal pendants&#xD;
+&#xD;
+#else&#xD;
+ #error SYNCHRO_???? not defined&#xD;
+#endif&#xD;
+&#xD;
+if (error) {&#xD;
+ OSAL_ERROR (&quot;Condition constructor failed&quot;);&#xD;
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVivRTEeCUGrV0Hl4JwQ" name="Condition" specification="_QWlVkvRTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>if (m_isLocked) {&#xD;
+ unlock ();&#xD;
+}&#xD;
+&#xD;
+#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux&#xD;
+ int error = pthread_cond_destroy (&amp;m_condition);&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+ int error = cond_destroy (&amp;m_condition);&#xD;
+#endif&#xD;
+&#xD;
+if (error) {&#xD;
+ OSAL_ERROR (&quot;destructor failed&quot;);&#xD;
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVi_RTEeCUGrV0Hl4JwQ" name="lock" specification="_QWlVk_RTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>m_mutex.lock ();&#xD;
+m_isLocked = true;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVjPRTEeCUGrV0Hl4JwQ" name="unlock" specification="_QWlVlPRTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>if (!m_isLocked) {&#xD;
+ // OSAL_ERROR (&quot;already unlocked&quot;);&#xD;
+}&#xD;
+m_mutex.unlock ();&#xD;
+m_isLocked = false;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVjfRTEeCUGrV0Hl4JwQ" name="wait" specification="_QWlVlfRTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>for (;;) {&#xD;
+#if defined SYNCHRO_POSIX4&#xD;
+ /*&#xD;
+ * POSIX man page:&#xD;
+ * The pthread_cond_timedwait() and pthread_cond_wait() functions shall&#xD;
+ * block on a condition variable. They shall be called with mutex locked&#xD;
+ * by the calling thread or undefined behavior results.&#xD;
+ */&#xD;
+ &#xD;
+ int result = pthread_cond_wait (&amp;m_condition, &amp;m_mutex.m_mutexS);&#xD;
+ &#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+ int result = cond_wait (&amp;m_condition, &amp;m_mutex.m_mutexS);&#xD;
+ &#xD;
+#endif&#xD;
+ if (result == 0) {&#xD;
+ // upon successful return, the lock is re-locked&#xD;
+ m_isLocked = true;&#xD;
+ return result;&#xD;
+ }&#xD;
+ if (result == EPERM) {&#xD;
+ OSAL_ERROR (&quot;wait failed (EPERM - operation not permitted)&quot;);&#xD;
+ } &#xD;
+ else if (result != EINTR) {&#xD;
+ OSAL_ERROR (&quot;wait failed&quot;);&#xD;
+ }&#xD;
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVjvRTEeCUGrV0Hl4JwQ" name="waitUpto" specification="_QWlVm_RTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>TRACEpr (VM);&#xD;
+PR (&quot;Condition::waitUpTo ()&quot; &lt;&lt; showI);&#xD;
+&#xD;
+int result;&#xD;
+if (date.hasPassed ()) {&#xD;
+ result = ERANGE; // it is too late !&#xD;
+}&#xD;
+else {&#xD;
+ result = 0;&#xD;
+&#xD;
+ m_isLocked = false; // cond_timedwait will unlock the lock&#xD;
+ OS_AL::Time::TimeVal absTime = date + OS_AL::Time::TimeVal::sysStartTime();&#xD;
+#if defined SYNCHRO_POSIX4&#xD;
+ struct timespec final; // final date in standard type&#xD;
+ final.tv_sec = absTime.getSec();&#xD;
+ final.tv_nsec = absTime.getUsec() * 1000;&#xD;
+&#xD;
+ for (;;) {&#xD;
+ result = pthread_cond_timedwait (&amp;m_condition, &amp;m_mutex.m_mutexS, &amp;final);&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+ timestruc_t final; // final date in standard type&#xD;
+ final.tv_sec = absTime.getSec();&#xD;
+ final.tv_nsec = absTime.getUsec() * 1000;&#xD;
+&#xD;
+ for (;;) {&#xD;
+ result = cond_timedwait (&amp;m_condition, &amp;m_mutex.m_mutexS, &amp;final);&#xD;
+#else&#xD;
+ // not supported in vxWorks, open loop to satisfy the compilers&#xD;
+ for (;;) {&#xD;
+ result = 0;&#xD;
+#endif&#xD;
+ if ((result == 0) || (result == ETIMEDOUT)) {&#xD;
+ break;&#xD;
+ }&#xD;
+ if (result != EINTR) {&#xD;
+ OS_AL::Util::BString500 s1 (&quot;date=&quot;);&#xD;
+ OSAL_ERROR (s1 &lt;&lt; final.tv_sec &lt;&lt; &quot; sec. , &quot; &lt;&lt; final.tv_nsec);&#xD;
+ }&#xD;
+ }&#xD;
+}&#xD;
+&#xD;
+// upon successful return, the lock is re-locked&#xD;
+if (result == 0) {&#xD;
+ m_isLocked = true;&#xD;
+}&#xD;
+return result;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVj_RTEeCUGrV0Hl4JwQ" name="signal" specification="_QWlVpfRTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux&#xD;
+int result = pthread_cond_signal (&amp;m_condition);&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+int result = cond_signal (&amp;m_condition);&#xD;
+&#xD;
+#endif&#xD;
+&#xD;
+if (result != 0) {&#xD;
+ OSAL_ERROR (&quot;could not signal condition&quot;);&#xD;
+}&#xD;
+&#xD;
+return result;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QWlVkPRTEeCUGrV0Hl4JwQ" name="broadcast" specification="_QWlVq_RTEeCUGrV0Hl4JwQ">
+ <language>C/C++</language>
+ <body>#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux&#xD;
+int result = pthread_cond_broadcast (&amp;m_condition);&#xD;
+&#xD;
+#elif defined SYNCHRO_Solaris&#xD;
+int result = cond_broadcast (&amp;m_condition);&#xD;
+&#xD;
+#endif&#xD;
+&#xD;
+if (result != 0) {&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+}&#xD;
+&#xD;
+return result;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_QWlVkfRTEeCUGrV0Hl4JwQ" name="Condition" method="_QWlVifRTEeCUGrV0Hl4JwQ"/>
+ <ownedOperation xmi:id="_QWlVkvRTEeCUGrV0Hl4JwQ" name="Condition" method="_QWlVivRTEeCUGrV0Hl4JwQ"/>
+ <ownedOperation xmi:id="_QWlVk_RTEeCUGrV0Hl4JwQ" name="lock" method="_QWlVi_RTEeCUGrV0Hl4JwQ"/>
+ <ownedOperation xmi:id="_QWlVlPRTEeCUGrV0Hl4JwQ" name="unlock" method="_QWlVjPRTEeCUGrV0Hl4JwQ"/>
+ <ownedOperation xmi:id="_QWlVlfRTEeCUGrV0Hl4JwQ" name="wait" method="_QWlVjfRTEeCUGrV0Hl4JwQ">
+ <ownedComment xmi:id="_QWlVlvRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVlfRTEeCUGrV0Hl4JwQ">
+ <body>wait, until the condition variable is signaled.&#xD;
+ &#xD;
+ The associated mutex must be locked before calling waitUpto. It will&#xD;
+ be re-locked at the end of the call.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_QWlVl_RTEeCUGrV0Hl4JwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVmfRTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVmPRTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_QWlVmvRTEeCUGrV0Hl4JwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QWlVm_RTEeCUGrV0Hl4JwQ" name="waitUpto" method="_QWlVjvRTEeCUGrV0Hl4JwQ">
+ <ownedComment xmi:id="_QWlVnPRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVm_RTEeCUGrV0Hl4JwQ">
+ <body>wait, until the condition variable is signaled or the given date&#xD;
+ has pased.&#xD;
+ &#xD;
+ The associated mutex must be locked before calling waitUpto. It will&#xD;
+ be re-locked at the end of the call.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_QWlVnfRTEeCUGrV0Hl4JwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVn_RTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVnvRTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_QWlVoPRTEeCUGrV0Hl4JwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_QWlVofRTEeCUGrV0Hl4JwQ" name="date" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVo_RTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVovRTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_QWlVpPRTEeCUGrV0Hl4JwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QWlVpfRTEeCUGrV0Hl4JwQ" name="signal" method="_QWlVj_RTEeCUGrV0Hl4JwQ">
+ <ownedComment xmi:id="_QWlVpvRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVpfRTEeCUGrV0Hl4JwQ">
+ <body>signal the condition. A thread that is currently waiting for the&#xD;
+ condition will continue. If multiple threads are waiting, only one&#xD;
+ of these will continue.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_QWlVp_RTEeCUGrV0Hl4JwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVqfRTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVqPRTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_QWlVqvRTEeCUGrV0Hl4JwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QWlVq_RTEeCUGrV0Hl4JwQ" name="broadcast" method="_QWlVkPRTEeCUGrV0Hl4JwQ">
+ <ownedComment xmi:id="_QWlVrPRTEeCUGrV0Hl4JwQ" annotatedElement="_QWlVq_RTEeCUGrV0Hl4JwQ">
+ <body>signal the condition. Other threads that are currently waiting for the&#xD;
+ condition will continue.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_QWlVrfRTEeCUGrV0Hl4JwQ" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QWlVr_RTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QWlVrvRTEeCUGrV0Hl4JwQ" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_QWlVsPRTEeCUGrV0Hl4JwQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_uWQvMBD4EeG3cfLoiI6G7g" name="MutexId"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_0H3-IBEcEeG3cfLoiI6G7g" name="Scope">
+ <ownedLiteral xmi:id="_2SOV0BEcEeG3cfLoiI6G7g" name="IntraProcess"/>
+ <ownedLiteral xmi:id="_3I10wBEcEeG3cfLoiI6G7g" name="InterProcess"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_U_uoIBEhEeG3cfLoiI6G7g" name="ConditionId"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_vlmmAC-OEdySSa8YESkO2w" name="Time">
+ <packagedElement xmi:type="uml:Class" xmi:id="_BN92YDj8Edy0Rd6V_tf1-Q" name="DebugTimer">
+ <ownedAttribute xmi:id="_4fTgUDj_Edy0Rd6V_tf1-Q" name="timer" type="_ETakYDj8Edy0Rd6V_tf1-Q" isUnique="false" association="_4fJvUDj_Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5xaBYDj_Edy0Rd6V_tf1-Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5xjyYDj_Edy0Rd6V_tf1-Q" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_B8mhMTkAEdy0Rd6V_tf1-Q" name="overrunCheckThread" type="_-HeCsDj_Edy0Rd6V_tf1-Q" isUnique="false" association="_B8mhMDkAEdy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C_gvsDkAEdy0Rd6V_tf1-Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C_p5oDkAEdy0Rd6V_tf1-Q" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_k235cDkFEdyuzNpSiGPe4w" name="m_thread" visibility="protected" type="_-HeCsDj_Edy0Rd6V_tf1-Q" isUnique="false" association="_k2k-gDkFEdyuzNpSiGPe4w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pAkSsDkFEdyuzNpSiGPe4w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pAuDsDkFEdyuzNpSiGPe4w" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hURusDkAEdy0Rd6V_tf1-Q" name="checkOverruns" specification="_I9vBoDkAEdy0Rd6V_tf1-Q">
+ <language>C/C++</language>
+ <body> int receivedSigID;&#xD;
+ sigset_t sigset;&#xD;
+ sigemptyset (&amp;sigset);&#xD;
+ sigaddset (&amp;sigset, SIGRTMIN);&#xD;
+ for (;;) {&#xD;
+ sigwait (&amp;sigset, &amp;receivedSigID);&#xD;
+ int overruns = debugTimer.getOverrun ();&#xD;
+ if (overruns > 0) {&#xD;
+ TRACEpr (F6);&#xD;
+ PR (&quot;detected return from debugger&quot; &lt;&lt; showI);&#xD;
+ TimeVal delta;&#xD;
+ overruns++; // the actual delay is between overruns and overruns+1&#xD;
+ delta.setSec ((overruns / DBG_TICKS_PER_SECOND));&#xD;
+ delta.setUsec ((overruns % DBG_TICKS_PER_SECOND) *&#xD;
+ DBG_RESOLUTION_MS * 1000);&#xD;
+ TimeVal::adjustTime (delta);&#xD;
+ PR (&quot;adjusted time&quot; &lt;&lt; showI);&#xD;
+ }&#xD;
+ }&#xD;
+ return NULL;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_k_uFsDkAEdy0Rd6V_tf1-Q" name="activateDebugTimer" specification="_RTqHkDj8Edy0Rd6V_tf1-Q">
+ <language>C/C++</language>
+ <body> itimerspec its = {&#xD;
+ {0, DBG_RESOLUTION_MS*1000*1000},&#xD;
+ {0, DBG_RESOLUTION_MS*1000*1000}&#xD;
+ };&#xD;
+&#xD;
+ // need high priority (1)&#xD;
+ Thread::modifySigMask (SIG_BLOCK, SIGRTMIN);&#xD;
+ // not declared globally, since initialization order of gcc is incorrect&#xD;
+ // (set_of_threads is initialized after)&#xD;
+ overrunCheckThread = new Thread (&quot;dbg-check&quot;);&#xD;
+ overrunCheckThread->exec (checkOverruns, NULL, 10);&#xD;
+ &#xD;
+ debugTimer.setTime (0, &amp;its);</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_RTqHkDj8Edy0Rd6V_tf1-Q" name="activateDebugTimer" method="_k_uFsDkAEdy0Rd6V_tf1-Q"/>
+ <ownedOperation xmi:id="_I9vBoDkAEdy0Rd6V_tf1-Q" name="checkOverruns" method="_hURusDkAEdy0Rd6V_tf1-Q">
+ <ownedComment xmi:id="_NMC1IDkAEdy0Rd6V_tf1-Q" annotatedElement="_I9vBoDkAEdy0Rd6V_tf1-Q">
+ <body>todo: need to use thread abstraction</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Q8_-QDkAEdy0Rd6V_tf1-Q" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RCzrUDkAEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RC9cUDkAEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_SEhnADkAEdy0Rd6V_tf1-Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_RLwL8DkAEdy0Rd6V_tf1-Q" name="arg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_RMDG4DkAEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_RMM34DkAEdy0Rd6V_tf1-Q" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_bZUzMDkAEdy0Rd6V_tf1-Q">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ETakYDj8Edy0Rd6V_tf1-Q" clientDependency="_l8eRwDkUEdyuzNpSiGPe4w _mS08QDkUEdyuzNpSiGPe4w" name="Timer">
+ <ownedComment xmi:id="_xh0kQDkUEdyuzNpSiGPe4w" annotatedElement="_ETakYDj8Edy0Rd6V_tf1-Q">
+ <body>Abstraction of a Timer&#xD;
+&#xD;
+This class serves two different functions: if an instance is&#xD;
+created via the constructor, it provides a (posix) timer. The configuration&#xD;
+of this timer is done by means of the method settime, which allows&#xD;
+principally to configure a period length and the initial delay.&#xD;
+&#xD;
+In addtion, the timer class offers the possibility to use system&#xD;
+functions for waiting a specific time:&#xD;
+&#xD;
+ - sleep&#xD;
+ - wakeup&#xD;
+ - wakePeriodicforZero&#xD;
+&#xD;
+In order to use These, it is not necessary to create a timer instance,&#xD;
+these operations are static.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_46X-0DkXEdyuzNpSiGPe4w" name="m_id" visibility="private" type="_5YJA0It4EeCA0czgCf_91g" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6UrZoDkXEdyuzNpSiGPe4w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6U1KoDkXEdyuzNpSiGPe4w" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aRuIkDkZEdyuzNpSiGPe4w" name="Timer" specification="_4_tSIDkUEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> m_id = TimerNotAssigned;&#xD;
+&#xD;
+#if defined TIMER_POSIX4&#xD;
+ #define ITIMER CLOCK_REALTIME // or CLOCK_MONOTONIC&#xD;
+&#xD;
+ // With evp==NULL and SA_SIGINFO set ,&#xD;
+ // SIGALRM will be sent to the process (or to the thread&#xD;
+ // not masked for this signal)&#xD;
+ // replace SIG_IGN by a handleSigAlarm() ??????&#xD;
+ // mask other signals !!&#xD;
+&#xD;
+ // initialisation of sigaction structure&#xD;
+ struct sigaction act;&#xD;
+ //act.sa_handler = (VOIDFUNCPTR) sigHandler;&#xD;
+ //act.sa_mask = 0;&#xD;
+ //act.sa_flags = 0;&#xD;
+ // we have to define a handler with the following arguments:&#xD;
+ // void sigHandler(int sig, int code, SIGCONTEXT *sigContext) {};&#xD;
+&#xD;
+ if (sigaction (SIGALRM, &amp;act, NULL))&#xD;
+ OSAL_ERROR (&quot;ON sigaction()&quot;);&#xD;
+&#xD;
+ struct sigevent sig_event;&#xD;
+ sig_event.sigev_notify = SIGEV_SIGNAL;&#xD;
+ sig_event.sigev_value.sival_ptr = this;&#xD;
+ sig_event.sigev_signo = SIGRTMIN;&#xD;
+ // sig_event.sigev_notify_function = SysTimer_impl::handler_fct;&#xD;
+ // sig_event.sigev_notify_attributes = NULL;&#xD;
+&#xD;
+ int r = timer_create (ITIMER, &amp;sig_event, &amp;m_id);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON timer_create()&quot;);&#xD;
+&#xD;
+#elif defined TIMER_Solaris&#xD;
+ #define ITIMER ITIMER_REAL // PAS CONSEILLÉ par Doc SunOS5.5&#xD;
+ //#define ITIMER ITIMER_VIRTUAL ???&#xD;
+ #define SIG_ITIMER SIGALRM // or SIGVTALRM&#xD;
+&#xD;
+ // &#xD;
+ // Si la Realtime Library de Solaris ne marche vraiment pas pour les timers&#xD;
+ // masquer ce thread contre les autres signaux !!&#xD;
+ // faire la methode de classe handleTimerSignal() contenant seulement :&#xD;
+ // flag= 1;&#xD;
+ //&#xD;
+ //**** Prepare signal receiving&#xD;
+ // struct sigaction sigAct;&#xD;
+ // sigAct.sa_handler= (VOIDFUNCPTR) sigHandler);&#xD;
+ // sigAct.sa_mask= 0;&#xD;
+ // sigAct.sa_flags= 0;&#xD;
+ // sigaction(SIGALRM, &amp;sigAct, NULL);&#xD;
+ //&#xD;
+ // void (*f)(int);&#xD;
+ // f= sigset(SIG_ITIMER, (void(*)(int))handleTimerSignal);&#xD;
+ // if (f == SIG_ERR)&#xD;
+ // OSAL_ERROR(&quot;ON sigset(SIG_ITIMER, )&quot;);&#xD;
+&#xD;
+ PRINTpr (&quot;not yet implemented.&quot;);&#xD;
+ pr &lt;&lt; shErr;&#xD;
+#else&#xD;
+ #error Timer_??? not defined&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_eQrRcDkZEdyuzNpSiGPe4w" name="Timer" specification="_5IDV0DkUEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> int r;&#xD;
+&#xD;
+#if defined TIMER_POSIX4&#xD;
+ if (m_id != TimerNotAssigned)&#xD;
+ {&#xD;
+ r = timer_delete (m_id);&#xD;
+ if (r == -1) {&#xD;
+ OSAL_ERROR (&quot;ON timer_delete()&quot;);&#xD;
+ }&#xD;
+ }&#xD;
+#elif defined TIMER_Solaris&#xD;
+ // [todo: resource leak?]&#xD;
+#else&#xD;
+ #error Timer_??? not defined&#xD;
+#endif&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_iA4zsDkZEdyuzNpSiGPe4w" name="waitPeriodicForZero" specification="_Fs12oDkWEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> int count = 0;&#xD;
+&#xD;
+ OS_AL::Util::Print pr2;&#xD;
+ pr2 &lt;&lt; txt;&#xD;
+&#xD;
+ while (*intPtr) // while pointed integer is not zero&#xD;
+ {&#xD;
+ if (txt.length () != 0) // print if txt string is not empty&#xD;
+ {&#xD;
+ pr2 &lt;&lt; &quot;value *intPtr = &quot; &lt;&lt; *intPtr &lt;&lt; &quot; - wait &quot; &lt;&lt; duration&#xD;
+ &lt;&lt; &quot; timetick(s)&quot; &lt;&lt; showI;&#xD;
+ }&#xD;
+ count ++;&#xD;
+ Timer::sleep (duration);&#xD;
+&#xD;
+ if (!(errno == EINTR || errno == ETIME))&#xD;
+ OSAL_ERROR (&quot;&quot;);&#xD;
+ }&#xD;
+ pr2.clean ();&#xD;
+&#xD;
+ TRACEpr (F7);&#xD;
+ PR (txt &lt;&lt; &quot;> return after &quot; &lt;&lt; count&#xD;
+ &lt;&lt; &quot; * &quot; &lt;&lt; duration &lt;&lt; &quot; timeticks&quot; &lt;&lt; showI);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_lacwgDkZEdyuzNpSiGPe4w" name="setTime" specification="__BNhkDkUEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> int r = 0;&#xD;
+&#xD;
+#if defined TIMER_POSIX4 || defined TIMER_Linux&#xD;
+ // flags == TIMER_RELTIME ou TIMER_ABSTIME&#xD;
+ r = timer_settime (m_id, flags, value, oldValue);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON timer_settime()&quot;);&#xD;
+&#xD;
+#elif defined TIMER_Solaris&#xD;
+ struct itimerval val, oldVal;&#xD;
+ val.it_interval.tv_sec = value->it_interval.tv_sec;&#xD;
+ val.it_interval.tv_usec = value->it_interval.tv_nsec / 1000;&#xD;
+ val.it_value.tv_sec = value->it_value.tv_sec;&#xD;
+ val.it_value.tv_usec = value->it_value.tv_nsec / 1000;&#xD;
+&#xD;
+ if (setitimer (ITIMER, &amp;val, &amp;oldVal))&#xD;
+ OSAL_ERROR (&quot;ON setitimer()&quot;);&#xD;
+&#xD;
+ if (oldValue)&#xD;
+ {&#xD;
+ oldValue->it_interval.tv_sec = oldVal.it_interval.tv_sec;&#xD;
+ oldValue->it_interval.tv_nsec = oldVal.it_interval.tv_usec * 1000;&#xD;
+ oldValue->it_value.tv_sec = oldVal.it_value.tv_sec;&#xD;
+ oldValue->it_value.tv_nsec = oldVal.it_value.tv_usec * 1000;&#xD;
+ }&#xD;
+#else&#xD;
+ #error Timer_??? not defined&#xD;
+#endif&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_piEGIDkZEdyuzNpSiGPe4w" name="getTime" specification="_FpAU8DkVEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> int r = 0;&#xD;
+&#xD;
+#if defined TIMER_POSIX4 || defined TIMER_Linux&#xD;
+ r = timer_gettime (m_id, value);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON timer_gettime()&quot;);&#xD;
+&#xD;
+#elif defined TIMER_Solaris&#xD;
+ struct itimerval val;&#xD;
+ val.it_interval.tv_sec = value->it_interval.tv_sec;&#xD;
+ val.it_interval.tv_usec = value->it_interval.tv_nsec / 1000;&#xD;
+ val.it_value.tv_sec = value->it_value.tv_sec;&#xD;
+ val.it_value.tv_usec = value->it_value.tv_nsec / 1000;&#xD;
+&#xD;
+ if (getitimer (ITIMER, &amp;val))&#xD;
+ OSAL_ERROR (&quot;ON getitimer()&quot;);&#xD;
+#else&#xD;
+ #error Timer_??? not defined&#xD;
+#endif&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_sPNo4DkZEdyuzNpSiGPe4w" name="getOverrun" specification="_5XqpsDkVEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> int r;&#xD;
+&#xD;
+#if defined TIMER_Linux&#xD;
+ r = timer_getoverrun (m_id);&#xD;
+ if (r == -1)&#xD;
+ OSAL_ERROR (&quot;ON timer_getoverrun()&quot;);&#xD;
+&#xD;
+#elif defined TIMER_Cygwin || defined TIMER_Solaris&#xD;
+ // not supported&#xD;
+ r = 0;&#xD;
+#else&#xD;
+ #error Timer_??? not defined&#xD;
+#endif&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_uuNa4DkZEdyuzNpSiGPe4w" name="sleep" specification="_Fh0SYDkWEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> int r = 0;&#xD;
+&#xD;
+ if (duration > 0)&#xD;
+ {&#xD;
+ TimeVal finalDate = TimeVal::current () + TimeVal (duration);&#xD;
+ r = wakeUp (finalDate);&#xD;
+ }&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_w_WXEDkZEdyuzNpSiGPe4w" name="wakeUp" specification="_Fk8e4DkWEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> int r = 0;&#xD;
+&#xD;
+ if (!date.hasPassed ()) {&#xD;
+ TimeVal remainder;&#xD;
+ do {&#xD;
+ r = waitDate (date, remainder);&#xD;
+ } while (remainder > 0);&#xD;
+ }&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2imkQDkZEdyuzNpSiGPe4w" name="waitDate" specification="_TvgqsDkXEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body> int r;&#xD;
+&#xD;
+#ifdef SYSTEM_Solaris&#xD;
+ mutex_t sleepLock = DEFAULTMUTEX; // without init(), requires zeroed memory&#xD;
+ cond_t sleepCond = DEFAULTCV; // this condition variable will never be unblocked&#xD;
+ struct timespec final; // final date in standard type&#xD;
+ TimeVal absTime = finalDate + TimeVal::sysStartTime ();&#xD;
+ final.tv_sec = absTime.getSec ();&#xD;
+ final.tv_nsec = absTime.getUsec () * 1000;&#xD;
+&#xD;
+ mutex_lock (&amp;sleepLock);&#xD;
+ errno = r = cond_timedwait (&amp;sleepCond, &amp;sleepLock, &amp;final);&#xD;
+ mutex_unlock (&amp;sleepLock);&#xD;
+ // cond_destroy(&amp;sleepCond);&#xD;
+ // mutex_destroy(&amp;sleepLock);&#xD;
+&#xD;
+ if (errno == ETIME || errno == 0) {&#xD;
+ r = 0;&#xD;
+ remainder.setSec (0);&#xD;
+ remainder.setNSec (0);&#xD;
+ }&#xD;
+ else if (errno == EINTR) {&#xD;
+ // call has been interrupted by signal&#xD;
+ r = 1;&#xD;
+ remainder = finalDate - TimeVal::current ();&#xD;
+ }&#xD;
+ else {&#xD;
+ OSAL_ERROR (&quot;ON cond_timedwait()&quot;);&#xD;
+ }&#xD;
+#else&#xD;
+ struct timespec delay, remainingTime;&#xD;
+ TimeVal delayTime = finalDate - TimeVal::current ();&#xD;
+// #define PRECISE_WAIT&#xD;
+#ifdef PRECISE_WAIT&#xD;
+ // idea: wait some ms less with nanosleep, perform busy wait after&#xD;
+ // [todo:] does not work for remainingTime&#xD;
+ TimeVal some_ms;&#xD;
+ some_ms.setUsec (5*1000);&#xD;
+&#xD;
+ TimeVal sleepTime = delayTime - some_ms;&#xD;
+ delay.tv_sec = sleepTime.getSec ();&#xD;
+ delay.tv_nsec = sleepTime.getNsec ();&#xD;
+ r = 0;&#xD;
+ if (sleepTime > 0) {&#xD;
+ r = nanosleep (&amp;delay, &amp;remainingTime);&#xD;
+ }&#xD;
+ // perform busy wait for last (upto) 10 ms&#xD;
+ do {&#xD;
+ delayTime = finalDate - TimeVal::current ();&#xD;
+ }&#xD;
+ while (delayTime > 0);&#xD;
+#else&#xD;
+ delay.tv_sec = delayTime.getSec ();&#xD;
+ delay.tv_nsec = delayTime.getNsec ();&#xD;
+ r = nanosleep (&amp;delay, &amp;remainingTime);&#xD;
+#endif&#xD;
+ if (r == 0)&#xD;
+ {&#xD;
+ remainder = 0;&#xD;
+ }&#xD;
+ else&#xD;
+ {&#xD;
+ if (errno != EINTR)&#xD;
+ OSAL_ERROR (&quot;ON nanosleep()&quot;);&#xD;
+ r = 1;&#xD;
+ // todo: remainder not used?&#xD;
+ remainder.setSec (remainingTime.tv_sec);&#xD;
+ remainder.setNsec (remainingTime.tv_nsec);&#xD;
+ }&#xD;
+#endif&#xD;
+&#xD;
+ return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_4_tSIDkUEdyuzNpSiGPe4w" name="Timer" method="_aRuIkDkZEdyuzNpSiGPe4w"/>
+ <ownedOperation xmi:id="_5IDV0DkUEdyuzNpSiGPe4w" name="Timer" method="_eQrRcDkZEdyuzNpSiGPe4w"/>
+ <ownedOperation xmi:id="__BNhkDkUEdyuzNpSiGPe4w" name="setTime" method="_lacwgDkZEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_KN-U8DkVEdyuzNpSiGPe4w" annotatedElement="__BNhkDkUEdyuzNpSiGPe4w">
+ <body>activate the timer, i.e. pass an itimerspec value with initial delay&#xD;
+and period length. In addition, the first parameter flags is a bit&#xD;
+vector. If it includes TIMER_ABSTIME, it denotes that an absolute&#xD;
+time value for is passed as initial delay.&#xD;
+[Todo: would be more consistent to pass two Accord TimeVals]</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Bv25IDkVEdyuzNpSiGPe4w" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BwAqIDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BwJ0EDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_EvyN8DkVEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_B0oEYDkVEdyuzNpSiGPe4w" name="flags">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B06_UDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B1EwUDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_B5PeoDkVEdyuzNpSiGPe4w" name="value" type="_SPVucIt6EeCA0czgCf_91g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B5jAoDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B5sKkDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_B9j98DkVEdyuzNpSiGPe4w" name="oldValue" type="_SPVucIt6EeCA0czgCf_91g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_B93f8DkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_B-Ka4DkVEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FpAU8DkVEdyuzNpSiGPe4w" name="getTime" method="_piEGIDkZEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_F_W_cDkVEdyuzNpSiGPe4w" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_F_gwcDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_F_zrYDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_GD1PwDkVEdyuzNpSiGPe4w" name="value" type="_SPVucIt6EeCA0czgCf_91g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GEIKsDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GER7sDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_5XqpsDkVEdyuzNpSiGPe4w" name="getOverrun" method="_sPNo4DkZEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_AqO4YDkWEdyuzNpSiGPe4w" annotatedElement="_5XqpsDkVEdyuzNpSiGPe4w">
+ <body>if the signal associated with a timer expiration is not handled,&#xD;
+an overrun counter is increased with each expiration. It can be used&#xD;
+to detect an overload</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_7ZmsQDkVEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7Z5nMDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7aDYMDkVEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_8dtNkDkVEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Fh0SYDkWEdyuzNpSiGPe4w" name="sleep" isStatic="true" method="_uuNa4DkZEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_PdEakDkWEdyuzNpSiGPe4w" annotatedElement="_Fh0SYDkWEdyuzNpSiGPe4w">
+ <body>sleep for a certain duration (defined in time units, see&#xD;
+TimeVal::_moduleSec)&#xD;
+&#xD;
+If the process receives a signal, the OS sleep is interrupted&#xD;
+(e.g. nanosleep in case of Posix). This sleep method will recall the&#xD;
+OS sleep function until the specified time has passed.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_S0PxwDkWEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S0Y7sDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S0issDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_TngasDkWEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_S390IDkWEdyuzNpSiGPe4w" name="duration">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S4HlIDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S4RWIDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Fk8e4DkWEdyuzNpSiGPe4w" name="wakeUp" isStatic="true" method="_w_WXEDkZEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_iAaZ8DkWEdyuzNpSiGPe4w" annotatedElement="_Fk8e4DkWEdyuzNpSiGPe4w">
+ <body>continue computation after the (absolute) date has passed. This&#xD;
+function shares other properties with the sleep function.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_biTHADkWEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bimpADkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bivy8DkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_cVjv8DkWEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_blSJkDkWEdyuzNpSiGPe4w" name="date" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bllEgDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_blu1gDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_nY790DkWEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Fs12oDkWEdyuzNpSiGPe4w" name="waitPeriodicForZero" isStatic="true" method="_iA4zsDkZEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_wLdjYDkWEdyuzNpSiGPe4w" annotatedElement="_Fs12oDkWEdyuzNpSiGPe4w">
+ <body>wait, until the variable *intPtr becomes zero, The parameter duration&#xD;
+determines the interval in which the variable is checked. If the&#xD;
+parameter txt is not empty, its contents is printed out during each&#xD;
+check.&#xD;
+&#xD;
+Should be considered as deprecated? (not used)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_1vwSYDkWEdyuzNpSiGPe4w" name="intPtr" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1wD0YDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1wM-UDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_25Eq4DkWEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_10YTsDkWEdyuzNpSiGPe4w" name="txt" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_10rOoDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_100_oDkWEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_142kADkWEdyuzNpSiGPe4w" name="duration">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_15Je8DkWEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_15cZ4DkWEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_TvgqsDkXEdyuzNpSiGPe4w" name="waitDate" visibility="private" isStatic="true" method="_2imkQDkZEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_3YPy0DkZEdyuzNpSiGPe4w" annotatedElement="_TvgqsDkXEdyuzNpSiGPe4w">
+ <body>used by wakeUp and sleep</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_eciOEDkXEdyuzNpSiGPe4w" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ec1JADkXEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ec-S8DkXEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_f0dDQDkXEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_efgpkDkXEdyuzNpSiGPe4w" name="finalDate" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efzkgDkXEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ef9VgDkXEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_eio2EDkXEdyuzNpSiGPe4w" name="remainder" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ei8YEDkXEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ejFiADkXEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_knbDADkXEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_FuKEEDj8Edy0Rd6V_tf1-Q" clientDependency="_DLK1MFK5Ed-OfYmxqPWG5g _MyswIFK5Ed-OfYmxqPWG5g _z1gvcFLcEd-mj-y6sW0V8w" name="TimeVal">
+ <ownedAttribute xmi:id="_VOnAwDkpEdyuzNpSiGPe4w" name="m_timespec" visibility="private" type="_vZD1EFKWEd-OfYmxqPWG5g" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WVZCoDkpEdyuzNpSiGPe4w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WVZCoTkpEdyuzNpSiGPe4w" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_10XK8DkpEdyuzNpSiGPe4w" name="m_moduloSec" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Av_LADkqEdyuzNpSiGPe4w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Av_LATkqEdyuzNpSiGPe4w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_qnfHUB6hEeG-VLfJDduovg" name="" value="1000000 / m_timeScale"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_19J6kDkpEdyuzNpSiGPe4w" name="m_timeScale" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AHKQcDkqEdyuzNpSiGPe4w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AHUBcDkqEdyuzNpSiGPe4w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_OOpq4F2oEd-12d_h0i1xhQ" value="1000"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_Ag0mQFKiEd-OfYmxqPWG5g" name="m_sysStartTime" visibility="private" isStatic="true" type="_FuKEEDj8Edy0Rd6V_tf1-Q" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ag0mQlKiEd-OfYmxqPWG5g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ag0mQVKiEd-OfYmxqPWG5g" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_L9V0QDkqEdyuzNpSiGPe4w" name="getTimeScale" specification="_q8lQcDkmEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return m_timeScale;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Ogz2kDkqEdyuzNpSiGPe4w" name="getSec" specification="_hArPsDkgEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return m_timespec.tv_sec;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_PxIO8DkqEdyuzNpSiGPe4w" name="getUsec" specification="_hIbdgDkgEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return m_timespec.tv_nsec / 1000;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_R1moIDkqEdyuzNpSiGPe4w" name="getNsec" specification="_hPbdYDkgEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return m_timespec.tv_nsec;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_TkLCwDkqEdyuzNpSiGPe4w" name="setSec" specification="_hWSTUDkgEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>m_timespec.tv_sec = sec;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Uxg_oDkqEdyuzNpSiGPe4w" name="setUsec" specification="_hc_YQDkgEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>m_timespec.tv_nsec = usec * 1000;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WZ-LMDkqEdyuzNpSiGPe4w" name="setNsec" specification="_hkcEEDkgEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>m_timespec.tv_nsec = nsec;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_YQSzoDkqEdyuzNpSiGPe4w" name="sysStartTime" specification="_rCsfgDkmEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return m_sysStartTime;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_w4kusDnfEdyuzNpSiGPe4w" name="setScale" specification="_af9uADkbEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>int s = OS_AL::ProcessingResources::ProDesc::getEnvInt (&quot;A_TimeScale&quot;);&#xD;
+if (s &lt;= 0)&#xD;
+{&#xD;
+ OS_AL::Util::BString500 bstr (&#xD;
+ &quot;--- Environment variable 'A_TimeScale' must be positive (length of ticks in microseconds)&quot;);&#xD;
+ OSAL_ERROR (bstr);&#xD;
+}&#xD;
+else {&#xD;
+ s = 1000; // default value 1000 µs = 1 ms&#xD;
+&#xD;
+ OS_AL::Util::Print print;&#xD;
+ print &lt;&lt;&#xD;
+ &quot; --- Environment variable 'A_TimeScale' not found. Time intervals are assumed expressed in milliseconds.&quot; &lt;&lt; showI;&#xD;
+}&#xD;
+ &#xD;
+return s;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3PHaADnfEdyuzNpSiGPe4w" name="TimeVal" specification="_t7qHIDkaEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>this->ticks();
+reset ();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_50F4MDnfEdyuzNpSiGPe4w" name="TimeVal" specification="_uEc2wDkaEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>this->ticks();&#xD;
+m_timespec = t2.m_timespec;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_8PrJ0DnfEdyuzNpSiGPe4w" name="TimeVal" specification="_uKtPwDkaEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>this->ticks();&#xD;
+setSec (ticks / m_moduloSec);&#xD;
+setUsec ((ticks % m_moduloSec) * m_timeScale);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ASrFMDngEdyuzNpSiGPe4w" name="current" specification="_96S4oDkbEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>TimeVal current;&#xD;
+current.update ();&#xD;
+return current;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DYbVMDngEdyuzNpSiGPe4w" name="update" specification="_5GJNIDkbEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>/*&#xD;
+if (m_bFrozen) {&#xD;
+ *this = m_freezeTime;&#xD;
+}&#xD;
+else {&#xD;
+*/&#xD;
+ *this = systemTime () - m_sysStartTime;&#xD;
+// }&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KjRyUDngEdyuzNpSiGPe4w" name="systemTime" specification="_JDcXUDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>TimeVal current;&#xD;
+clock_gettime (CLOCK_REALTIME, &amp;current.m_timespec);&#xD;
+&#xD;
+return current;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_N3CpIDngEdyuzNpSiGPe4w" name="operator=" specification="_ToY8wDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>m_timespec = tv2.m_timespec;&#xD;
+&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QJOuMDngEdyuzNpSiGPe4w" name="operator+=" specification="_TuMp0DkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>m_timespec.tv_sec += incr.m_timespec.tv_sec;&#xD;
+m_timespec.tv_nsec += incr.m_timespec.tv_nsec;&#xD;
+&#xD;
+if (m_timespec.tv_nsec >= 1000*1000*1000)&#xD;
+{&#xD;
+ m_timespec.tv_sec ++;&#xD;
+ m_timespec.tv_nsec -= 1000*1000*1000;&#xD;
+}&#xD;
+&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S_fJoDngEdyuzNpSiGPe4w" name="operator-=" specification="_T05uwDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>m_timespec.tv_sec -= incr.m_timespec.tv_sec;&#xD;
+m_timespec.tv_nsec -= incr.m_timespec.tv_nsec;&#xD;
+&#xD;
+if (m_timespec.tv_nsec &lt; 0)&#xD;
+{&#xD;
+ m_timespec.tv_sec --;&#xD;
+ m_timespec.tv_nsec += 1000*1000*1000;&#xD;
+}&#xD;
+&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WfnogDngEdyuzNpSiGPe4w" name="operator+" specification="_T6uC4DkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>TimeVal r (*this);&#xD;
+r += tv2;&#xD;
+&#xD;
+return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Y0WEMDngEdyuzNpSiGPe4w" name="operator-" specification="_T_yJEDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>TimeVal r (*this);&#xD;
+r -= tv2;&#xD;
+&#xD;
+return r;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_bE5KgDngEdyuzNpSiGPe4w" name="operator&lt;" specification="_UDgLcDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return (&#xD;
+ (getSec () &lt; tv2.getSec ()) ||&#xD;
+ (getSec () == tv2.getSec () &amp;&amp; getNsec () &lt; tv2.getNsec ()));&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ds2EMDngEdyuzNpSiGPe4w" name="operator&lt;=" specification="_UKNQYDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return (&#xD;
+ (getSec () &lt; tv2.getSec ()) ||&#xD;
+ (getSec () == tv2.getSec () &amp;&amp; getNsec () &lt;= tv2.getNsec ()));&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_gKXPgDngEdyuzNpSiGPe4w" name="operator==" specification="_UPk4kDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return (&#xD;
+ (getSec () == tv2.getSec ()) &amp;&amp; (getNsec () == tv2.getNsec ()));</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hsa4IDngEdyuzNpSiGPe4w" name="operator!=" specification="_UVFqsDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return (!(*this == tv2));</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_kAi24DngEdyuzNpSiGPe4w" name="operator>=" specification="_UcFqkDkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return (&#xD;
+ (getSec () > tv2.getSec ()) ||&#xD;
+ (getSec () == tv2.getSec () &amp;&amp; getNsec () >= tv2.getNsec ()));&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_l4NjIDngEdyuzNpSiGPe4w" name="operator>" specification="_Us7i8DkcEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>return (&#xD;
+ (getSec () > tv2.getSec ()) ||&#xD;
+ (getSec () == tv2.getSec () &amp;&amp; getNsec () > tv2.getNsec ()));&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p94_EDngEdyuzNpSiGPe4w" name="hasPassed" specification="_9xV0IDkfEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>TimeVal current = TimeVal::current ();&#xD;
+&#xD;
+return (&#xD;
+ (getSec () &lt; current.getSec ()) ||&#xD;
+ (getSec () == current.getSec () &amp;&amp; getNsec () &lt;= current.getNsec ()));&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_r6enkDngEdyuzNpSiGPe4w" name="reset" specification="_IKEGADkhEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>m_timespec.tv_sec = 0;&#xD;
+m_timespec.tv_nsec = 0;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_6wgAoDngEdyuzNpSiGPe4w" name="ticks" specification="_9jMDYDkfEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>// m_moduloSec is 1000000 / m_timeScale&#xD;
+return&#xD;
+ (getSec () * m_moduloSec) +&#xD;
+ (getUsec () / m_timeScale);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Ha2zYDnhEdyuzNpSiGPe4w" name="adjustTime" specification="_TAOvkDknEdyuzNpSiGPe4w">
+ <language>C/C++</language>
+ <body>// adjust startTime&#xD;
+m_sysStartTime += delta;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_t7qHIDkaEdyuzNpSiGPe4w" name="TimeVal" method="_3PHaADnfEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_zNOHYDkaEdyuzNpSiGPe4w" annotatedElement="_t7qHIDkaEdyuzNpSiGPe4w">
+ <body>create a new TimeVal and initilize it with 0</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_uEc2wDkaEdyuzNpSiGPe4w" name="TimeVal" method="_50F4MDnfEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_1ZPTADkaEdyuzNpSiGPe4w" annotatedElement="_uEc2wDkaEdyuzNpSiGPe4w">
+ <body>copy constructor</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_DgL_kDkbEdyuzNpSiGPe4w" name="t2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DgoEcDkbEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Dgx1cDkbEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_F4mocDkbEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_uKtPwDkaEdyuzNpSiGPe4w" name="TimeVal" method="_8PrJ0DnfEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_3U4gUDkaEdyuzNpSiGPe4w" annotatedElement="_uKtPwDkaEdyuzNpSiGPe4w">
+ <body>create a TimeValue when given a number of ticks</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_LywSsDkbEdyuzNpSiGPe4w" name="ticks">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ly6DsDkbEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LzD0sDkbEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_NWbr8DkbEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_af9uADkbEdyuzNpSiGPe4w" name="setScale" isStatic="true" method="_w4kusDnfEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_gE9noDkbEdyuzNpSiGPe4w" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gFQikDkbEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gFaTkDkbEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_g5HBYDkbEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_5GJNIDkbEdyuzNpSiGPe4w" name="update" method="_DYbVMDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_6w--UDkbEdyuzNpSiGPe4w" annotatedElement="_5GJNIDkbEdyuzNpSiGPe4w">
+ <body>update with current &quot;accord&quot; time, returned time is relative to&#xD;
+start of system and can be frozen (useful for debugging)</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_96S4oDkbEdyuzNpSiGPe4w" name="current" isStatic="true" method="_ASrFMDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="__pKOMDkbEdyuzNpSiGPe4w" annotatedElement="_96S4oDkbEdyuzNpSiGPe4w">
+ <body>return current time (see update)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_EDOlwDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EDhgsDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ED0boDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Fr07QDkcEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_JDcXUDkcEdyuzNpSiGPe4w" name="systemTime" isStatic="true" method="_KjRyUDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_NP9bEDkcEdyuzNpSiGPe4w" annotatedElement="_JDcXUDkcEdyuzNpSiGPe4w">
+ <body>return current system time</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_JpcAUDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JplxUDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JpviUDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_LCGcYDkcEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ToY8wDkcEdyuzNpSiGPe4w" name="operator=" method="_N3CpIDngEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_ndW8EDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ndqeEDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ndzoADkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_o-Xb0DkcEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_nhPWgDkcEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nhiRcDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nhsCcDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_tEx3kDkcEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_TuMp0DkcEdyuzNpSiGPe4w" name="operator+=" method="_QJOuMDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_Bq8DQDkdEdyuzNpSiGPe4w" annotatedElement="_TuMp0DkcEdyuzNpSiGPe4w">
+ <body>increase/decrease time by increment/decrement</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_1jVYQDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1joTMDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1jxdIDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3mdtoDkcEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_1lt94DkcEdyuzNpSiGPe4w" name="incr" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1mA40DkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1mKCwDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6v7Y8DkcEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_T05uwDkcEdyuzNpSiGPe4w" name="operator-=" method="_S_fJoDngEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_8FwjcDkcEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8GDeYDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8GMoUDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_90xC8DkcEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_8JVb4DkcEdyuzNpSiGPe4w" name="incr" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8JoW0DkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8JxgwDkcEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__aY88DkcEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_T6uC4DkcEdyuzNpSiGPe4w" name="operator+" method="_WfnogDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_d1so0DkdEdyuzNpSiGPe4w" annotatedElement="_T6uC4DkcEdyuzNpSiGPe4w">
+ <body>+/- operators that adds/substracts another timeval</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_EgukoDkdEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhBfkDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhLQkDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Gt18cDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_EkwJADkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ElDD8DkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ElM08DkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_L8Yd4DkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_T_yJEDkcEdyuzNpSiGPe4w" name="operator-" method="_Y0WEMDngEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_ZgFTcDkdEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZgY1cDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Zgh_YDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_bFt0gDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ZsKAkDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Zsc7gDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZsmsgDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_b3fPsDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UDgLcDkcEdyuzNpSiGPe4w" name="operator&lt;" method="_bE5KgDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_jzLT4DkdEdyuzNpSiGPe4w" annotatedElement="_UDgLcDkcEdyuzNpSiGPe4w">
+ <body>all kinds of comparisons ...</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_lnQgoDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lnjbkDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lnslgDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_nDMTIDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_lppGQDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lpyQMDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lp8BMDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oqKQ8DkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UKNQYDkcEdyuzNpSiGPe4w" name="operator&lt;=" method="_ds2EMDngEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_pDDSEDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pDWNADkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pDf-ADkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_qcnGADkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_pFuyoDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pF4joDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pGLekDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sjddwDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UPk4kDkcEdyuzNpSiGPe4w" name="operator==" method="_gKXPgDngEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_tBalEDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tBtgADkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tB3RADkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vJ6ioDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_tPIQ8DkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tPbL4DkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tPkV0DkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_v3gocDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UVFqsDkcEdyuzNpSiGPe4w" name="operator!=" method="_hsa4IDngEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_wSetMDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wSoeMDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wSxoIDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xrl1MDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_wVT-wDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wVm5sDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wV6bsDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yXstQDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UcFqkDkcEdyuzNpSiGPe4w" name="operator>=" method="_kAi24DngEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_yqBzYDkdEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yqLkYDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yqefUDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_0I8ocDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_y4CaMDkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_y4VVIDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_y4fGIDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_006WkDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Us7i8DkcEdyuzNpSiGPe4w" name="operator>" method="_l4NjIDngEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_1J69QDkdEdyuzNpSiGPe4w" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1KEuQDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1KN4MDkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2bItgDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_1MAn8DkdEdyuzNpSiGPe4w" name="tv2" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1MTi4DkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1MdT4DkdEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3BSHgDkdEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_9jMDYDkfEdyuzNpSiGPe4w" name="ticks" method="_6wgAoDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_Az9QkDkgEdyuzNpSiGPe4w" annotatedElement="_9jMDYDkfEdyuzNpSiGPe4w">
+ <body>return the number of ticks represented by the timevalue</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_J0pN8DkgEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J1F54DkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J1PD0DkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_K-aSYDkgEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_9xV0IDkfEdyuzNpSiGPe4w" name="hasPassed" method="_p94_EDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_Hl43YDkgEdyuzNpSiGPe4w" annotatedElement="_9xV0IDkfEdyuzNpSiGPe4w">
+ <body>returns true, if the current system time is later than this timeValue.&#xD;
+The method is called &quot;hasPassed&quot;, since it can be used as a test&#xD;
+whether a deadline has passed - assuming that the stored timevalue&#xD;
+represents this deadline.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_b_jfMDkgEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b_2aIDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cAALIDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dXUjYDkgEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hArPsDkgEdyuzNpSiGPe4w" name="getSec" method="_Ogz2kDkqEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_rwiEoDkgEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rwrOkDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rw0_kDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_sdiUkDkgEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hIbdgDkgEdyuzNpSiGPe4w" name="getUsec" method="_PxIO8DkqEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_swwLgDkgEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sw58gDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sxM3cDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_thVT4DkgEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hPbdYDkgEdyuzNpSiGPe4w" name="getNsec" method="_R1moIDkqEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_t-_gQDkgEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t_SbMDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t_blIDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_uu0asDkgEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hWSTUDkgEdyuzNpSiGPe4w" name="setSec" method="_TkLCwDkqEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_wH7isDkgEdyuzNpSiGPe4w" name="sec">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wIOdoDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wIYOoDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hc_YQDkgEdyuzNpSiGPe4w" name="setUsec" method="_Uxg_oDkqEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_w5aC8DkgEdyuzNpSiGPe4w" name="usec">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w5s94DkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_w52u4DkgEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hkcEEDkgEdyuzNpSiGPe4w" name="setNsec" method="_WZ-LMDkqEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_xLbnEDkgEdyuzNpSiGPe4w" name="nsec">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xLvJEDkgEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xL4TADkgEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IKEGADkhEdyuzNpSiGPe4w" name="reset" method="_r6enkDngEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_JLoQsDkhEdyuzNpSiGPe4w" annotatedElement="_IKEGADkhEdyuzNpSiGPe4w">
+ <body>set seconds and µ-seconds to zero</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_q8lQcDkmEdyuzNpSiGPe4w" name="getTimeScale" isStatic="true" method="_L9V0QDkqEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_0LugkDkmEdyuzNpSiGPe4w" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0L4RkDkmEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0MBbgDkmEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_07aREDkmEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rCsfgDkmEdyuzNpSiGPe4w" name="sysStartTime" isStatic="true" method="_YQSzoDkqEdyuzNpSiGPe4w">
+ <ownedParameter xmi:id="_4lNpUDkmEdyuzNpSiGPe4w" name="param_0" type="_FuKEEDj8Edy0Rd6V_tf1-Q" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4lgkQDkmEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4lqVQDkmEdyuzNpSiGPe4w" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_TAOvkDknEdyuzNpSiGPe4w" name="adjustTime" isStatic="true" method="_Ha2zYDnhEdyuzNpSiGPe4w">
+ <ownedComment xmi:id="_Vjsx4DknEdyuzNpSiGPe4w" annotatedElement="_TAOvkDknEdyuzNpSiGPe4w">
+ <body>adjust the current time after the execution has been stopped&#xD;
+(principally for debugging).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_XTwaQDknEdyuzNpSiGPe4w" name="delta" type="_FuKEEDj8Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XUD8QDknEdyuzNpSiGPe4w" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XUNGMDknEdyuzNpSiGPe4w" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ZMT3UDknEdyuzNpSiGPe4w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Class" xmi:id="_vZD1EFKWEd-OfYmxqPWG5g" name="timespec"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_4fJvUDj_Edy0Rd6V_tf1-Q" name="Association_DebugTimer_Timer" memberEnd="_4fTgUDj_Edy0Rd6V_tf1-Q _4fwMQDj_Edy0Rd6V_tf1-Q">
+ <ownedEnd xmi:id="_4fwMQDj_Edy0Rd6V_tf1-Q" name="debugTimer" type="_BN92YDj8Edy0Rd6V_tf1-Q" isUnique="false" association="_4fJvUDj_Edy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4mKWQzj_Edy0Rd6V_tf1-Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4mKWQjj_Edy0Rd6V_tf1-Q" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_B8mhMDkAEdy0Rd6V_tf1-Q" name="Association_DebugTimer_Thread" memberEnd="_B8mhMTkAEdy0Rd6V_tf1-Q _CCj_QjkAEdy0Rd6V_tf1-Q">
+ <ownedEnd xmi:id="_CCj_QjkAEdy0Rd6V_tf1-Q" name="debugTimer" type="_BN92YDj8Edy0Rd6V_tf1-Q" isUnique="false" association="_B8mhMDkAEdy0Rd6V_tf1-Q">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CC26MTkAEdy0Rd6V_tf1-Q"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_CC26MDkAEdy0Rd6V_tf1-Q" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_k2k-gDkFEdyuzNpSiGPe4w" name="Association_DebugTimer_Thread" memberEnd="_k235cDkFEdyuzNpSiGPe4w _k3oHYjkFEdyuzNpSiGPe4w">
+ <ownedEnd xmi:id="_k3oHYjkFEdyuzNpSiGPe4w" name="debugTimer" type="_BN92YDj8Edy0Rd6V_tf1-Q" isUnique="false" association="_k2k-gDkFEdyuzNpSiGPe4w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k4EMQTkFEdyuzNpSiGPe4w"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_k4EMQDkFEdyuzNpSiGPe4w" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_l8eRwDkUEdyuzNpSiGPe4w" name="FromTimertoBString" client="_ETakYDj8Edy0Rd6V_tf1-Q" supplier="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_mS08QDkUEdyuzNpSiGPe4w" name="FromTimertoTimeVal" client="_ETakYDj8Edy0Rd6V_tf1-Q" supplier="_FuKEEDj8Edy0Rd6V_tf1-Q"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_DLK1MFK5Ed-OfYmxqPWG5g" name="FromTimeValtoBString500" client="_FuKEEDj8Edy0Rd6V_tf1-Q" supplier="_1vnXoDO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_MyswIFK5Ed-OfYmxqPWG5g" name="FromTimeValtoProDesc" client="_FuKEEDj8Edy0Rd6V_tf1-Q" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_z1gvcFLcEd-mj-y6sW0V8w" name="FromTimeValtoPrint" client="_FuKEEDj8Edy0Rd6V_tf1-Q" supplier="_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5YJA0It4EeCA0czgCf_91g" name="timer_t"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_SPVucIt6EeCA0czgCf_91g" name="itimerspec"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_w86XMC-OEdySSa8YESkO2w" name="Tracing">
+ <ownedComment xmi:id="_qhfYAFIhEdy7g9CjxdN7jw" annotatedElement="_1DM54DxBEdyfAeav5abbAw">
+ <body>Incomplete. Without LeftShiftTrace</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1DM54DxBEdyfAeav5abbAw" clientDependency="_OMbR0FIfEdy7g9CjxdN7jw _NclwUFIfEdy7g9CjxdN7jw _RnxXUFIfEdy7g9CjxdN7jw _XHvnAFIfEdy7g9CjxdN7jw" name="Trace">
+ <ownedComment xmi:id="_eAhcsFIfEdy7g9CjxdN7jw" annotatedElement="_1DM54DxBEdyfAeav5abbAw">
+ <body>The class Trace supports tracing. It should by instantiated&#xD;
+by passing a value of type Flag. These flags specify the trace&#xD;
+category (for instance traces related to an abstract object) and&#xD;
+are defined in class FlagSet. An environment variable controls&#xD;
+at execution time which trace categories are actually producing&#xD;
+output.&#xD;
+&#xD;
+Instead of directly creating instances of class Trace (on the stack),&#xD;
+the developer should use the macro TRACEpr which respects the compile&#xD;
+time flag ENABLE_TRACING. It creates the instance &quot;pr&quot; on the stack,&#xD;
+if ENABLE_TRACING is set.&#xD;
+&#xD;
+Messages to the instance &quot;pr&quot; are sent via the overloaded operator&lt;&lt;,&#xD;
+the supported datatypes are the same as for class Print (in fact,&#xD;
+the operators delegate the calls to an internal object of type print).&#xD;
+As for class Trace, the developer should use the macro PR to do this.&#xD;
+Don't forget to pass at least one &quot;showI&quot; to the trace instance before&#xD;
+it gets out of scope - otherwise the output would be empty.&#xD;
+&#xD;
+\code&#xD;
+Example:&#xD;
+ function f ()&#xD;
+ {&#xD;
+ TRACEpr (AO); // if ENABLE_TRACING => Trace pr (Flag_AO);&#xD;
+ PR (&quot;Function f &lt;&lt; showI&quot;);&#xD;
+ PR (&quot;This is message number &quot; &lt;&lt; number &lt;&lt; showI);&#xD;
+ }&#xD;
+\endcode</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="__ziOwFIgEdy7g9CjxdN7jw" name="m_status" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__z-6sFIgEdy7g9CjxdN7jw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__0IrsFIgEdy7g9CjxdN7jw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_CJmHMFIhEdy7g9CjxdN7jw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_JByHAFIhEdy7g9CjxdN7jw" name="m_prt" visibility="protected" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="_JBoWAFIhEdy7g9CjxdN7jw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Lf4hIFIhEdy7g9CjxdN7jw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LgCSIFIhEdy7g9CjxdN7jw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_UyTHsFIhEdy7g9CjxdN7jw" name="m_traceMark" visibility="protected" isStatic="true" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Uy5koFIhEdy7g9CjxdN7jw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Uy5koVIhEdy7g9CjxdN7jw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_a-K44BtbEeGTrd3FEQeyRQ" name="" value="&quot;#&quot;"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_c2x7gFIhEdy7g9CjxdN7jw" name="getStatus" specification="_TAN7gFIgEdy7g9CjxdN7jw">
+ <language>C/C++</language>
+ <body> return m_status;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_exHhQFIhEdy7g9CjxdN7jw" name="getPrint" specification="_BsdUsFIgEdy7g9CjxdN7jw">
+ <language>C/C++</language>
+ <body> if (!m_status)&#xD;
+ PRINTerr (&quot;NO Print for this Trace instance&quot;);&#xD;
+&#xD;
+ return (*m_prt);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_g2fSUFIhEdy7g9CjxdN7jw" name="setTraceMark" specification="_qIrE0FIgEdy7g9CjxdN7jw">
+ <language>C/C++</language>
+ <body> m_traceMark = traceMark;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_n7UR4FIfEdy7g9CjxdN7jw" name="Trace">
+ <ownedParameter xmi:id="_tDcpUFIfEdy7g9CjxdN7jw" name="f" type="_5InEkFGAEdyxP5ejovTmBw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tD5VQFIfEdy7g9CjxdN7jw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tEMQMFIfEdy7g9CjxdN7jw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_uUD8oFIfEdy7g9CjxdN7jw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_oFTUUFIfEdy7g9CjxdN7jw" name="Trace"/>
+ <ownedOperation xmi:id="_BsdUsFIgEdy7g9CjxdN7jw" name="getPrint" method="_exHhQFIhEdy7g9CjxdN7jw">
+ <ownedParameter xmi:id="_DEXi0FIgEdy7g9CjxdN7jw" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DErE0FIgEdy7g9CjxdN7jw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DE9_wFIgEdy7g9CjxdN7jw" name="" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_TAN7gFIgEdy7g9CjxdN7jw" name="getStatus" method="_c2x7gFIhEdy7g9CjxdN7jw">
+ <ownedComment xmi:id="_ZStNQFIgEdy7g9CjxdN7jw" annotatedElement="_TAN7gFIgEdy7g9CjxdN7jw">
+ <body>query status&#xD;
+ should not be called by user code (only used by overloaded operators)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_WEeWsFIgEdy7g9CjxdN7jw" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WE7CoFIgEdy7g9CjxdN7jw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WFN9kFIgEdy7g9CjxdN7jw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_XzL7QFIgEdy7g9CjxdN7jw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_dlyMAFIgEdy7g9CjxdN7jw" name="setStatus">
+ <ownedComment xmi:id="_lAGBcFIgEdy7g9CjxdN7jw" annotatedElement="_dlyMAFIgEdy7g9CjxdN7jw">
+ <body>modify status&#xD;
+ should not be called by user code (only used by overloaded operators)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_nFKQgFIgEdy7g9CjxdN7jw" name="status">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nFm8cFIgEdy7g9CjxdN7jw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nF6ecFIgEdy7g9CjxdN7jw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oZp-QFIgEdy7g9CjxdN7jw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_qIrE0FIgEdy7g9CjxdN7jw" name="setTraceMark" isStatic="true" method="_g2fSUFIhEdy7g9CjxdN7jw">
+ <ownedParameter xmi:id="_vzhHwFIgEdy7g9CjxdN7jw" name="traceMark" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vz9zsFIgEdy7g9CjxdN7jw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_v0HksFIgEdy7g9CjxdN7jw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_w0yXgFIgEdy7g9CjxdN7jw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_7hM24FIgEdy7g9CjxdN7jw" name="Trace" visibility="protected"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_5InEkFGAEdyxP5ejovTmBw" clientDependency="_JUZWsFGBEdyxP5ejovTmBw" name="FlagSet">
+ <ownedComment xmi:id="_7K2CEFGAEdyxP5ejovTmBw" annotatedElement="_5InEkFGAEdyxP5ejovTmBw">
+ <body>This class contains some static methods that manage a set of flags.&#xD;
+It is possible to add, substract or setup flags.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_rqVygFGJEdy7g9CjxdN7jw" name="current" visibility="private" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rq7oYFGJEdy7g9CjxdN7jw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rrFZYFGJEdy7g9CjxdN7jw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_FAh84BtbEeGTrd3FEQeyRQ" name=""/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_3VfLAFGJEdy7g9CjxdN7jw" name="isSet" specification="_IM-wwFGDEdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> return (f &amp; current);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_48Ac4FGJEdy7g9CjxdN7jw" name="add" specification="_IWOMUFGDEdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> Flag old = (Flag) current;&#xD;
+ current |= f;&#xD;
+&#xD;
+ return old;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_6bhu4FGJEdy7g9CjxdN7jw" name="sub" specification="_IcxgQFGDEdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> Flag old = (Flag) current;&#xD;
+ current = current &amp; (~f);&#xD;
+&#xD;
+ return old;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_70o24FGJEdy7g9CjxdN7jw" name="setUp" specification="_IiSSYFGDEdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> Flag old = (Flag) current;&#xD;
+ current = f;&#xD;
+&#xD;
+ return old;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_89D3gFGJEdy7g9CjxdN7jw" name="setUpStr" specification="_IoGmgFGDEdyxP5ejovTmBw">
+ <language>C/C++</language>
+ <body> int flags = 0;&#xD;
+ for (unsigned int i = 0; i &lt; fStr.length (); ++i)&#xD;
+ {&#xD;
+ const char f = fStr[i];&#xD;
+ switch (f)&#xD;
+ {&#xD;
+ case 'A':&#xD;
+ flags |= FLAG_Ap;&#xD;
+ break;&#xD;
+ case 'C':&#xD;
+ flags |= FLAG_Ch;&#xD;
+ break;&#xD;
+ case 'G':&#xD;
+ flags |= FLAG_Gr;&#xD;
+ break;&#xD;
+ case 'O':&#xD;
+ flags |= FLAG_AO;&#xD;
+ break;&#xD;
+ case 'R':&#xD;
+ flags |= FLAG_RB;&#xD;
+ break;&#xD;
+ case 'S':&#xD;
+ flags |= FLAG_Sc;&#xD;
+ break;&#xD;
+ case 'T':&#xD;
+ flags |= FLAG_Ti;&#xD;
+ break;&#xD;
+ case 'U':&#xD;
+ flags |= FLAG_Ut;&#xD;
+ break;&#xD;
+ case 'V':&#xD;
+ flags |= FLAG_VM;&#xD;
+ break;&#xD;
+ case 'Z':&#xD;
+ flags |= FLAG_Z;&#xD;
+ break;&#xD;
+ case '1':&#xD;
+ flags |= FLAG_F1;&#xD;
+ break;&#xD;
+ case '2':&#xD;
+ flags |= FLAG_F2;&#xD;
+ break;&#xD;
+ case '3':&#xD;
+ flags |= FLAG_F3;&#xD;
+ break;&#xD;
+ case '4':&#xD;
+ flags |= FLAG_F4;&#xD;
+ break;&#xD;
+ case '5':&#xD;
+ flags |= FLAG_F5;&#xD;
+ break;&#xD;
+ case '6':&#xD;
+ flags |= FLAG_F6;&#xD;
+ break;&#xD;
+ case '7':&#xD;
+ flags |= FLAG_F7;&#xD;
+ break;&#xD;
+ case '8':&#xD;
+ flags |= FLAG_F8;&#xD;
+ break;&#xD;
+ case '9':&#xD;
+ flags |= FLAG_F9;&#xD;
+ break;&#xD;
+ case 'a':&#xD;
+ flags |= FLAG_Fa;&#xD;
+ break;&#xD;
+ case 'b':&#xD;
+ flags |= FLAG_Fb;&#xD;
+ break;&#xD;
+ case 'c':&#xD;
+ flags |= FLAG_Fc;&#xD;
+ break;&#xD;
+ case 'd':&#xD;
+ flags |= FLAG_Fd;&#xD;
+ break;&#xD;
+ case 'e':&#xD;
+ flags |= FLAG_Fe;&#xD;
+ break;&#xD;
+ case 'f':&#xD;
+ flags |= FLAG_Ff;&#xD;
+ break;&#xD;
+ case 'g':&#xD;
+ flags |= FLAG_Fg;&#xD;
+ break;&#xD;
+ case 'h':&#xD;
+ flags |= FLAG_Fh;&#xD;
+ break;&#xD;
+ case 'i':&#xD;
+ flags |= FLAG_Fi;&#xD;
+ break;&#xD;
+ default:&#xD;
+ PRINTpr (&quot;unknown flag : &quot;);&#xD;
+ pr &lt;&lt; f &lt;&lt; showErr;&#xD;
+ break;&#xD;
+ }&#xD;
+ }&#xD;
+ Flag old = setUp ((Flag) flags);&#xD;
+&#xD;
+ return old;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_IM-wwFGDEdyxP5ejovTmBw" name="isSet" isStatic="true" method="_3VfLAFGJEdy7g9CjxdN7jw">
+ <ownedParameter xmi:id="_tmHxcFGDEdy2j6DfRsavvw" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tmuOYFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tm3YUFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wUeOEFGDEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_tpG0AFGDEdy2j6DfRsavvw" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tpjf8FGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tpsp4FGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yt8m4FGDEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IWOMUFGDEdyxP5ejovTmBw" name="add" isStatic="true" method="_48Ac4FGJEdy7g9CjxdN7jw">
+ <ownedParameter xmi:id="_1NGJ4FGDEdy2j6DfRsavvw" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1Ni10FGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1N1wwFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_4rbR8FGDEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_1PxqcFGDEdy2j6DfRsavvw" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1QOWYFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1QhRUFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__VTI8FGDEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IcxgQFGDEdyxP5ejovTmBw" name="sub" isStatic="true" method="_6bhu4FGJEdy7g9CjxdN7jw">
+ <ownedParameter xmi:id="_2X5wIFGDEdy2j6DfRsavvw" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2YMrEFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2YfmAFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_5qwA8FGDEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_2ZY94FGDEdy2j6DfRsavvw" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2Z1p0FGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2aIkwFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Ao5e0FGEEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IiSSYFGDEdyxP5ejovTmBw" name="setUp" isStatic="true" method="_70o24FGJEdy7g9CjxdN7jw">
+ <ownedParameter xmi:id="_2y304FGDEdy2j6DfRsavvw" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2zKv0FGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2znbwFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_7BB3YFGDEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_20N4sFGDEdy2j6DfRsavvw" name="f" type="_QhlWIFGBEdyxP5ejovTmBw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_20p9kFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_209fkFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_B1o-wFGEEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IoGmgFGDEdyxP5ejovTmBw" name="setUpStr" isStatic="true" method="_89D3gFGJEdy7g9CjxdN7jw">
+ <ownedParameter xmi:id="_3JhaUFGDEdy2j6DfRsavvw" name="ret" type="_QhlWIFGBEdyxP5ejovTmBw" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3J-GQFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3KHQMFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_8QwZ4FGDEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3K3eIFGDEdy2j6DfRsavvw" name="fStr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3LTjAFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3LnFAFGDEdy2j6DfRsavvw" name="" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ENoJ0FGEEdy2j6DfRsavvw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_JUZWsFGBEdyxP5ejovTmBw" name="FromFlagSettoBString" client="_5InEkFGAEdyxP5ejovTmBw" supplier="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_NclwUFIfEdy7g9CjxdN7jw" name="FromTracetoBString50" client="_1DM54DxBEdyfAeav5abbAw" supplier="_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_OMbR0FIfEdy7g9CjxdN7jw" name="FromTracetoFlagSet" client="_1DM54DxBEdyfAeav5abbAw" supplier="_5InEkFGAEdyxP5ejovTmBw"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_RnxXUFIfEdy7g9CjxdN7jw" name="FromTracetoBaseTypes" client="_1DM54DxBEdyfAeav5abbAw" supplier="_0TXx4DUOEdy0feurbW0fyQ"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_XHvnAFIfEdy7g9CjxdN7jw" name="FromTracetoPrint" client="_1DM54DxBEdyfAeav5abbAw" supplier="_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_JBoWAFIhEdy7g9CjxdN7jw" name="Association_Trace_Print" memberEnd="_JByHAFIhEdy7g9CjxdN7jw _JC0o0VIhEdy7g9CjxdN7jw">
+ <ownedEnd xmi:id="_JC0o0VIhEdy7g9CjxdN7jw" name="trace" type="_1DM54DxBEdyfAeav5abbAw" isUnique="false" association="_JBoWAFIhEdy7g9CjxdN7jw">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JDkPsFIhEdy7g9CjxdN7jw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JDbFwVIhEdy7g9CjxdN7jw" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_QhlWIFGBEdyxP5ejovTmBw" name="Flag">
+ <ownedComment xmi:id="_wikJ4FGCEdyxP5ejovTmBw" annotatedElement="_QhlWIFGBEdyxP5ejovTmBw">
+ <body>* An enumeration of flags that is used for tracing (at different places)&#xD;
+ * It forms a bit vector. In the list below, we list the flags that&#xD;
+ * are available, together with the letter in the A_Trace&lt;zone-nr>&#xD;
+ * environment variable that is used to activate the tracing.&#xD;
+ * (if one zone is used, A_Trace0 defines the tracing that is&#xD;
+ * activated)&#xD;
+ *&#xD;
+ * * FLAG_Ap 'A': appliation tracing&#xD;
+ * * FLAG_Ch 'C': Message channel/queue (in case of distribution)&#xD;
+ * * FLAG_Gr 'G': currently unused&#xD;
+ * * FLAG_AO 'O': active object&#xD;
+ * * FLAG_RB 'R': rbox - used for passing out and return parameters&#xD;
+ * back to a caller&#xD;
+ * * FLAG_Sc 'S': Scheduling&#xD;
+ * * FLAG_Ti 'T': Task related&#xD;
+ * * FLAG_Ut 'U': currently unused&#xD;
+ * * FLAG_VM 'V': virtual machine (now OS abstraction layer), i.e. for&#xD;
+ * Threads, SharedMemory and synchronisation classes&#xD;
+ * such as Lock, Barrier and Condition&#xD;
+ * * FLAG_Z 'Z': Related to zone aspects, used by ZoneController and&#xD;
+ * in class Main.&#xD;
+ * * FLAG_F1 '1': currently unused (used by a test program)&#xD;
+ * * FLAG_F2 '2': currently unused&#xD;
+ * * FLAG_F3 '3': currently unused&#xD;
+ * * FLAG_F4 '4': currently unused&#xD;
+ * * FLAG_F5 '5': currently unused (used by a test program)&#xD;
+ * * FLAG_F6 '6': Indicates &quot;return from debugger detection&quot; in&#xD;
+ * Time/DebugTimer and deadline violations&#xD;
+ * * FLAG_F7 '7': Related to &quot;container&quot; classes, i.e. class&#xD;
+ * CircularBuffer and BOL (Bounded ordered list)&#xD;
+ * * FLAG_F8 '8': used for class SR_List (list of service requests)&#xD;
+ * * FLAG_F9 '9': used for class ProDesc&#xD;
+ * * FLAG_Fa 'a': currently unused&#xD;
+ * * FLAG_Fb 'b': currently unused&#xD;
+ * * FLAG_Fc 'c': currently unused&#xD;
+ * * FLAG_Fd 'd': deadline control&#xD;
+ * * FLAG_Fe 'e': currently unused&#xD;
+ * * FLAG_Ff 'f': currently unused&#xD;
+ * * FLAG_Fg 'g': currently unused&#xD;
+ * * FLAG_Fh 'h': currently unused&#xD;
+ * * FLAG_Fi 'i': currently unused&#xD;
+ * * FLAG_Fj 'j': currently unused&#xD;
+ * * FLAG_Fk 'k': currently unused</body>
+ </ownedComment>
+ <ownedLiteral xmi:id="_U0No8FGBEdyxP5ejovTmBw" name="FLAG_None"/>
+ <ownedLiteral xmi:id="_Y4PfEFGBEdyxP5ejovTmBw" name="FLAG_Ut"/>
+ <ownedLiteral xmi:id="_bTqYoFGBEdyxP5ejovTmBw" name="FLAG_VM"/>
+ <ownedLiteral xmi:id="_dHvlYFGBEdyxP5ejovTmBw" name="FLAG_Z"/>
+ <ownedLiteral xmi:id="_fdDP4FGBEdyxP5ejovTmBw" name="FLAG_Ch"/>
+ <ownedLiteral xmi:id="_hZVWYFGBEdyxP5ejovTmBw" name="FLAG_AO"/>
+ <ownedLiteral xmi:id="_jtvpAFGBEdyxP5ejovTmBw" name="FLAG_Ap"/>
+ <ownedLiteral xmi:id="_lfTGMFGBEdyxP5ejovTmBw" name="FLAG_Sc"/>
+ <ownedLiteral xmi:id="_nWWucFGBEdyxP5ejovTmBw" name="FLAG_RB"/>
+ <ownedLiteral xmi:id="_ppbkUFGBEdyxP5ejovTmBw" name="FLAG_Gr"/>
+ <ownedLiteral xmi:id="_rhsGcFGBEdyxP5ejovTmBw" name="FLAG_Ti"/>
+ <ownedLiteral xmi:id="_uhT5QFGBEdyxP5ejovTmBw" name="FLAG_Xy"/>
+ <ownedLiteral xmi:id="_wKXhwFGBEdyxP5ejovTmBw" name="FLAG_F1"/>
+ <ownedLiteral xmi:id="_x632EFGBEdyxP5ejovTmBw" name="FLAG_F2"/>
+ <ownedLiteral xmi:id="_zf56MFGBEdyxP5ejovTmBw" name="FLAG_F3"/>
+ <ownedLiteral xmi:id="_1Awo8FGBEdyxP5ejovTmBw" name="FLAG_F4"/>
+ <ownedLiteral xmi:id="_2msE8FGBEdyxP5ejovTmBw" name="FLAG_F5"/>
+ <ownedLiteral xmi:id="_4OskkFGBEdyxP5ejovTmBw" name="FLAG_F6"/>
+ <ownedLiteral xmi:id="_5_Wp4FGBEdyxP5ejovTmBw" name="FLAG_F7"/>
+ <ownedLiteral xmi:id="_75PjsFGBEdyxP5ejovTmBw" name="FLAG_F8"/>
+ <ownedLiteral xmi:id="_92abAFGBEdyxP5ejovTmBw" name="FLAG_F9"/>
+ <ownedLiteral xmi:id="__sucYFGBEdyxP5ejovTmBw" name="FLAG_Fa"/>
+ <ownedLiteral xmi:id="_Bn0QEFGCEdyxP5ejovTmBw" name="FLAG_Fb"/>
+ <ownedLiteral xmi:id="_DqpqgFGCEdyxP5ejovTmBw" name="FLAG_Fc"/>
+ <ownedLiteral xmi:id="_FW04cFGCEdyxP5ejovTmBw" name="FLAG_Fd"/>
+ <ownedLiteral xmi:id="_HDAtcFGCEdyxP5ejovTmBw" name="FLAG_Fe"/>
+ <ownedLiteral xmi:id="_IofdgFGCEdyxP5ejovTmBw" name="FLAG_Ff"/>
+ <ownedLiteral xmi:id="_KQDRMFGCEdyxP5ejovTmBw" name="FLAG_Fg"/>
+ <ownedLiteral xmi:id="_L-K_4FGCEdyxP5ejovTmBw" name="FLAG_Fh"/>
+ <ownedLiteral xmi:id="_NtyjYFGCEdyxP5ejovTmBw" name="FLAG_Fi"/>
+ <ownedLiteral xmi:id="_Po3wAFGCEdyxP5ejovTmBw" name="FLAG_Fj"/>
+ <ownedLiteral xmi:id="_RWZBwFGCEdyxP5ejovTmBw" name="FLAG_Fk"/>
+ <ownedLiteral xmi:id="_UbFh0FGCEdyxP5ejovTmBw" name="FLAG_All"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_0AZ9YC-OEdySSa8YESkO2w" name="Util">
+ <packagedElement xmi:type="uml:Class" xmi:id="_W-ZGIDO0EdyG-pUz-bb-Lg" name="BStringT">
+ <ownedComment xmi:id="_iaxicDR7EdypGbuyt3_DaA" annotatedElement="_W-ZGIDO0EdyG-pUz-bb-Lg">
+ <body>A template for bounded string of arbitrary size. Most common functions&#xD;
+are factored out to the superclass BString. Constructors and the&#xD;
+storage - who cannot be defined in the superclass - are defined here.</body>
+ </ownedComment>
+ <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="_gkCKsDO0EdyG-pUz-bb-Lg" parameter="_iWLdwDO0EdyG-pUz-bb-Lg">
+ <ownedParameter xmi:id="_iWLdwDO0EdyG-pUz-bb-Lg" parameteredElement="_kCz-sDO0EdyG-pUz-bb-Lg">
+ <ownedParameteredElement xmi:type="uml:LiteralInteger" xmi:id="_kCz-sDO0EdyG-pUz-bb-Lg" name="maxSize" templateParameter="_iWLdwDO0EdyG-pUz-bb-Lg" value="-1"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <generalization xmi:id="_ZFUrgDO2EdyG-pUz-bb-Lg" general="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <ownedAttribute xmi:id="_jwCk4DR-Edy0feurbW0fyQ" name="m_charStorage" visibility="private" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dbR1AF3HEd-12d_h0i1xhQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dbbmAF3HEd-12d_h0i1xhQ" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LHPSoDUMEdy0feurbW0fyQ" name="operator&lt;&lt;">
+ <language>C/C++</language>
+ <body>msg &lt;&lt; (const BString &amp;) bstr;&#xD;
+return msg;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_UTZgMDUMEdy0feurbW0fyQ" name="operator>>">
+ <language>C/C++</language>
+ <body>msg >> (BString &amp;) bstr;&#xD;
+return msg;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4qQkgDUMEdy0feurbW0fyQ" name="BStringT " specification="_m2Mk4DR7EdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>charTable = m_charStorage;&#xD;
+charTableSize = maxSize;&#xD;
+commonInit ();&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__T_RkDUMEdy0feurbW0fyQ" name="BStringT " specification="_rwKkgDR7EdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>charTable = m_charStorage;&#xD;
+charTableSize = maxSize;&#xD;
+commonInit ();&#xD;
+&#xD;
+concat (ch, nChar);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_FuOxIDUNEdy0feurbW0fyQ" name="BStringT" specification="_N8S2oDR8EdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>charTable = m_charStorage;&#xD;
+charTableSize = maxSize;&#xD;
+commonInit ();&#xD;
+&#xD;
+concat (bString.data());&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KsrBEDUNEdy0feurbW0fyQ" name="BStringT" specification="_63iW0DR8Edy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>charTable = m_charStorage;&#xD;
+charTableSize = maxSize;&#xD;
+commonInit ();&#xD;
+&#xD;
+concat (bString.data());&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_N6UBwDUNEdy0feurbW0fyQ" name="BStringT" specification="_PngwYDR-Edy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>charTable = m_charStorage;&#xD;
+charTableSize = maxSize;&#xD;
+commonInit ();&#xD;
+&#xD;
+concat (constCharP);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_m2Mk4DR7EdypGbuyt3_DaA" name="BStringT " method="_4qQkgDUMEdy0feurbW0fyQ"/>
+ <ownedOperation xmi:id="_rwKkgDR7EdypGbuyt3_DaA" name="BStringT " method="__T_RkDUMEdy0feurbW0fyQ">
+ <ownedComment xmi:id="_1k3YwDR7EdypGbuyt3_DaA" annotatedElement="_rwKkgDR7EdypGbuyt3_DaA">
+ <body>Initialize a BString with a specific character and optionally a&#xD;
+number of repetitions.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_35IhcDR7EdypGbuyt3_DaA" name="ch">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_37qRADR7EdypGbuyt3_DaA" name="nChar">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EmwDkDR8EdypGbuyt3_DaA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Em50kDR8EdypGbuyt3_DaA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_EnC-gDR8EdypGbuyt3_DaA" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_N8S2oDR8EdypGbuyt3_DaA" name="BStringT" method="_FuOxIDUNEdy0feurbW0fyQ">
+ <ownedComment xmi:id="_IpDwgDR-Edy0feurbW0fyQ" annotatedElement="_N8S2oDR8EdypGbuyt3_DaA">
+ <body>Create a BStringT given another bounded string of arbitrary size.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ToyfYDR8EdypGbuyt3_DaA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_63iW0DR8Edy0feurbW0fyQ" name="BStringT" method="_KsrBEDUNEdy0feurbW0fyQ">
+ <ownedComment xmi:id="_KgkrwDR-Edy0feurbW0fyQ" annotatedElement="_63iW0DR8Edy0feurbW0fyQ">
+ <body>The copy constructor.&#xD;
+Although it would be always ok to use the constructor above, this copy&#xD;
+constructor is necessary to avoid that the compiler implicitly&#xD;
+inserts a default copy constructor.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AvfosDR9Edy0feurbW0fyQ" name="bString" type="_W-ZGIDO0EdyG-pUz-bb-Lg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_PngwYDR-Edy0feurbW0fyQ" name="BStringT" method="_N6UBwDUNEdy0feurbW0fyQ">
+ <ownedComment xmi:id="_Tojj8DR-Edy0feurbW0fyQ" annotatedElement="_PngwYDR-Edy0feurbW0fyQ">
+ <body>Initialize a bounded string with a character pointer</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_VQkqoDR-Edy0feurbW0fyQ" name="constCharP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WzOJIDR-Edy0feurbW0fyQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WzX6IDR-Edy0feurbW0fyQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WzX6ITR-Edy0feurbW0fyQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_sQ1JADO0EdyG-pUz-bb-Lg" name="BString50">
+ <templateBinding xmi:id="_K4hEADO1EdyG-pUz-bb-Lg" signature="_gkCKsDO0EdyG-pUz-bb-Lg">
+ <parameterSubstitution xmi:id="_Ol57wDO1EdyG-pUz-bb-Lg" actual="_Ol57wTO1EdyG-pUz-bb-Lg" formal="_iWLdwDO0EdyG-pUz-bb-Lg">
+ <ownedActual xmi:type="uml:LiteralInteger" xmi:id="_Ol57wTO1EdyG-pUz-bb-Lg" name="50" value="50"/>
+ </parameterSubstitution>
+ </templateBinding>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_0AwCEDO0EdyG-pUz-bb-Lg" name="BString200">
+ <templateBinding xmi:id="_Lb-9cDO1EdyG-pUz-bb-Lg" signature="_gkCKsDO0EdyG-pUz-bb-Lg">
+ <parameterSubstitution xmi:id="_TPCDADO1EdyG-pUz-bb-Lg" actual="_TPL0ADO1EdyG-pUz-bb-Lg" formal="_iWLdwDO0EdyG-pUz-bb-Lg">
+ <ownedActual xmi:type="uml:LiteralInteger" xmi:id="_TPL0ADO1EdyG-pUz-bb-Lg" name="200" value="200"/>
+ </parameterSubstitution>
+ </templateBinding>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_1vnXoDO0EdyG-pUz-bb-Lg" name="BString500">
+ <templateBinding xmi:id="_L8BvcDO1EdyG-pUz-bb-Lg" signature="_gkCKsDO0EdyG-pUz-bb-Lg">
+ <parameterSubstitution xmi:id="_eSja0DO1EdyG-pUz-bb-Lg" actual="_eStL0DO1EdyG-pUz-bb-Lg" formal="_iWLdwDO0EdyG-pUz-bb-Lg">
+ <ownedActual xmi:type="uml:LiteralInteger" xmi:id="_eStL0DO1EdyG-pUz-bb-Lg" name="500" value="500"/>
+ </parameterSubstitution>
+ </templateBinding>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_3W43cDO0EdyG-pUz-bb-Lg" name="BString2000">
+ <templateBinding xmi:id="_MbeEgDO1EdyG-pUz-bb-Lg" signature="_gkCKsDO0EdyG-pUz-bb-Lg">
+ <parameterSubstitution xmi:id="_jJ_q4DO1EdyG-pUz-bb-Lg" actual="_jJ_q4TO1EdyG-pUz-bb-Lg" formal="_iWLdwDO0EdyG-pUz-bb-Lg">
+ <ownedActual xmi:type="uml:LiteralInteger" xmi:id="_jJ_q4TO1EdyG-pUz-bb-Lg" name="2000" value="2000"/>
+ </parameterSubstitution>
+ </templateBinding>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_WXH_4DO2EdyG-pUz-bb-Lg" clientDependency="_Ie1FEFbIEd-9TNLvplUFDQ _WP12gFbLEd-9TNLvplUFDQ _aZ7RUFbLEd-9TNLvplUFDQ _E9NSEPVxEd-tirPvq3IDdA" name="BString">
+ <ownedComment xmi:id="_na8OUDRHEdyG-pUz-bb-Lg" annotatedElement="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <body>A superclass for the template class BStringT. It factors out&#xD;
+all functions that do not depend on the template parameter.&#xD;
+Since it does not provide storage for the string, never instantiate&#xD;
+this class but BStringT instead (to enforce this, the constructor&#xD;
+is protected)</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_A2bjsDRoEdypGbuyt3_DaA" name="charTable" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DwGfgDRoEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DwGfgTRoEdypGbuyt3_DaA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_FafkwDRoEdypGbuyt3_DaA" name="current" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HhzPgDRoEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Hh9AgDRoEdypGbuyt3_DaA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_NT80UDRoEdypGbuyt3_DaA" name="m_scanOk" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q9AlsDRoEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q9AlsTRoEdypGbuyt3_DaA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_P7cbADRoEdypGbuyt3_DaA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_WG7s4DRoEdypGbuyt3_DaA" name="m_separator" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c8vHEDRoEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c844EDRoEdypGbuyt3_DaA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_ahw5cDRoEdypGbuyt3_DaA" name="numBase" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dw5H4DRoEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dw5H4TRoEdypGbuyt3_DaA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_gH_iIDRoEdypGbuyt3_DaA" name="charTableSize" visibility="protected" isUnique="false">
+ <ownedComment xmi:id="_ku40wDRoEdypGbuyt3_DaA" annotatedElement="_gH_iIDRoEdypGbuyt3_DaA">
+ <body>the amount of memory allocated for the string table</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jP9_sDRoEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jP9_sTRoEdypGbuyt3_DaA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_nHCX4DRoEdypGbuyt3_DaA" name="nbytes" visibility="protected" isUnique="false">
+ <ownedComment xmi:id="_snwOcDRoEdypGbuyt3_DaA" annotatedElement="_nHCX4DRoEdypGbuyt3_DaA">
+ <body>the length of the string in bytes (not the amount of memory allocated)</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o6X9wDRoEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o6hHsDRoEdypGbuyt3_DaA" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_1R2jsDRbEdyDwaY3iUxzzA" name="operator[]" specification="_ZkKxIDRaEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>return charTable[index];</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_f_XoEDRcEdyDwaY3iUxzzA" name="operator&lt;&lt;" specification="_yQhl4DRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += d;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_SRhdYDRvEdypGbuyt3_DaA" name="size" specification="_urQpMDRmEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>return charTableSize;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WgIy4DRvEdypGbuyt3_DaA" name="operator==" specification="_hifjgDRjEdyDwaY3iUxzzA">
+ <language>C/C++</language>
+ <body>return !strcmp (charTable, constCharP);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZW-dIDRvEdypGbuyt3_DaA" name="operator==" specification="_hujpkDRjEdyDwaY3iUxzzA">
+ <language>C/C++</language>
+ <body>return !strcmp (charTable, bString.charTable);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_bhtPUDRvEdypGbuyt3_DaA" name="operator!=" specification="_h3DeQDRjEdyDwaY3iUxzzA">
+ <language>C/C++</language>
+ <body>return strcmp (charTable, consCharP);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dpdmADRvEdypGbuyt3_DaA" name="operator!=" specification="_iQYkQDRjEdyDwaY3iUxzzA">
+ <language>C/C++</language>
+ <body>return strcmp (charTable, bString.charTable);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hWi7wDRvEdypGbuyt3_DaA" name="data" specification="_hQh-4DRlEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>return charTable;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_jpxioDRvEdypGbuyt3_DaA" name="length" specification="_AJnWcDRnEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>return nbytes;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pc0fUDRvEdypGbuyt3_DaA" name="setBase" specification="_tMpS8DRiEdyDwaY3iUxzzA">
+ <language>C/C++</language>
+ <body>unsigned int old = numBase;&#xD;
+numBase = newBase;&#xD;
+&#xD;
+return old;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_udWZ8DRvEdypGbuyt3_DaA" name="getPosition" specification="_FX25wDRjEdyDwaY3iUxzzA">
+ <language>C/C++</language>
+ <body>return current - charTable;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yq6mkDRvEdypGbuyt3_DaA" name="scanOk" specification="_O59-oDRiEdyDwaY3iUxzzA">
+ <language>C/C++</language>
+ <body>return m_scanOk;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_18IfsDRvEdypGbuyt3_DaA" name="getSeparator" specification="_w9e_8DRlEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>return m_separator;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_44MBIDRvEdypGbuyt3_DaA" name="setSeparator" specification="_BSrFsDRmEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>m_separator = separator;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_6eG5QDRzEdypGbuyt3_DaA" name="BString" specification="_E8CKIDRHEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>charTable = current = (char*) charP;&#xD;
+numBase = 0;&#xD;
+m_separator = StdSeparators;&#xD;
+charTableSize = 0;&#xD;
+nbytes = strlen(charP);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Av_uEDR0EdypGbuyt3_DaA" name="operator=" specification="_sBF6EDRHEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>nbytes = 0;&#xD;
+concat (constCharP);&#xD;
+current = charTable;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DpE0ADR0EdypGbuyt3_DaA" name="operator=" specification="_0h42cDRHEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>nbytes = 0;&#xD;
+concat (bString.charTable);&#xD;
+current = charTable;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_G7e_8DR0EdypGbuyt3_DaA" name="operator+=" specification="_ABbb4DRIEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>char buffer[sizeof(unsigned int)*2+1];&#xD;
+&#xD;
+sprintf (buffer, &quot;%x&quot;, (unsigned int) 0 /*vp*/);&#xD;
+concat (buffer);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KFPmMDR0EdypGbuyt3_DaA" name="operator+=" specification="_La2yQDRIEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>concat (constCharP);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QmynoDR0EdypGbuyt3_DaA" name="operator+=" specification="_dH9GIDRIEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>concat (c, 1);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_UA8aUDR0EdypGbuyt3_DaA" name="operator+=" specification="_lWbjcDRIEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>concat (bStr2.data());&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_XuBwEDR0EdypGbuyt3_DaA" name="operator+=" specification="_yR57YDRIEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>// actually, we would need a calculation of the needed buffer size:&#xD;
+// round-up the log10 of maxint + 2 bytes for the sign and the&#xD;
+// trailing 0, but it is simpler to come up with something &quot;big enough&quot;&#xD;
+char buffer[30];&#xD;
+sprintf (buffer, &quot;%i&quot;, i);&#xD;
+concat (buffer);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_abCI4DR0EdypGbuyt3_DaA" name="operator+=" specification="_-YxmkDRIEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>char buffer[30];&#xD;
+sprintf (buffer, &quot;%d&quot;, (int) l);&#xD;
+concat (buffer);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_dWfNYDR0EdypGbuyt3_DaA" name="operator+=" specification="_F4T6QDRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>char buffer[30];&#xD;
+sprintf (buffer, &quot;%g&quot;, d);&#xD;
+concat (buffer);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fnVOoDR0EdypGbuyt3_DaA" name="operator+=" specification="_IS_M8DRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>char buffer[30];&#xD;
+sprintf (buffer, &quot;%f&quot;, f);&#xD;
+concat (buffer);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ho1MUDR0EdypGbuyt3_DaA" name="operator+=" specification="_RAcsUDRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>char buffer[30];&#xD;
+sprintf (buffer, &quot;%u&quot;, ui);&#xD;
+concat (buffer);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_lFhVoDR0EdypGbuyt3_DaA" name="operator+=" specification="_V-mBUDRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>char buffer[30];&#xD;
+sprintf (buffer, &quot;%u&quot;, (unsigned int) ul);&#xD;
+concat (buffer);&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__1PgkDR0EdypGbuyt3_DaA" name="getWord" specification="_QpuIMDRmEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>unsigned int n = 0;&#xD;
+&#xD;
+for (; current &lt; charTable + nbytes; ++current)&#xD;
+{&#xD;
+ if (strrchr (m_separator, *current) != NULL)&#xD;
+ { // *current IS a separator&#xD;
+ if (n > 0)&#xD;
+ break; // end of word&#xD;
+ // else // separators before word&#xD;
+ }&#xD;
+ else&#xD;
+ { // *current IS a character of word&#xD;
+ if (n >= sizeBuff - 1)&#xD;
+ {&#xD;
+ break; // truncate if word too long&#xD;
+ }&#xD;
+ // with NO WARNING ! but caller may test :&#xD;
+ // if (n == sizeBuff-1) ...&#xD;
+ buff[n++] = *current; // store a character of word &#xD;
+ }&#xD;
+}&#xD;
+&#xD;
+buff[n] = '\0'; // append a null terminator&#xD;
+&#xD;
+return n;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MNjhEDR1EdypGbuyt3_DaA" name="operator>>" specification="_Z9YpwDRXEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>char buff[2];&#xD;
+if (getWord (buff, sizeof (buff)) > 0)&#xD;
+{&#xD;
+ c = buff[0];&#xD;
+}&#xD;
+m_scanOk = (current &lt; charTable + nbytes);&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_P0Yd0DR1EdypGbuyt3_DaA" name="operator>>" specification="_aIaOADRXEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>char *lastP;&#xD;
+//double k= strtol(current, &amp;lastP, numBase);&#xD;
+double k = strtod (current, &amp;lastP);&#xD;
+&#xD;
+m_scanOk = (current != lastP);&#xD;
+if (m_scanOk) {&#xD;
+ d = k; // don't modify arg, if extraction failed&#xD;
+ current = lastP;&#xD;
+}&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_WQ2yADR1EdypGbuyt3_DaA" name="operator>>" specification="_aOg2ADRXEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>char *lastP;&#xD;
+//float k= strtol(current, &amp;lastP, numBase);&#xD;
+ #ifdef SYSTEM_VxWorks&#xD;
+// strtof seems to be missin in vxWorks&#xD;
+float k = strtod (current, &amp;lastP);&#xD;
+ #else&#xD;
+float k = strtof (current, &amp;lastP);&#xD;
+ #endif&#xD;
+&#xD;
+m_scanOk = (current != lastP);&#xD;
+if (m_scanOk) {&#xD;
+ f = k; // don't modify arg, if extraction failed&#xD;
+ current = lastP;&#xD;
+}&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZbW_IDR1EdypGbuyt3_DaA" name="operator>>" specification="_aU7AADRXEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>char *lastP;&#xD;
+int k = strtol (current, &amp;lastP, numBase);&#xD;
+&#xD;
+m_scanOk = (current != lastP);&#xD;
+if (m_scanOk) {&#xD;
+ i = k; // don't modify arg, if extraction failed&#xD;
+ current = lastP;&#xD;
+}&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ct68EDR1EdypGbuyt3_DaA" name="operator>>" specification="_aavUIDRXEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>char *lastP;&#xD;
+long k = strtol (current, &amp;lastP, numBase);&#xD;
+&#xD;
+m_scanOk = (current != lastP);&#xD;
+if (m_scanOk) {&#xD;
+ l = k; // don't modify arg, if extraction failed&#xD;
+ current = lastP;&#xD;
+}&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fS4MIDR1EdypGbuyt3_DaA" name="operator>>" specification="_ag_tIDRXEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>char *lastP;&#xD;
+long k = strtol (current, &amp;lastP, numBase);&#xD;
+&#xD;
+m_scanOk = (current != lastP);&#xD;
+if (m_scanOk) {&#xD;
+ ui = k; // don't modify arg, if extraction failed&#xD;
+ current = lastP;&#xD;
+}&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_h7kFoDR1EdypGbuyt3_DaA" name="operator>>" specification="_amWuQDRXEdy1p4IpsoZYqA">
+ <language>C/C++</language>
+ <body>char *lastP;&#xD;
+unsigned long k = strtol (current, &amp;lastP, numBase);&#xD;
+&#xD;
+m_scanOk = (current != lastP);&#xD;
+if (m_scanOk) {&#xD;
+ ul = k; // don't modify arg, if extraction failed&#xD;
+ current = lastP;&#xD;
+}&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_paT5sDR2EdypGbuyt3_DaA" name="concat" specification="_d6UmIDRnEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>char *target = charTable + nbytes;&#xD;
+char *bound = charTable + charTableSize;&#xD;
+while (target != bound &amp;&amp; *constCharP != '\0')&#xD;
+{&#xD;
+ *target++ = *constCharP++;&#xD;
+ nbytes++;&#xD;
+}&#xD;
+if (target == bound)&#xD;
+ OSAL_ERROR (&quot;Bounded character table too short&quot;);&#xD;
+*target = '\0';&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_voCAMDR2EdypGbuyt3_DaA" name="concat" specification="_8OaV4DRKEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>char *target = charTable + nbytes;&#xD;
+char *bound = charTable + charTableSize;&#xD;
+unsigned int i = 0;&#xD;
+while (target != bound &amp;&amp; i &lt; size)&#xD;
+{&#xD;
+ *target++ = *constCharP++;&#xD;
+ nbytes++;&#xD;
+ i++;&#xD;
+}&#xD;
+if (target == bound)&#xD;
+ OSAL_ERROR (&quot;Bounded character table too short&quot;);&#xD;
+*target = '\0';&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0KdCgDR2EdypGbuyt3_DaA" name="concat" specification="_tamdIDRnEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>if (nbytes + nChar >= charTableSize) {&#xD;
+ OSAL_ERROR (&quot;Bounded character table too short&quot;);&#xD;
+}&#xD;
+&#xD;
+unsigned int i;&#xD;
+char *cP = charTable + nbytes;&#xD;
+for (i = 0; i &lt; nChar; i++) { // concat stops on terminating zero&#xD;
+ *cP++ = ch;&#xD;
+}&#xD;
+*cP = '\0';&#xD;
+nbytes += nChar;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4mVX8DR2EdypGbuyt3_DaA" name="commonInit" specification="_ZakdUDRnEdypGbuyt3_DaA">
+ <language>C/C++</language>
+ <body>numBase = 0;&#xD;
+current = charTable;&#xD;
+&#xD;
+m_separator = StdSeparators;&#xD;
+&#xD;
+charTable[0] = '\0';&#xD;
+nbytes = 0;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_-lTQwDR2EdypGbuyt3_DaA" name="setPosition" specification="_UA3KgDRjEdyDwaY3iUxzzA">
+ <language>C/C++</language>
+ <body>if (pos > (unsigned int) (current - charTable + nbytes)) {&#xD;
+ OSAL_ERROR (&quot;BString::setPosition pos > current-begin&quot;);&#xD;
+}&#xD;
+&#xD;
+current = charTable + pos;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_20RkgFIJEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_nyaBMDRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += vp;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_7piDQFIJEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_uTyqkDRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += constCharP;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ABuLgFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_xfysgDRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += c;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_CInmkFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_xsnAgDRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += i;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DEVn8FIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_x1P_IDRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += l;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_GQ_KIFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_x8tSADRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += ui;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_HzZYEFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_yJ0g8DRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += ul;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KuP_oFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_yXOq0DRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += f;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_MhuvcFIKEd-OfYmxqPWG5g" name="operator&lt;&lt;" specification="_yjTX8DRJEdyG-pUz-bb-Lg">
+ <language>C/C++</language>
+ <body>*this += bStr;
+return *this;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_J60NwDRGEdyG-pUz-bb-Lg" name="BString" visibility="protected">
+ <ownedComment xmi:id="_SjXX8DRGEdyG-pUz-bb-Lg" annotatedElement="_J60NwDRGEdyG-pUz-bb-Lg">
+ <body>forbid the creation of an BString without storage.</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_X1eKwDRGEdyG-pUz-bb-Lg" name="BString" visibility="private">
+ <ownedComment xmi:id="_gnjrcDRGEdyG-pUz-bb-Lg" annotatedElement="_X1eKwDRGEdyG-pUz-bb-Lg">
+ <body>forbid the implicit copying of a BString without storage.&#xD;
+If the copying to a BStringT type should be avoided for the sake&#xD;
+of efficiency, an assignment to a reference type (BString&amp;) should be&#xD;
+used explicitly.&#xD;
+The constructor is declared private to avoid that the default&#xD;
+copy constructor of a subclass will based on it (which won't work,&#xD;
+since it is empty). Effectively, we force that the subclass declares&#xD;
+its own copy constructor.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_o4Q9YDRGEdyG-pUz-bb-Lg" name="dummy" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x3dF8DRGEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x3m28DRGEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_x3wn8DRGEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_E8CKIDRHEdyG-pUz-bb-Lg" name="BString" method="_6eG5QDRzEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_eNSL8DRHEdyG-pUz-bb-Lg" annotatedElement="_E8CKIDRHEdyG-pUz-bb-Lg">
+ <body>create a string wrapper for a const char*&#xD;
+A string initialized with this pointer has a size of 0 (allocated&#xD;
+memory) and cannot be modified. It is a convenient way to pass&#xD;
+C-strings directly to functions that have a const BString &amp;&#xD;
+parameter.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ajL4wDRHEdyG-pUz-bb-Lg" name="charP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cjyekDRHEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cjyekTRHEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_cj7ogDRHEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_sBF6EDRHEdyG-pUz-bb-Lg" name="operator=" method="_Av_uEDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_vKHggDRHEdyG-pUz-bb-Lg" name="constCharP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xoXroDRHEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xog1kDRHEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xog1kTRHEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_0h42cDRHEdyG-pUz-bb-Lg" name="operator=" method="_DpE0ADR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_2Do9EDRHEdyG-pUz-bb-Lg" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_45cFgDRHEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_45l2gDRHEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_45l2gTRHEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ABbb4DRIEdyG-pUz-bb-Lg" name="operator+=" method="_G7e_8DR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_DEe9MDRIEdyG-pUz-bb-Lg" name="vp">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E_IE8DRIEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E_RO4DRIEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_E_RO4TRIEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_La2yQDRIEdyG-pUz-bb-Lg" name="operator+=" method="_KFPmMDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_RcNQsDRIEdyG-pUz-bb-Lg" name="constCharP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yg6CgDRIEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Yg6CgTRIEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_YhDzgDRIEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_dH9GIDRIEdyG-pUz-bb-Lg" name="operator+=" method="_QmynoDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_eOScEDRIEdyG-pUz-bb-Lg" name="c">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h0hi8DRIEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h0qs4DRIEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_h0qs4TRIEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_lWbjcDRIEdyG-pUz-bb-Lg" name="operator+=" method="_UA8aUDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_nIuAcDRIEdyG-pUz-bb-Lg" name="bStr2" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rM5nkDRIEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rNDYkDRIEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rNDYkTRIEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yR57YDRIEdyG-pUz-bb-Lg" name="operator+=" method="_XuBwEDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_1XDHYDRIEdyG-pUz-bb-Lg" name="i">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2_8-4DRIEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3AGv4DRIEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3FUnEDRIEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_-YxmkDRIEdyG-pUz-bb-Lg" name="operator+=" method="_abCI4DR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_AJbr4DRJEdyG-pUz-bb-Lg" name="l">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CnPLEDRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Csv9MDRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Csv9MTRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_F4T6QDRJEdyG-pUz-bb-Lg" name="operator+=" method="_dWfNYDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_HCXSkDRJEdyG-pUz-bb-Lg" name="d">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IFkcADRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IFuNADRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IF3-ADRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_IS_M8DRJEdyG-pUz-bb-Lg" name="operator+=" method="_fnVOoDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_KAqPsDRJEdyG-pUz-bb-Lg" name="f">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L9rWADRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L91HADRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_L91HATRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_RAcsUDRJEdyG-pUz-bb-Lg" name="operator+=" method="_ho1MUDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_St9-EDRJEdyG-pUz-bb-Lg" name="ui">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Tl2oUDRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TmAZUDRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_TmAZUTRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_V-mBUDRJEdyG-pUz-bb-Lg" name="operator+=" method="_lFhVoDR0EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_Xmmg8DRJEdyG-pUz-bb-Lg" name="ul">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZDShYDRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZIqJkDRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ZIzTgDRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_nyaBMDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_20RkgFIJEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_qg5nwDRJEdyG-pUz-bb-Lg" name="vp">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8I6RgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rkZsIDRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rkjdIDRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rktOIDRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_xw1XMDRfEdyDwaY3iUxzzA" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zW59IDRfEdyDwaY3iUxzzA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zXDuIDRfEdyDwaY3iUxzzA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_zXM4EDRfEdyDwaY3iUxzzA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_uTyqkDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_7piDQFIJEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_2u7q4DRJEdyG-pUz-bb-Lg" name="constCharP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_74GkIDRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_74GkITRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_74GkIjRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_XVuW4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZWetsDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZWn3oDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ZWxooDRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_xfysgDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_ABuLgFIKEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_3Itc0DRJEdyG-pUz-bb-Lg" name="c">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9cPQYDRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9cZBYDRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_9ciLUDRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_aL0aQDRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bxc7UDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bxmsUDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_bxv2QDRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_xsnAgDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_CInmkFIKEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_3YWbUDRJEdyG-pUz-bb-Lg" name="i">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-5htwDRJEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-5q3sDRJEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_-50osDRJEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ctWi4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_esnE4DRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_esnE4TRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_esw14DRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_x1P_IDRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_DEVn8FIKEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_3w8hgDRJEdyG-pUz-bb-Lg" name="l">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AiR0QDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AiblQDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_AiblQTRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_fMgF4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gboLcDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ghI9kDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ghI9kTRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_x8tSADRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_GQ_KIFIKEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_4CFU0DRJEdyG-pUz-bb-Lg" name="ui">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DlV8oDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DlfGkDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Dlo3kDRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_g3MtIDRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iEiC8DRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iErz8DRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_iErz8TRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yJ0g8DRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_HzZYEFIKEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_4bQp0DRJEdyG-pUz-bb-Lg" name="ul">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E3mOsDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E3vYoDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_E3vYoTRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ienW4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jwkuADRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jwkuATRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jwt38DRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yQhl4DRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_f_XoEDRcEdyDwaY3iUxzzA">
+ <ownedParameter xmi:id="_4vYfsDRJEdyG-pUz-bb-Lg" name="d">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GRmukDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GRv4gDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GRv4gTRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_kFSZwDRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lv1QADRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lv-Z8DRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_lwIK8DRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yXOq0DRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_KuP_oFIKEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_5GexEDRJEdyG-pUz-bb-Lg" name="f">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HV2Z0DRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_HWAK0DRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_HWJUwDRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_mGLTcDRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nVKPEDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nVUAEDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_nVUAETRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_yjTX8DRJEdyG-pUz-bb-Lg" name="operator&lt;&lt;" method="_MhuvcFIKEd-OfYmxqPWG5g">
+ <ownedParameter xmi:id="_5al_4DRJEdyG-pUz-bb-Lg" name="bStr" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kw5kYDRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KxDVYDRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_KxDVYTRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_nv1Y4DRKEdyG-pUz-bb-Lg" name="ret" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pIf08DRKEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pIo-4DRKEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pIo-4TRKEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_8OaV4DRKEdyG-pUz-bb-Lg" name="concat" method="_voCAMDR2EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="__jzkYDRKEdyG-pUz-bb-Lg" name="constCharP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A8eAcDRLEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A8eAcTRLEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_A8nKYDRLEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="__nOr0DRKEdyG-pUz-bb-Lg" name="size">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ChWTkDRLEdyG-pUz-bb-Lg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ChWTkTRLEdyG-pUz-bb-Lg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ChWTkjRLEdyG-pUz-bb-Lg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Z9YpwDRXEdy1p4IpsoZYqA" name="operator>>" method="_MNjhEDR1EdypGbuyt3_DaA">
+ <ownedComment xmi:id="_Fgf5YDRYEdy1p4IpsoZYqA" annotatedElement="_Z9YpwDRXEdy1p4IpsoZYqA">
+ <body>Scan string to retrieve one of the following types. If the scanning&#xD;
+was successfull (see operation scanOk), the current scan position&#xD;
+is set just behind the input consumed. Therefore, a successive&#xD;
+invocation of this operator will continue scanning at the new&#xD;
+position (see get/setPosition)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_giLzgDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j4dy0DRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j4dy0TRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_j4nj0DRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_zmS9oDRXEdy1p4IpsoZYqA" name="c" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3lQtkDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3lZ3gDRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3ljogDRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aIaOADRXEdy1p4IpsoZYqA" name="operator>>" method="_P0Yd0DR1EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_kTb3kDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l2-G4DRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l3H34DRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_l3Ro4DRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_z-lh0DRXEdy1p4IpsoZYqA" name="d" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_6j0jABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5dzjkDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5d9UkDRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_5eHFkDRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aOg2ADRXEdy1p4IpsoZYqA" name="operator>>" method="_WQ2yADR1EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_m0EoUDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oXm3oDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oXwooDRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_oXwooTRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_0RNi4DRXEdy1p4IpsoZYqA" name="f" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7W3wkBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6lMCYDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6lVMUDRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6louUDRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aU7AADRXEdy1p4IpsoZYqA" name="operator>>" method="_ZbW_IDR1EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_orbLgDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p0cpEDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p0lzADRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_p0lzATRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_0ku70DRXEdy1p4IpsoZYqA" name="i" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8WlHgDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8Wu4gDRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_8W4pgDRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aavUIDRXEdy1p4IpsoZYqA" name="operator>>" method="_ct68EDR1EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_qoJW4DRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s9docDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_s9myYDRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_s9myYTRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_02A5EDRXEdy1p4IpsoZYqA" name="l" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_8heigBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9rXwMDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9rhhMDRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_9rqrIDRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ag_tIDRXEdy1p4IpsoZYqA" name="operator>>" method="_fS4MIDR1EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_tL6UIDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uzCC8DRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uzLz8DRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_uzU94DRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AArasDRYEdy1p4IpsoZYqA" name="ui" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Bv2SQDRYEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Bv_cMDRYEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Bv_cMTRYEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_amWuQDRXEdy1p4IpsoZYqA" name="operator>>" method="_h7kFoDR1EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_vCh3gDRXEdy1p4IpsoZYqA" name="param_0" type="_WXH_4DO2EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wWuDQDRXEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wW30QDRXEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wW30QTRXEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_AR0OADRYEdy1p4IpsoZYqA" name="ul" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_a1wZUByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C-X64DRYEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C-X64TRYEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_C-hr4DRYEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ZkKxIDRaEdy1p4IpsoZYqA" name="operator[]" method="_1R2jsDRbEdyDwaY3iUxzzA">
+ <ownedComment xmi:id="_iOzmADRaEdy1p4IpsoZYqA" annotatedElement="_ZkKxIDRaEdy1p4IpsoZYqA">
+ <body>the standard index operator</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_dPnIIDRaEdy1p4IpsoZYqA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eF2zoDRaEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eF2zoTRaEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_eF_9kDRaEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_eSrHoDRaEdy1p4IpsoZYqA" name="index">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f2XH8DRaEdy1p4IpsoZYqA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f2gR4DRaEdy1p4IpsoZYqA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_f2qC4DRaEdy1p4IpsoZYqA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_O59-oDRiEdyDwaY3iUxzzA" name="scanOk" method="_yq6mkDRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_pkVIcDRiEdyDwaY3iUxzzA" annotatedElement="_O59-oDRiEdyDwaY3iUxzzA">
+ <body>Indicates, whether the last scan (via operator >>) was successfull</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_SExtwDRiEdyDwaY3iUxzzA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kcWiADRiEdyDwaY3iUxzzA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kcfr8DRiEdyDwaY3iUxzzA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kcfr8TRiEdyDwaY3iUxzzA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tMpS8DRiEdyDwaY3iUxzzA" name="setBase" method="_pc0fUDRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="___ML8DRiEdyDwaY3iUxzzA" annotatedElement="_tMpS8DRiEdyDwaY3iUxzzA">
+ <body>Set numerical base for the scanning of longs and integer)&#xD;
+(the default value 0 indicates base 10)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_vozzYDRiEdyDwaY3iUxzzA" name="newBase">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xX-q8DRiEdyDwaY3iUxzzA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xYH04DRiEdyDwaY3iUxzzA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xYH04TRiEdyDwaY3iUxzzA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_1-uzoDRiEdyDwaY3iUxzzA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3AcIQDRiEdyDwaY3iUxzzA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3AcIQTRiEdyDwaY3iUxzzA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3AvqQDRiEdyDwaY3iUxzzA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_FX25wDRjEdyDwaY3iUxzzA" name="getPosition" method="_udWZ8DRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_HgW3UDRjEdyDwaY3iUxzzA" annotatedElement="_FX25wDRjEdyDwaY3iUxzzA">
+ <body>Get the current position within the string for scanning&#xD;
+(via operator >>).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Jbvl8DRjEdyDwaY3iUxzzA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Kj3roDRjEdyDwaY3iUxzzA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Kj3roTRjEdyDwaY3iUxzzA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_KkA1kDRjEdyDwaY3iUxzzA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_UA3KgDRjEdyDwaY3iUxzzA" name="setPosition" method="_-lTQwDR2EdypGbuyt3_DaA">
+ <ownedComment xmi:id="_ba4FADRjEdyDwaY3iUxzzA" annotatedElement="_UA3KgDRjEdyDwaY3iUxzzA">
+ <body>Set the current position within the string for scanning&#xD;
+(via operator >>).</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_V4YFwDRjEdyDwaY3iUxzzA" name="pos">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hifjgDRjEdyDwaY3iUxzzA" name="operator==" method="_WgIy4DRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_rLhd0DRkEdypGbuyt3_DaA" annotatedElement="_hifjgDRjEdyDwaY3iUxzzA">
+ <body>comparison operators with the obvious semantics ...</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ogWGcDRjEdyDwaY3iUxzzA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_3Y1ksDRjEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_3ZJGsDRjEdypGbuyt3_DaA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_3ZJGsTRjEdypGbuyt3_DaA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_oiusEDRjEdyDwaY3iUxzzA" name="constCharP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hujpkDRjEdyDwaY3iUxzzA" name="operator==" method="_ZW-dIDRvEdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_o2GUADRjEdyDwaY3iUxzzA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_o4x0kDRjEdyDwaY3iUxzzA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_h3DeQDRjEdyDwaY3iUxzzA" name="operator!=" method="_bhtPUDRvEdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_pJBQADRjEdyDwaY3iUxzzA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_pLG6sDRjEdyDwaY3iUxzzA" name="consCharP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_iQYkQDRjEdyDwaY3iUxzzA" name="operator!=" method="_dpdmADRvEdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_pfX6gDRjEdyDwaY3iUxzzA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_vAIV4I7PEdySGvm5GN66HA"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_pg3IQDRjEdyDwaY3iUxzzA" name="bString" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_hQh-4DRlEdypGbuyt3_DaA" name="data" method="_hWi7wDRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_tSyP0DRlEdypGbuyt3_DaA" annotatedElement="_hQh-4DRlEdypGbuyt3_DaA">
+ <body>Provide access to the memory location of the string. Use with care,&#xD;
+since it allows a caller to corrupt the string contents.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_jgxjMDRlEdypGbuyt3_DaA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_knjlEDRlEdypGbuyt3_DaA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kntWEDRlEdypGbuyt3_DaA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kn2gADRlEdypGbuyt3_DaA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_w9e_8DRlEdypGbuyt3_DaA" name="getSeparator" method="_18IfsDRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_38-hoDRlEdypGbuyt3_DaA" annotatedElement="_w9e_8DRlEdypGbuyt3_DaA">
+ <body>get the string containing separator characters that are used by&#xD;
+getWord and during the scanning of characters.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_yuSPMDRlEdypGbuyt3_DaA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_BSrFsDRmEdypGbuyt3_DaA" name="setSeparator" method="_44MBIDRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_DrjooDRmEdypGbuyt3_DaA" annotatedElement="_BSrFsDRmEdypGbuyt3_DaA">
+ <body>set the string containing separator characters. Only the address of&#xD;
+the passed string is stored (no copy is made). Therefore, the passed&#xD;
+string may not be a local variable that might run out of scope.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_GkyfkDRmEdypGbuyt3_DaA" name="separator">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QpuIMDRmEdypGbuyt3_DaA" name="getWord" method="__1PgkDR0EdypGbuyt3_DaA">
+ <ownedComment xmi:id="_TmEkkDRmEdypGbuyt3_DaA" annotatedElement="_QpuIMDRmEdypGbuyt3_DaA">
+ <body>retrieve a pointer to a part of the character string</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Ws2vUDRmEdypGbuyt3_DaA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_WwIs0DRmEdypGbuyt3_DaA" name="buff" direction="inout">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Wzj0QDRmEdypGbuyt3_DaA" name="sizeBuff">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_urQpMDRmEdypGbuyt3_DaA" name="size" method="_SRhdYDRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_ydaFIDRmEdypGbuyt3_DaA" annotatedElement="_urQpMDRmEdypGbuyt3_DaA">
+ <body>returns the size of the allocated memory (i.e. the maximum length&#xD;
+of the string)</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_0abygDRmEdypGbuyt3_DaA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AJnWcDRnEdypGbuyt3_DaA" name="length" method="_jpxioDRvEdypGbuyt3_DaA">
+ <ownedComment xmi:id="_IX8CwDRnEdypGbuyt3_DaA" annotatedElement="_AJnWcDRnEdypGbuyt3_DaA">
+ <body>returns the length of the string</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_KOi_EDRnEdypGbuyt3_DaA" name="param_0" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ZakdUDRnEdypGbuyt3_DaA" name="commonInit" visibility="protected" method="_4mVX8DR2EdypGbuyt3_DaA"/>
+ <ownedOperation xmi:id="_d6UmIDRnEdypGbuyt3_DaA" name="concat" visibility="protected" method="_paT5sDR2EdypGbuyt3_DaA">
+ <ownedComment xmi:id="_gVb9sDRnEdypGbuyt3_DaA" annotatedElement="_d6UmIDRnEdypGbuyt3_DaA">
+ <body>internal function that appends (concatenates) a string to the&#xD;
+character table</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_leUjEDRnEdypGbuyt3_DaA" name="constCharP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_tamdIDRnEdypGbuyt3_DaA" name="concat" visibility="protected" method="_0KdCgDR2EdypGbuyt3_DaA">
+ <ownedParameter xmi:id="_x-EoUDRnEdypGbuyt3_DaA" name="ch">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_yC_kkDRnEdypGbuyt3_DaA" name="nChar">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_LTZesByeEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_Fqa9QDUPEdy0feurbW0fyQ" clientDependency="_dQB60DVKEdyF2KWMAqLQBg _d01RADVKEdyF2KWMAqLQBg _eJ_osDVKEdyF2KWMAqLQBg" name="Print">
+ <ownedAttribute xmi:id="_4rbvkDUUEdyDReAOQiyvOg" name="m_shown" visibility="protected" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OTe2EDUVEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OToAADUVEdyDReAOQiyvOg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_7ahzEDUUEdyDReAOQiyvOg" name="m_initFlag" visibility="protected" isStatic="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7aq9ADUUEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7aq9ATUUEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_td1uoBtaEeGTrd3FEQeyRQ" name=""/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_sKD1gDUbEdyDReAOQiyvOg" name="m_mark" visibility="protected" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false" association="_sJKdoDUbEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m_7nEDUoEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m_7nETUoEdyDReAOQiyvOg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_vBIdYDUoEdyDReAOQiyvOg" name="m_head" visibility="protected" isStatic="true" type="_sQ1JADO0EdyG-pUz-bb-Lg" isUnique="false" association="_vA-sYDUoEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_05_HIDUoEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_06I4IDUoEdyDReAOQiyvOg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="__XEKATUoEdyDReAOQiyvOg" name="begin" visibility="protected" type="_1vnXoDO0EdyG-pUz-bb-Lg" isUnique="false" association="__XEKADUoEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DPxg8DUpEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DPxg8TUpEdyDReAOQiyvOg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_E6BcQDUpEdyDReAOQiyvOg" name="middle" visibility="protected" type="_3W43cDO0EdyG-pUz-bb-Lg" isUnique="false" association="_E53rQDUpEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ism9EDUpEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IswuEDUpEdyDReAOQiyvOg" value="1"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_cnB0MDUVEdyDReAOQiyvOg" name="getMiddle" specification="_T-5BEDUSEdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>return middle;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_fS_EIDUVEdyDReAOQiyvOg" name="getMiddleRef" specification="_WR0tADUSEdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>return middle;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_iP79cDUVEdyDReAOQiyvOg" name="setMark" specification="_MvhlcDUUEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body>m_mark = mark;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ma0pgDUVEdyDReAOQiyvOg" name="operator=" specification="_X5-9oDUSEdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>middle = str;&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_pFvXoDUVEdyDReAOQiyvOg" name="operator=" specification="_Y7GcYDUSEdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>middle = ccp;&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_trmIcDUVEdyDReAOQiyvOg" name="operator&lt;&lt;" specification="_a43woDUSEdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>middle &lt;&lt; str;&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2QapMDUVEdyDReAOQiyvOg" name="operator&lt;&lt;" specification="_bfnnkDUSEdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>middle &lt;&lt; ccp;&#xD;
+return *this;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ZbDgEDUYEdyDReAOQiyvOg" name="Print" specification="_ZgB1wDUPEdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_doUxwDUYEdyDReAOQiyvOg" name="setHead" specification="_BdhNEDUREdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>m_initFlag = 1;&#xD;
+m_head = ccp;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_hSR7ADUYEdyDReAOQiyvOg" name="getHead" specification="_GLk3oDUREdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>return m_head;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_mhtNQDUYEdyDReAOQiyvOg" name="printErr" specification="_OQgXYDUREdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>BString500 bstr;&#xD;
+bstr &lt;&lt; OS_AL::ProcessingResources::Thread::getName () &lt;&lt; &quot; &quot;;&#xD;
+bstr &lt;&lt; OS_AL::Time::TimeVal::current ().ticks () &lt;&lt; &quot; &quot;;&#xD;
+&#xD;
+if (m_initFlag) {&#xD;
+ bstr &lt;&lt; m_head;&#xD;
+}&#xD;
+bstr &lt;&lt; ErrMark &lt;&lt; ccp;&#xD;
+if (errno)&#xD;
+ bstr &lt;&lt; &quot; - error &quot; &lt;&lt; errno&#xD;
+ &lt;&lt; &quot; (&quot; &lt;&lt; strerror (errno) &lt;&lt; &quot;)&quot;;&#xD;
+cout &lt;&lt; bstr.data () &lt;&lt; endl;&#xD;
+errno = 0;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qOoyADUYEdyDReAOQiyvOg" name="printErr" specification="_QP6qYDUREdy0feurbW0fyQ">
+ <language>C/C++</language>
+ <body>BString500 str (file);&#xD;
+str &lt;&lt; line &lt;&lt; charP;&#xD;
+printErr (str.data ());&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_S02ysDUZEdyDReAOQiyvOg" name="print" specification="_OMqR0DUUEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body>BString500 prefix;&#xD;
+// prefix &lt;&lt; &quot;ID: &quot; &lt;&lt; (void*) Thread::getId () &lt;&lt; &quot; &quot;;&#xD;
+prefix &lt;&lt; OS_AL::ProcessingResources::Thread::getName () &lt;&lt; &quot; &quot;;&#xD;
+prefix &lt;&lt; OS_AL::Time::TimeVal::current ().ticks () &lt;&lt; &quot; &quot;;&#xD;
+if (m_initFlag) {&#xD;
+ prefix &lt;&lt; m_head;&#xD;
+}&#xD;
+prefix &lt;&lt; mark &lt;&lt; begin;&#xD;
+&#xD;
+if (log) {&#xD;
+ // messages with file stamp&#xD;
+ clog &lt;&lt; prefix.data () &lt;&lt; middle.data() &lt;&lt; endl;&#xD;
+}&#xD;
+else {&#xD;
+ cout &lt;&lt; prefix.data () &lt;&lt; middle.data() &lt;&lt; endl;&#xD;
+}&#xD;
+m_shown = 1;&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_blcekDUZEdyDReAOQiyvOg" name="clean" specification="_Pfz7wDUUEdyDReAOQiyvOg">
+ <language>C/C++</language>
+ <body>middle = &quot;&quot;;&#xD;
+m_shown = 1; // allows to avoid showing empty instances&#xD;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_Tqni4FlLEd-9TNLvplUFDQ" name="operator&lt;&lt;" specification="_GTV_wFlLEd-9TNLvplUFDQ">
+ <language>C/C++</language>
+ <body>middle &lt;&lt; ch;
+return *this;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_0pUYkFlLEd-9TNLvplUFDQ" name="operator&lt;&lt;" specification="_VeBaMFlLEd-9TNLvplUFDQ">
+ <language>C/C++</language>
+ <body>print (StdMark);
+clean ();
+return *this;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KaqE8CZsEeGP95nTW02SMA" name="Print" specification="_6Db-4CZrEeGP95nTW02SMA">
+ <language>C/C++</language>
+ <body>if (m_shown == 0) {
+ print (m_mark.data ()); // print residual middle text
+ printErr (&quot;Instance of print destroyed, before it was shown (missing \&quot;showI\&quot;). Stored text is: &quot;);
+ print (&quot; &lt;&lt;&quot;);
+#if StopIfNeverShown == 1
+ exit(1);
+#endif
+}</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_ZgB1wDUPEdy0feurbW0fyQ" name="Print" method="_ZbDgEDUYEdyDReAOQiyvOg"/>
+ <ownedOperation xmi:id="_BdhNEDUREdy0feurbW0fyQ" name="setHead" isStatic="true" method="_doUxwDUYEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_VRVV0DUREdy0feurbW0fyQ" name="ccp">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_GLk3oDUREdy0feurbW0fyQ" name="getHead" isStatic="true" method="_hSR7ADUYEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_WjSs8DUREdy0feurbW0fyQ" name="param_0" type="_sQ1JADO0EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XkHQwDUREdy0feurbW0fyQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XkRBwDUREdy0feurbW0fyQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_XkaywDUREdy0feurbW0fyQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_OQgXYDUREdy0feurbW0fyQ" name="printErr" isStatic="true" method="_mhtNQDUYEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_YfIHgDUREdy0feurbW0fyQ" name="ccp">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_QP6qYDUREdy0feurbW0fyQ" name="printErr" isStatic="true" method="_qOoyADUYEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_Y6spMDUREdy0feurbW0fyQ" name="file">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Y8oi4DUREdy0feurbW0fyQ" name="line">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_7wRIABydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Y-RhoDUREdy0feurbW0fyQ" name="charP">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_T-5BEDUSEdy0feurbW0fyQ" name="getMiddle" method="_cnB0MDUVEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_e2yXsDUSEdy0feurbW0fyQ" name="param_0" type="_3W43cDO0EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f6TDIDUSEdy0feurbW0fyQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f6TDITUSEdy0feurbW0fyQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_f6cNEDUSEdy0feurbW0fyQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_WR0tADUSEdy0feurbW0fyQ" name="getMiddleRef" method="_fS_EIDUVEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_gUN_ADUSEdy0feurbW0fyQ" name="param_0" type="_3W43cDO0EdyG-pUz-bb-Lg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_haQaADUSEdy0feurbW0fyQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_haaLADUSEdy0feurbW0fyQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_haj8ADUSEdy0feurbW0fyQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_X5-9oDUSEdy0feurbW0fyQ" name="operator=" method="_ma0pgDUVEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_iOHf4DUSEdy0feurbW0fyQ" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kCMsoDUSEdy0feurbW0fyQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kCWdoDUSEdy0feurbW0fyQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_kCfnkDUSEdy0feurbW0fyQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_iUE98DUSEdy0feurbW0fyQ" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VCzfsDUTEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VDGaoDUTEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_VDGaoTUTEdyDReAOQiyvOg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Y7GcYDUSEdy0feurbW0fyQ" name="operator=" method="_pFvXoDUVEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_ylPfUDUSEdyDReAOQiyvOg" name="param_0" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zk3wUDUSEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zlBhUDUSEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_zlKrQDUSEdyDReAOQiyvOg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ypj-oDUSEdyDReAOQiyvOg" name="ccp">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_a43woDUSEdy0feurbW0fyQ" name="operator&lt;&lt;" method="_trmIcDUVEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_z9dPcDUSEdyDReAOQiyvOg" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1J50cDUSEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1KDlcDUSEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_1KMvYDUSEdyDReAOQiyvOg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_0BVC0DUSEdyDReAOQiyvOg" name="str" type="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_bfnnkDUSEdy0feurbW0fyQ" name="operator&lt;&lt;" method="_2QapMDUVEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_1f888DUSEdyDReAOQiyvOg" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5XBVIDUSEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5XLGIDUSEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_5XUQEDUSEdyDReAOQiyvOg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_3iCwgDUSEdyDReAOQiyvOg" name="ccp">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_MvhlcDUUEdyDReAOQiyvOg" name="setMark" method="_iP79cDUVEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_Q3b2ADUUEdyDReAOQiyvOg" name="mark" type="_WXH_4DO2EdyG-pUz-bb-Lg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZNgJEDUUEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZNgJETUUEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ZNp6EDUUEdyDReAOQiyvOg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_OMqR0DUUEdyDReAOQiyvOg" name="print" method="_S02ysDUZEdyDReAOQiyvOg">
+ <ownedParameter xmi:id="_VLaMoDUUEdyDReAOQiyvOg" name="mark">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCxxgDUUEdyDReAOQiyvOg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dC7igDUUEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dDEscDUUEdyDReAOQiyvOg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_VQVI4DUUEdyDReAOQiyvOg" name="log">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jiiDMDUUEdyDReAOQiyvOg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jirNIDUUEdyDReAOQiyvOg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ji-vIDUUEdyDReAOQiyvOg" value="FALSE"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Pfz7wDUUEdyDReAOQiyvOg" name="clean" method="_blcekDUZEdyDReAOQiyvOg"/>
+ <ownedOperation xmi:id="_GTV_wFlLEd-9TNLvplUFDQ" name="operator&lt;&lt;" method="_Tqni4FlLEd-9TNLvplUFDQ">
+ <ownedParameter xmi:id="_GTWm0FlLEd-9TNLvplUFDQ" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GTWm0llLEd-9TNLvplUFDQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GTWm0VlLEd-9TNLvplUFDQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_GTWm01lLEd-9TNLvplUFDQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_GTWm1FlLEd-9TNLvplUFDQ" name="ch">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PapyrusCpp_LIBRARIES/AnsiCLibrary.uml#_5lVhgBydEduyofBvg4RL2w"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_VeBaMFlLEd-9TNLvplUFDQ" name="operator&lt;&lt;" method="_0pUYkFlLEd-9TNLvplUFDQ">
+ <ownedParameter xmi:id="_VeCBQFlLEd-9TNLvplUFDQ" name="ret" type="_Fqa9QDUPEdy0feurbW0fyQ" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VeCBQllLEd-9TNLvplUFDQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VeCBQVlLEd-9TNLvplUFDQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_VeCBQ1lLEd-9TNLvplUFDQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_VeCBRFlLEd-9TNLvplUFDQ" name="dummy" type="_ITWTMFlMEd-9TNLvplUFDQ"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_6Db-4CZrEeGP95nTW02SMA" name="Print" method="_KaqE8CZsEeGP95nTW02SMA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_sJKdoDUbEdyDReAOQiyvOg" name="Association_Print_BString50" memberEnd="_sKD1gDUbEdyDReAOQiyvOg _sKf6YDUbEdyDReAOQiyvOg">
+ <ownedEnd xmi:id="_sKf6YDUbEdyDReAOQiyvOg" name="print" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="_sJKdoDUbEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sK8mUTUbEdyDReAOQiyvOg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_sK8mUDUbEdyDReAOQiyvOg" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_vA-sYDUoEdyDReAOQiyvOg" name="Association_Print_BString50" memberEnd="_vBIdYDUoEdyDReAOQiyvOg _vBbYUzUoEdyDReAOQiyvOg">
+ <ownedEnd xmi:id="_vBbYUzUoEdyDReAOQiyvOg" name="print" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="_vA-sYDUoEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vBu6UjUoEdyDReAOQiyvOg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vBu6UTUoEdyDReAOQiyvOg" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="__XEKADUoEdyDReAOQiyvOg" name="Association_Print_BString500" memberEnd="__XEKATUoEdyDReAOQiyvOg __XXE8zUoEdyDReAOQiyvOg">
+ <ownedEnd xmi:id="__XXE8zUoEdyDReAOQiyvOg" name="print" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="__XEKADUoEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__Xqm8jUoEdyDReAOQiyvOg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Xqm8TUoEdyDReAOQiyvOg" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_E53rQDUpEdyDReAOQiyvOg" name="Association_Print_BString2000" memberEnd="_E6BcQDUpEdyDReAOQiyvOg _E6UXMzUpEdyDReAOQiyvOg">
+ <ownedEnd xmi:id="_E6UXMzUpEdyDReAOQiyvOg" name="print" type="_Fqa9QDUPEdy0feurbW0fyQ" isUnique="false" association="_E53rQDUpEdyDReAOQiyvOg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E6nSITUpEdyDReAOQiyvOg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E6nSIDUpEdyDReAOQiyvOg" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_dQB60DVKEdyF2KWMAqLQBg" name="FromPrinttoBString50" client="_Fqa9QDUPEdy0feurbW0fyQ" supplier="_sQ1JADO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_d01RADVKEdyF2KWMAqLQBg" name="FromPrinttoBString500" client="_Fqa9QDUPEdy0feurbW0fyQ" supplier="_1vnXoDO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_eJ_osDVKEdyF2KWMAqLQBg" name="FromPrinttoBString2000" client="_Fqa9QDUPEdy0feurbW0fyQ" supplier="_3W43cDO0EdyG-pUz-bb-Lg"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_Ie1FEFbIEd-9TNLvplUFDQ" name="FromBStringtoTrace" client="_WXH_4DO2EdyG-pUz-bb-Lg" supplier="_1DM54DxBEdyfAeav5abbAw"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_WP12gFbLEd-9TNLvplUFDQ" name="FromBStringtoThread" client="_WXH_4DO2EdyG-pUz-bb-Lg" supplier="_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_aZ7RUFbLEd-9TNLvplUFDQ" name="FromBStringtoTimeVal" client="_WXH_4DO2EdyG-pUz-bb-Lg" supplier="_FuKEEDj8Edy0Rd6V_tf1-Q"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_ITWTMFlMEd-9TNLvplUFDQ" name="Show">
+ <ownedComment xmi:id="_VE56IFlMEd-9TNLvplUFDQ" annotatedElement="_ITWTMFlMEd-9TNLvplUFDQ">
+ <body>Predefined types and variables to provoke output). The (dummy) types are
+used to overload the &lt;&lt; operator and statically choose the associated
+method if an instance (declared below) is passed.
+Show: output the whole line immediately and reset the output string</body>
+ </ownedComment>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_E9NSEPVxEd-tirPvq3IDdA" name="FromBStringToProDesc" client="_WXH_4DO2EdyG-pUz-bb-Lg" supplier="_oSgIME_BEdy2tpS719xBwQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_0TXx4DUOEdy0feurbW0fyQ" name="BaseTypes"/>
+ <profileApplication xmi:id="_ROTQYi-OEdySSa8YESkO2w">
+ <eAnnotations xmi:id="_ROTQYy-OEdySSa8YESkO2w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_8kttUDRbEdyDwaY3iUxzzA">
+ <eAnnotations xmi:id="_8k23QDRbEdyDwaY3iUxzzA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_TRZrgCgpEeC5Ga5kAgjl0g">
+ <eAnnotations xmi:id="_Tb2A8CgpEeC5Ga5kAgjl0g" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ </uml:Model>
+ <l2:Create xmi:id="_NafZoDRGEdyG-pUz-bb-Lg" base_BehavioralFeature="_J60NwDRGEdyG-pUz-bb-Lg"/>
+ <l2:Create xmi:id="_oOiq8DRGEdyG-pUz-bb-Lg" base_BehavioralFeature="_X1eKwDRGEdyG-pUz-bb-Lg"/>
+ <l2:Create xmi:id="_G5ptYDRHEdyG-pUz-bb-Lg" base_BehavioralFeature="_E8CKIDRHEdyG-pUz-bb-Lg"/>
+ <Cpp:CppPtr xmi:id="_SJ2X0DReEdyDwaY3iUxzzA" base_parameter="_ajL4wDRHEdyG-pUz-bb-Lg"/>
+ <Cpp:CppConst xmi:id="_Zx35IDReEdyDwaY3iUxzzA" base_parameter="_ajL4wDRHEdyG-pUz-bb-Lg"/>
+ <Cpp:CppConst xmi:id="_kIr78DReEdyDwaY3iUxzzA" base_parameter="_vKHggDRHEdyG-pUz-bb-Lg"/>
+ <Cpp:CppPtr xmi:id="_lzYjMDReEdyDwaY3iUxzzA" base_parameter="_vKHggDRHEdyG-pUz-bb-Lg"/>
+ <Cpp:CppConst xmi:id="_tsGL4DReEdyDwaY3iUxzzA" base_parameter="_2Do9EDRHEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_uNnkkDReEdyDwaY3iUxzzA" base_parameter="_2Do9EDRHEdyG-pUz-bb-Lg"/>
+ <Cpp:CppPtr xmi:id="_yMcKkDReEdyDwaY3iUxzzA" base_parameter="_DEe9MDRIEdyG-pUz-bb-Lg"/>
+ <Cpp:CppConst xmi:id="_01kI8DReEdyDwaY3iUxzzA" base_parameter="_RcNQsDRIEdyG-pUz-bb-Lg"/>
+ <Cpp:CppPtr xmi:id="_01kI8TReEdyDwaY3iUxzzA" base_parameter="_RcNQsDRIEdyG-pUz-bb-Lg"/>
+ <Cpp:CppConst xmi:id="__JQmUDReEdyDwaY3iUxzzA" base_parameter="_nIuAcDRIEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="__JQmUTReEdyDwaY3iUxzzA" base_parameter="_nIuAcDRIEdyG-pUz-bb-Lg"/>
+ <Cpp:CppPtr xmi:id="_rTwmEDRfEdyDwaY3iUxzzA" base_parameter="_qg5nwDRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_3ZclgDRfEdyDwaY3iUxzzA" base_parameter="_xw1XMDRfEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_7VlD4DRfEdyDwaY3iUxzzA" base_parameter="_2u7q4DRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppPtr xmi:id="_7VlD4TRfEdyDwaY3iUxzzA" base_parameter="_2u7q4DRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_89vUgDRfEdyDwaY3iUxzzA" base_parameter="_XVuW4DRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="__3HVYDRfEdyDwaY3iUxzzA" base_operation="_nyaBMDRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_Edj8EDRgEdyDwaY3iUxzzA" base_operation="_uTyqkDRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_LxeOkDRgEdyDwaY3iUxzzA" base_parameter="_aL0aQDRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_Mowb4DRgEdyDwaY3iUxzzA" base_operation="_xfysgDRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_RhiIsDRgEdyDwaY3iUxzzA" base_parameter="_ctWi4DRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_SlL-EDRgEdyDwaY3iUxzzA" base_operation="_xsnAgDRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_ZGuYcDRgEdyDwaY3iUxzzA" base_parameter="_fMgF4DRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_qDHBEDRgEdyDwaY3iUxzzA" base_parameter="_g3MtIDRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_qqS84DRgEdyDwaY3iUxzzA" base_parameter="_ienW4DRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_sKj1wDRgEdyDwaY3iUxzzA" base_parameter="_kFSZwDRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_s5f_YDRgEdyDwaY3iUxzzA" base_parameter="_mGLTcDRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_tkakoDRgEdyDwaY3iUxzzA" base_parameter="_nv1Y4DRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_wIoN0DRgEdyDwaY3iUxzzA" base_operation="_x1P_IDRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_w4T-UDRgEdyDwaY3iUxzzA" base_operation="_x8tSADRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_yAu-8DRgEdyDwaY3iUxzzA" base_operation="_yJ0g8DRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_yyqLIDRgEdyDwaY3iUxzzA" base_operation="_yQhl4DRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_zc1JgDRgEdyDwaY3iUxzzA" base_operation="_yXOq0DRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppInline xmi:id="_0RuxMDRgEdyDwaY3iUxzzA" base_operation="_yjTX8DRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppConst xmi:id="_50YhcDRgEdyDwaY3iUxzzA" base_parameter="_5al_4DRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_50YhcTRgEdyDwaY3iUxzzA" base_parameter="_5al_4DRJEdyG-pUz-bb-Lg"/>
+ <Cpp:CppConst xmi:id="_Gsk74DRhEdyDwaY3iUxzzA" base_parameter="__jzkYDRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppPtr xmi:id="_Gsk74TRhEdyDwaY3iUxzzA" base_parameter="__jzkYDRKEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_OnOeQDRhEdyDwaY3iUxzzA" base_parameter="_t_JBgDRPEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_QACrUDRhEdyDwaY3iUxzzA" base_parameter="_1yC9IDRPEdy1p4IpsoZYqA"/>
+ <Cpp:CppConst xmi:id="_RpGT0DRhEdyDwaY3iUxzzA" base_parameter="_132qMDRPEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_RpGT0TRhEdyDwaY3iUxzzA" base_parameter="_132qMDRPEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_ekucwDRhEdyDwaY3iUxzzA" base_parameter="_BTXrQDRQEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_gJA6ADRhEdyDwaY3iUxzzA" base_parameter="_BWpowDRQEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_hf4mUDRhEdyDwaY3iUxzzA" base_parameter="_BaOhMDRQEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_oEaDQDRhEdyDwaY3iUxzzA" base_parameter="_giLzgDRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_o1uygDRhEdyDwaY3iUxzzA" base_parameter="_zmS9oDRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_pjnzQDRhEdyDwaY3iUxzzA" base_parameter="_kTb3kDRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_qMwP0DRhEdyDwaY3iUxzzA" base_parameter="_z-lh0DRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_q0iokDRhEdyDwaY3iUxzzA" base_parameter="_m0EoUDRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_rdXjIDRhEdyDwaY3iUxzzA" base_parameter="_0RNi4DRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_sNW1oDRhEdyDwaY3iUxzzA" base_parameter="_orbLgDRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_s8JOQDRhEdyDwaY3iUxzzA" base_parameter="_0ku70DRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_toQGUDRhEdyDwaY3iUxzzA" base_parameter="_qoJW4DRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_uSk1sDRhEdyDwaY3iUxzzA" base_parameter="_02A5EDRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_vFPBsDRhEdyDwaY3iUxzzA" base_parameter="_tL6UIDRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_vteGYDRhEdyDwaY3iUxzzA" base_parameter="_AArasDRYEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_wT6bUDRhEdyDwaY3iUxzzA" base_parameter="_vCh3gDRXEdy1p4IpsoZYqA"/>
+ <Cpp:CppRef xmi:id="_xABTYDRhEdyDwaY3iUxzzA" base_parameter="_AR0OADRYEdy1p4IpsoZYqA"/>
+ <Cpp:CppConst xmi:id="_INGeADRiEdyDwaY3iUxzzA" base_operation="_ZkKxIDRaEdy1p4IpsoZYqA"/>
+ <Cpp:CppInline xmi:id="_INGeATRiEdyDwaY3iUxzzA" base_operation="_ZkKxIDRaEdy1p4IpsoZYqA"/>
+ <Cpp:CppConst xmi:id="_ifB5sDRiEdyDwaY3iUxzzA" base_operation="_O59-oDRiEdyDwaY3iUxzzA"/>
+ <Cpp:CppInline xmi:id="_ifB5sTRiEdyDwaY3iUxzzA" base_operation="_O59-oDRiEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_8igCoDRiEdyDwaY3iUxzzA" base_parameter="_vozzYDRiEdyDwaY3iUxzzA"/>
+ <Cpp:CppInline xmi:id="_91pskDRiEdyDwaY3iUxzzA" base_operation="_tMpS8DRiEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_Qs9w0DRjEdyDwaY3iUxzzA" base_operation="_FX25wDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppInline xmi:id="_Qs9w0TRjEdyDwaY3iUxzzA" base_operation="_FX25wDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_XxyB8DRkEdypGbuyt3_DaA" base_operation="_hifjgDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppInline xmi:id="_XxyB8TRkEdypGbuyt3_DaA" base_operation="_hifjgDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_YqaTEDRkEdypGbuyt3_DaA" base_operation="_hujpkDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppInline xmi:id="_YqaTETRkEdypGbuyt3_DaA" base_operation="_hujpkDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_ZaivgDRkEdypGbuyt3_DaA" base_operation="_h3DeQDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppInline xmi:id="_ZaivgTRkEdypGbuyt3_DaA" base_operation="_h3DeQDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_aOGTYDRkEdypGbuyt3_DaA" base_operation="_iQYkQDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppInline xmi:id="_aOGTYTRkEdypGbuyt3_DaA" base_operation="_iQYkQDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_d77QADRkEdypGbuyt3_DaA" base_parameter="_oiusEDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppPtr xmi:id="_kpiXgDRkEdypGbuyt3_DaA" base_parameter="_oiusEDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_fl4QYDRkEdypGbuyt3_DaA" base_parameter="_pLG6sDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppPtr xmi:id="_l2ujYDRkEdypGbuyt3_DaA" base_parameter="_pLG6sDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_ezNdUDRkEdypGbuyt3_DaA" base_parameter="_o4x0kDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppRef xmi:id="_m8wXUDRkEdypGbuyt3_DaA" base_parameter="_o4x0kDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_gX8mgDRkEdypGbuyt3_DaA" base_parameter="_pg3IQDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppRef xmi:id="_oQDyQDRkEdypGbuyt3_DaA" base_parameter="_pg3IQDRjEdyDwaY3iUxzzA"/>
+ <Cpp:CppConst xmi:id="_ovwwkDRlEdypGbuyt3_DaA" base_operation="_hQh-4DRlEdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_ovwwkTRlEdypGbuyt3_DaA" base_operation="_hQh-4DRlEdypGbuyt3_DaA"/>
+ <Cpp:CppConst xmi:id="_qoAroDRlEdypGbuyt3_DaA" base_parameter="_jgxjMDRlEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_qoAroTRlEdypGbuyt3_DaA" base_parameter="_jgxjMDRlEdypGbuyt3_DaA"/>
+ <Cpp:CppConst xmi:id="_8sN38DRlEdypGbuyt3_DaA" base_operation="_w9e_8DRlEdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_8sN38TRlEdypGbuyt3_DaA" base_operation="_w9e_8DRlEdypGbuyt3_DaA"/>
+ <Cpp:CppConst xmi:id="_-03mgDRlEdypGbuyt3_DaA" base_parameter="_yuSPMDRlEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_-03mgTRlEdypGbuyt3_DaA" base_parameter="_yuSPMDRlEdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_MWyTYDRmEdypGbuyt3_DaA" base_operation="_BSrFsDRmEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_Nkk8MDRmEdypGbuyt3_DaA" base_parameter="_GkyfkDRmEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_kGSOkDRmEdypGbuyt3_DaA" base_parameter="_WwIs0DRmEdypGbuyt3_DaA"/>
+ <Cpp:CppConst xmi:id="_5sjMYDRmEdypGbuyt3_DaA" base_operation="_urQpMDRmEdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_5sjMYTRmEdypGbuyt3_DaA" base_operation="_urQpMDRmEdypGbuyt3_DaA"/>
+ <Cpp:CppConst xmi:id="_PABxEDRnEdypGbuyt3_DaA" base_operation="_AJnWcDRnEdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_PABxETRnEdypGbuyt3_DaA" base_operation="_AJnWcDRnEdypGbuyt3_DaA"/>
+ <Cpp:CppConst xmi:id="_rnaoQDRnEdypGbuyt3_DaA" base_parameter="_leUjEDRnEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_rnaoQTRnEdypGbuyt3_DaA" base_parameter="_leUjEDRnEdypGbuyt3_DaA"/>
+ <Cpp:CppConst xmi:id="_8nrEQDRnEdypGbuyt3_DaA" base_parameter="_x-EoUDRnEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_JCg0UDRoEdypGbuyt3_DaA" base_property="_A2bjsDRoEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_J6sZgDRoEdypGbuyt3_DaA" base_property="_FafkwDRoEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_YxG0IDRoEdypGbuyt3_DaA" base_property="_WG7s4DRoEdypGbuyt3_DaA"/>
+ <Cpp:CppInclude xmi:id="_Vh1d8DR3EdypGbuyt3_DaA" body="#include &lt;stdio.h>&#x9;&#x9;// for sprintf&#xD;&#xA;#include &lt;stdlib.h>&#x9;&#x9;// for strtod" header="#include &lt;string.h>&#xD;&#xA;&#xD;&#xA;#define StdSeparators &quot; `~!@#$%^&amp;*()-=+[]{}\\|;:'\&quot;/,&lt;.>?\a\b\f\n\r\t\v&quot;&#xD;&#xA;" base_class="_WXH_4DO2EdyG-pUz-bb-Lg"/>
+ <l2:Create xmi:id="_quTe4DR7EdypGbuyt3_DaA" base_BehavioralFeature="_m2Mk4DR7EdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_quTe4TR7EdypGbuyt3_DaA" base_operation="_m2Mk4DR7EdypGbuyt3_DaA"/>
+ <l2:Create xmi:id="_1FHhsDR7EdypGbuyt3_DaA" base_BehavioralFeature="_rwKkgDR7EdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_1FHhsTR7EdypGbuyt3_DaA" base_operation="_rwKkgDR7EdypGbuyt3_DaA"/>
+ <l2:Create xmi:id="_RoyWgDR8EdypGbuyt3_DaA" base_BehavioralFeature="_N8S2oDR8EdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_RoyWgTR8EdypGbuyt3_DaA" base_operation="_N8S2oDR8EdypGbuyt3_DaA"/>
+ <Cpp:CppConst xmi:id="_sl7SYDR8Edy0feurbW0fyQ" base_parameter="_ToyfYDR8EdypGbuyt3_DaA"/>
+ <Cpp:CppRef xmi:id="_uKW5kDR8Edy0feurbW0fyQ" base_parameter="_ToyfYDR8EdypGbuyt3_DaA"/>
+ <Cpp:CppInline xmi:id="_9yZlcDR8Edy0feurbW0fyQ" base_operation="_63iW0DR8Edy0feurbW0fyQ"/>
+ <l2:Create xmi:id="_9yivYDR8Edy0feurbW0fyQ" base_BehavioralFeature="_63iW0DR8Edy0feurbW0fyQ"/>
+ <Cpp:CppConst xmi:id="_1FylMDR9Edy0feurbW0fyQ" base_parameter="_AvfosDR9Edy0feurbW0fyQ"/>
+ <Cpp:CppRef xmi:id="_1FylMTR9Edy0feurbW0fyQ" base_parameter="_AvfosDR9Edy0feurbW0fyQ"/>
+ <Cpp:CppConst xmi:id="_b-oeEDR-Edy0feurbW0fyQ" base_parameter="_VQkqoDR-Edy0feurbW0fyQ"/>
+ <Cpp:CppPtr xmi:id="_b-oeETR-Edy0feurbW0fyQ" base_parameter="_VQkqoDR-Edy0feurbW0fyQ"/>
+ <l2:Create xmi:id="_ddtEIDR-Edy0feurbW0fyQ" base_BehavioralFeature="_PngwYDR-Edy0feurbW0fyQ"/>
+ <Cpp:CppInline xmi:id="_ddtEITR-Edy0feurbW0fyQ" base_operation="_PngwYDR-Edy0feurbW0fyQ"/>
+ <Cpp:CppInclude xmi:id="_6BpjUDUOEdy0feurbW0fyQ" header="typedef unsigned int uint_t;&#xD;&#xA;typedef unsigned long ulong_t;&#xD;&#xA;&#xD;&#xA;#define IN&#xD;&#xA;#define OUT&#xD;&#xA;#define INOUT&#xD;&#xA;#define RETURN&#xD;&#xA;&#xD;&#xA;#ifndef FALSE&#xD;&#xA;&#x9;#define FALSE false&#xD;&#xA;#endif&#xD;&#xA;#ifndef TRUE&#xD;&#xA;&#x9;#define TRUE true&#xD;&#xA;#endif" base_class="_0TXx4DUOEdy0feurbW0fyQ"/>
+ <l2:Create xmi:id="_etYEYDUPEdy0feurbW0fyQ" base_BehavioralFeature="_ZgB1wDUPEdy0feurbW0fyQ"/>
+ <l2:Create xmi:id="_fiknADUPEdy0feurbW0fyQ"/>
+ <l2:Create xmi:id="_gcFo8DUPEdy0feurbW0fyQ"/>
+ <l2:Create xmi:id="_hRltkDUPEdy0feurbW0fyQ"/>
+ <l2:Destroy xmi:id="_iKz0kDUPEdy0feurbW0fyQ"/>
+ <Cpp:CppConst xmi:id="_f1HdoDUREdy0feurbW0fyQ" base_parameter="_VRVV0DUREdy0feurbW0fyQ"/>
+ <Cpp:CppPtr xmi:id="_f1HdoTUREdy0feurbW0fyQ" base_parameter="_VRVV0DUREdy0feurbW0fyQ"/>
+ <Cpp:CppRef xmi:id="_lTTkoDUREdy0feurbW0fyQ" base_parameter="_WjSs8DUREdy0feurbW0fyQ"/>
+ <Cpp:CppConst xmi:id="_AYMHQDUSEdy0feurbW0fyQ" base_parameter="_YfIHgDUREdy0feurbW0fyQ"/>
+ <Cpp:CppPtr xmi:id="_AYMHQTUSEdy0feurbW0fyQ" base_parameter="_YfIHgDUREdy0feurbW0fyQ"/>
+ <Cpp:CppRef xmi:id="_E9trcDUTEdyDReAOQiyvOg" base_parameter="_gUN_ADUSEdy0feurbW0fyQ"/>
+ <Cpp:CppInline xmi:id="_LSuswDUTEdyDReAOQiyvOg" base_operation="_WR0tADUSEdy0feurbW0fyQ"/>
+ <Cpp:CppConst xmi:id="_M-Bw8DUTEdyDReAOQiyvOg" base_operation="_T-5BEDUSEdy0feurbW0fyQ"/>
+ <Cpp:CppInline xmi:id="_M-Bw8TUTEdyDReAOQiyvOg" base_operation="_T-5BEDUSEdy0feurbW0fyQ"/>
+ <Cpp:CppInline xmi:id="_aXwLIDUTEdyDReAOQiyvOg" base_operation="_X5-9oDUSEdy0feurbW0fyQ"/>
+ <Cpp:CppRef xmi:id="_bo0KYDUTEdyDReAOQiyvOg" base_parameter="_iOHf4DUSEdy0feurbW0fyQ"/>
+ <Cpp:CppConst xmi:id="_eKpN8DUTEdyDReAOQiyvOg" base_parameter="_iUE98DUSEdy0feurbW0fyQ"/>
+ <Cpp:CppRef xmi:id="_eKpN8TUTEdyDReAOQiyvOg" base_parameter="_iUE98DUSEdy0feurbW0fyQ"/>
+ <Cpp:CppInline xmi:id="_xvQdEDUTEdyDReAOQiyvOg" base_operation="_Y7GcYDUSEdy0feurbW0fyQ"/>
+ <Cpp:CppRef xmi:id="_zR57kDUTEdyDReAOQiyvOg" base_parameter="_ylPfUDUSEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_1PEy4DUTEdyDReAOQiyvOg" base_parameter="_ypj-oDUSEdyDReAOQiyvOg"/>
+ <Cpp:CppPtr xmi:id="_1PEy4TUTEdyDReAOQiyvOg" base_parameter="_ypj-oDUSEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_80H4sDUTEdyDReAOQiyvOg" base_operation="_a43woDUSEdy0feurbW0fyQ"/>
+ <Cpp:CppInline xmi:id="_9qzpEDUTEdyDReAOQiyvOg" base_operation="_bfnnkDUSEdy0feurbW0fyQ"/>
+ <Cpp:CppRef xmi:id="_-2NsQDUTEdyDReAOQiyvOg" base_parameter="_z9dPcDUSEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_Al0osDUUEdyDReAOQiyvOg" base_parameter="_0BVC0DUSEdyDReAOQiyvOg"/>
+ <Cpp:CppRef xmi:id="_Al0osTUUEdyDReAOQiyvOg" base_parameter="_0BVC0DUSEdyDReAOQiyvOg"/>
+ <Cpp:CppRef xmi:id="_Cii0EDUUEdyDReAOQiyvOg" base_parameter="_1f888DUSEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_ECN3EDUUEdyDReAOQiyvOg" base_parameter="_3iCwgDUSEdyDReAOQiyvOg"/>
+ <Cpp:CppPtr xmi:id="_ECN3ETUUEdyDReAOQiyvOg" base_parameter="_3iCwgDUSEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_qV83wDUUEdyDReAOQiyvOg" base_parameter="_Q3b2ADUUEdyDReAOQiyvOg"/>
+ <Cpp:CppRef xmi:id="_qV83wTUUEdyDReAOQiyvOg" base_parameter="_Q3b2ADUUEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_r5MMIDUUEdyDReAOQiyvOg" base_parameter="_VLaMoDUUEdyDReAOQiyvOg"/>
+ <Cpp:CppPtr xmi:id="_r5MMITUUEdyDReAOQiyvOg" base_parameter="_VLaMoDUUEdyDReAOQiyvOg"/>
+ <Cpp:CppInclude xmi:id="_DXEWYDUWEdyDReAOQiyvOg" body="#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#include &lt;iostream>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/Thread.h>&#xD;&#xA;#include &lt;OS_AL/Time/TimeVal.h>&#xD;&#xA;&#xD;&#xA;using namespace std;&#xD;&#xA;&#xD;&#xA;#define ErrMark &quot; &lt;&lt; &quot;&#xD;&#xA;#define StdMark &quot; # &quot;&#xD;&#xA;&#xD;&#xA;#define StopIfNeverShown &#x9;0&#x9;// 1 or 0&#xD;&#xA;&#xD;&#xA;// ---------------------------------------------------------------------------&#xD;&#xA;// Global variables:&#xD;&#xA;OS_AL::Util::Show showI;&#xD;&#xA;ShowErr showErr;&#xD;&#xA;" header="#define traceMark1&#x9;&quot; $ &quot;&#xD;&#xA;&#xD;&#xA;// MACROS (if __METHOD__ is used)&#xD;&#xA;#define PRINTpr(chars) OS_AL::Util::Print pr; pr &lt;&lt; __FILE__ &quot;: &quot; chars&#xD;&#xA;#define PRINTerr(chars) OS_AL::Util::Print::printErr (&quot;in &quot; __FILE__ &quot;, line &quot;, __LINE__, &quot;: &quot; chars)&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * Verbose(expression) removes expression unless compiled with -DVERBOSE&#xD;&#xA; * Caveat:&#xD;&#xA; *&#x9;- avoid comments&#xD;&#xA; *&#x9;- avoid multiline expressions (ugly to read)&#xD;&#xA; *&#x9;- everything after a &quot;,&quot; is interpreted as a 2nd argument&#xD;&#xA; *&#x9;=> use verbose for simple, single expressions only, in all&#xD;&#xA; * other cases use #ifdef VERBOSE ... #endif&#xD;&#xA; */&#xD;&#xA;#if defined(VERBOSE) || defined (CR_CHECK)&#xD;&#xA;&#x9;#define Verbose(expression)&#x9;expression&#xD;&#xA;#else&#xD;&#xA;&#x9;#define Verbose(expression)&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * ShowErr: like show, but provoke an error message&#xD;&#xA; */&#xD;&#xA;enum ShowErr { };&#xD;&#xA;&#xD;&#xA;// show() is a method of VxWorks and IlogViews -> use showI&#xD;&#xA;extern OS_AL::Util::Show showI;&#xD;&#xA;extern ShowErr showErr;&#xD;&#xA;&#xD;&#xA;//---------------------------------------------------------------------------&#xD;&#xA;// definition of macros (reduce dependency on template compilers)&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;// ====================================================================&#xD;&#xA;" base_class="_Fqa9QDUPEdy0feurbW0fyQ"/>
+ <Cpp:CppDefault xmi:id="_04HuoDUXEdyDReAOQiyvOg" value="0" base_property="_7ahzEDUUEdyDReAOQiyvOg"/>
+ <Cpp:CppConstInit xmi:id="_R0S4IDUaEdyDReAOQiyvOg" initialisation="m_shown (0)" base_operation="_ZgB1wDUPEdy0feurbW0fyQ"/>
+ <l2:Create xmi:id="_mlKLEDUyEdyDReAOQiyvOg" base_BehavioralFeature="_ky3HADUyEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_w3WzoDUyEdyDReAOQiyvOg" base_operation="_ky3HADUyEdyDReAOQiyvOg"/>
+ <l2:Destroy xmi:id="_PKez4DUzEdyDReAOQiyvOg" base_BehavioralFeature="_MPd0QDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_PKok4DUzEdyDReAOQiyvOg" base_operation="_MPd0QDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_QzicYDUzEdyDReAOQiyvOg" base_operation="_9DJbEDUyEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_SIxxADUzEdyDReAOQiyvOg" base_operation="_-f1bgDUyEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_UMNBUDUzEdyDReAOQiyvOg" base_operation="_ApOw8DUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_UMNBUTUzEdyDReAOQiyvOg" base_operation="_ApOw8DUzEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_V4inUDUzEdyDReAOQiyvOg" base_operation="_CTesQDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_V4inUTUzEdyDReAOQiyvOg" base_operation="_CTesQDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_YYbxMDUzEdyDReAOQiyvOg" base_operation="_HjplYDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_ZKgHUDUzEdyDReAOQiyvOg" base_operation="_GN0a4DUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_Z67esDUzEdyDReAOQiyvOg" base_operation="_E8J-sDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_asjI4DUzEdyDReAOQiyvOg" base_operation="_DrscYDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_ct5VkDUzEdyDReAOQiyvOg" base_operation="_I_JTADUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_ct5VkTUzEdyDReAOQiyvOg" base_operation="_I_JTADUzEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_dku28DUzEdyDReAOQiyvOg" base_operation="_KWxNQDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppInline xmi:id="_dk4n8DUzEdyDReAOQiyvOg" base_operation="_KWxNQDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppPtr xmi:id="_xm2hcDUzEdyDReAOQiyvOg" base_parameter="_iGkDYDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_zRsSoDUzEdyDReAOQiyvOg" base_parameter="_m35EYDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppRef xmi:id="_zR2DoDUzEdyDReAOQiyvOg" base_parameter="_m35EYDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppConst xmi:id="_NXjoQDU0EdylmKH0Uq8VaA" base_parameter="_8pB1cDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppRef xmi:id="_NXjoQTU0EdylmKH0Uq8VaA" base_parameter="_8pB1cDUzEdyDReAOQiyvOg"/>
+ <Cpp:CppPtr xmi:id="_zby0YDU0EdylmKH0Uq8VaA" base_parameter="_XB94EDU0EdylmKH0Uq8VaA"/>
+ <Cpp:CppPtr xmi:id="_LkU6oDU1EdylmKH0Uq8VaA" base_parameter="_F0HPgDU1EdylmKH0Uq8VaA"/>
+ <Cpp:CppPtr xmi:id="_TPxjYDU1EdylmKH0Uq8VaA" base_parameter="_PzPLEDU1EdylmKH0Uq8VaA"/>
+ <Cpp:CppPtr xmi:id="_ZYIBsDU1EdylmKH0Uq8VaA" base_parameter="_Vlh50DU1EdylmKH0Uq8VaA"/>
+ <Cpp:CppDefault xmi:id="_qGWSgDU1EdylmKH0Uq8VaA" value="1" base_parameter="_bfunYDU1EdylmKH0Uq8VaA"/>
+ <Cpp:CppPtr xmi:id="_wOG68DU1EdylmKH0Uq8VaA" base_parameter="_bbtqEDU1EdylmKH0Uq8VaA"/>
+ <Cpp:CppPtr xmi:id="_JpDEQDU2EdylmKH0Uq8VaA" base_parameter="_yUhN0DU1EdylmKH0Uq8VaA"/>
+ <Cpp:CppConst xmi:id="_L6C2gDU2EdylmKH0Uq8VaA" base_parameter="_yYP3QDU1EdylmKH0Uq8VaA"/>
+ <Cpp:CppRef xmi:id="_L6C2gTU2EdylmKH0Uq8VaA" base_parameter="_yYP3QDU1EdylmKH0Uq8VaA"/>
+ <Cpp:CppVisibility xmi:id="_yFTWADVJEdyF2KWMAqLQBg" value="public" base_generalization="_ZFUrgDO2EdyG-pUz-bb-Lg"/>
+ <Cpp:CppPtr xmi:id="_oiW9oDadEdyC6dXxO2UOEQ" base_parameter="_V2hJkDadEdyC6dXxO2UOEQ"/>
+ <Cpp:CppConst xmi:id="_rCGWgDadEdyC6dXxO2UOEQ" base_parameter="_WOgLwDadEdyC6dXxO2UOEQ"/>
+ <Cpp:CppRef xmi:id="_rCGWgTadEdyC6dXxO2UOEQ" base_parameter="_WOgLwDadEdyC6dXxO2UOEQ"/>
+ <Cpp:CppInline xmi:id="_wtxN8DafEdyC6dXxO2UOEQ" base_operation="_ftqi8DafEdyC6dXxO2UOEQ"/>
+ <Cpp:CppPtr xmi:id="_yLfwMDafEdyC6dXxO2UOEQ" base_parameter="_hoAIsDafEdyC6dXxO2UOEQ"/>
+ <Cpp:CppInline xmi:id="_NNjoUDagEdyC6dXxO2UOEQ" base_operation="_A4X0UDagEdyC6dXxO2UOEQ"/>
+ <Cpp:CppPtr xmi:id="_OfETgDagEdyC6dXxO2UOEQ" base_parameter="_GHp8oDagEdyC6dXxO2UOEQ"/>
+ <Cpp:CppConst xmi:id="_LC2j8DajEdyC6dXxO2UOEQ" base_parameter="_BHwMwDajEdyC6dXxO2UOEQ"/>
+ <Cpp:CppRef xmi:id="_LC2j8TajEdyC6dXxO2UOEQ" base_parameter="_BHwMwDajEdyC6dXxO2UOEQ"/>
+ <l2:Create xmi:id="_NridcDajEdyC6dXxO2UOEQ" base_BehavioralFeature="_-xPoYDaiEdyC6dXxO2UOEQ"/>
+ <Cpp:CppInline xmi:id="_NridcTajEdyC6dXxO2UOEQ" base_operation="_-xPoYDaiEdyC6dXxO2UOEQ"/>
+ <Cpp:CppConstInit xmi:id="_REDRYDajEdyC6dXxO2UOEQ" initialisation="value (elt), next (NULL)" base_operation="_-xPoYDaiEdyC6dXxO2UOEQ"/>
+ <Cpp:CppPtr xmi:id="_xFafoDakEdyMZ7r5-upW2A" base_parameter="_nU5AwDakEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_zDU90DakEdyMZ7r5-upW2A" base_operation="_a-g58DakEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_CU3OMDalEdyMZ7r5-upW2A" base_operation="_5hcQwDakEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_DWlJ4DalEdyMZ7r5-upW2A" base_parameter="_7GUj4DakEdyMZ7r5-upW2A"/>
+ <Cpp:CppConst xmi:id="_Qe-uEDamEdyMZ7r5-upW2A" base_operation="_Am2XwDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_Qe-uETamEdyMZ7r5-upW2A" base_operation="_Am2XwDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_TeKcADamEdyMZ7r5-upW2A" base_parameter="_FBO4YDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppConst xmi:id="_VqiM8DamEdyMZ7r5-upW2A" base_parameter="_FGADoDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppRef xmi:id="_VqiM8TamEdyMZ7r5-upW2A" base_parameter="_FGADoDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_p7j2IDamEdyMZ7r5-upW2A" base_parameter="_h1SSkDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppConst xmi:id="_rkKysDamEdyMZ7r5-upW2A" base_operation="_gDSwgDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_rkUjsDamEdyMZ7r5-upW2A" base_operation="_gDSwgDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppConst xmi:id="_t6-SADamEdyMZ7r5-upW2A" base_parameter="_h5KF8DamEdyMZ7r5-upW2A"/>
+ <Cpp:CppRef xmi:id="_t6-SATamEdyMZ7r5-upW2A" base_parameter="_h5KF8DamEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_DFg9IDanEdyMZ7r5-upW2A" base_operation="_2-Vv8DamEdyMZ7r5-upW2A"/>
+ <Cpp:CppConst xmi:id="_E3XVQDanEdyMZ7r5-upW2A" base_parameter="_44iLwDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppRef xmi:id="_E3XVQTanEdyMZ7r5-upW2A" base_parameter="_44iLwDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_GKgYIDanEdyMZ7r5-upW2A" base_parameter="_47gnQDamEdyMZ7r5-upW2A"/>
+ <Cpp:CppConst xmi:id="_x1riIDaoEdyv9PRkTrTu0A" base_operation="_InFS0DaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_x1riITaoEdyv9PRkTrTu0A" base_operation="_InFS0DaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_0i1r8DaoEdyv9PRkTrTu0A" base_parameter="_gR0CwDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_-s_LwDaoEdyv9PRkTrTu0A" base_operation="_Kzm0wDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_AH5DgDapEdyv9PRkTrTu0A" base_parameter="_4jvVkDaoEdyv9PRkTrTu0A"/>
+ <Cpp:CppPtr xmi:id="_WeuioDapEdyv9PRkTrTu0A" base_parameter="_F389oDapEdyv9PRkTrTu0A"/>
+ <Cpp:CppInline xmi:id="_FKNG0DapEdyv9PRkTrTu0A" base_operation="_NLvw0DaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_ofDUgDapEdyv9PRkTrTu0A" base_operation="_Mh4UcDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppConst xmi:id="_ofDUgTapEdyv9PRkTrTu0A" base_operation="_Mh4UcDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_qn2NADapEdyv9PRkTrTu0A" base_parameter="_iP2AQDapEdyv9PRkTrTu0A"/>
+ <Cpp:CppConst xmi:id="_znMtoDapEdyv9PRkTrTu0A" base_operation="_ORpB4DaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_znMtoTapEdyv9PRkTrTu0A" base_operation="_ORpB4DaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_1CPvUDapEdyv9PRkTrTu0A" base_parameter="_wDf9YDapEdyv9PRkTrTu0A"/>
+ <Cpp:CppInline xmi:id="_87_50DapEdyv9PRkTrTu0A" base_operation="_QxrVsDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_-w-ecDapEdyv9PRkTrTu0A" base_parameter="_5TPDYDapEdyv9PRkTrTu0A"/>
+ <Cpp:CppConst xmi:id="_GY2OwDaqEdyv9PRkTrTu0A" base_operation="_SaIhQDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_GY2OwTaqEdyv9PRkTrTu0A" base_operation="_SaIhQDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_Hn-UUDaqEdyv9PRkTrTu0A" base_parameter="_DsSh4DaqEdyv9PRkTrTu0A"/>
+ <Cpp:CppInline xmi:id="_QFWJQDaqEdyv9PRkTrTu0A" base_operation="_ToX2ADaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_R-pNMDaqEdyv9PRkTrTu0A" base_parameter="_LADDYDaqEdyv9PRkTrTu0A"/>
+ <Cpp:CppConst xmi:id="_aRlTwDaqEdyv9PRkTrTu0A" base_operation="_WklIcDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_aRlTwTaqEdyv9PRkTrTu0A" base_operation="_WklIcDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_bZ2jYDaqEdyv9PRkTrTu0A" base_parameter="_XldrwDaqEdyv9PRkTrTu0A"/>
+ <Cpp:CppInline xmi:id="_cA57UDa1Edyv9PRkTrTu0A" base_operation="_YZZ8EDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_dYYEkDa1Edyv9PRkTrTu0A" base_parameter="_iOT5wDaqEdyv9PRkTrTu0A"/>
+ <Cpp:CppConst xmi:id="_m6JVwDa1Edyv9PRkTrTu0A" base_operation="_aO0lkDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppInline xmi:id="_m6JVwTa1Edyv9PRkTrTu0A" base_operation="_aO0lkDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_osSo0Da1Edyv9PRkTrTu0A" base_parameter="_iIN30Da1Edyv9PRkTrTu0A"/>
+ <Cpp:CppInline xmi:id="_wt8yIDa1Edyv9PRkTrTu0A" base_operation="_ddN0MDaoEdyMZ7r5-upW2A"/>
+ <Cpp:CppPtr xmi:id="_x_J7UDa1Edyv9PRkTrTu0A" base_parameter="_sFG-wDa1Edyv9PRkTrTu0A"/>
+ <Cpp:CppPtr xmi:id="_TE8JEDa5Edyv9PRkTrTu0A" base_property="_JP6ksDa5Edyv9PRkTrTu0A"/>
+ <Cpp:CppPtr xmi:id="_Z3LR4Da5Edyv9PRkTrTu0A" base_property="_yaiaUDa2Edyv9PRkTrTu0A"/>
+ <Cpp:CppPtr xmi:id="_arLhsDa5Edyv9PRkTrTu0A" base_property="_0wvcsDa2Edyv9PRkTrTu0A"/>
+ <Cpp:CppPtr xmi:id="_beAFwDa5Edyv9PRkTrTu0A" base_property="_1ZuIQTa2Edyv9PRkTrTu0A"/>
+ <Cpp:CppPtr xmi:id="_cMMBcDa5Edyv9PRkTrTu0A" base_property="_2AnwMTa2Edyv9PRkTrTu0A"/>
+ <Cpp:CppPtr xmi:id="_c74ZADa5Edyv9PRkTrTu0A" base_property="_3cG2wTa2Edyv9PRkTrTu0A"/>
+ <Cpp:CppPtr xmi:id="_drROkDa5Edyv9PRkTrTu0A" base_property="_8nYBwDa2Edyv9PRkTrTu0A"/>
+ <Cpp:CppInline xmi:id="_xb0n8Da5Edyv9PRkTrTu0A" base_operation="_lrJPMDa5Edyv9PRkTrTu0A"/>
+ <Cpp:CppConst xmi:id="_3xJyUDa5Edyv9PRkTrTu0A" base_parameter="_oX2tEDa5Edyv9PRkTrTu0A"/>
+ <Cpp:CppRef xmi:id="_3xJyUTa5Edyv9PRkTrTu0A" base_parameter="_oX2tEDa5Edyv9PRkTrTu0A"/>
+ <Cpp:CppConstInit xmi:id="_qkOokDa6Edyv9PRkTrTu0A" initialisation="beginning (NULL), endElement (NULL), current (NULL), firstFreeCellule (NULL), freeMemory ((ListCell *) ((char *) this + sizeof (BOL &lt; ElType >))), endOfMemory ((ListCell *) ((char *) this + sizeof (BOL &lt; ElType >) + (nbElem - 1) * sizeof (ListCell)))" base_operation="_ky3HADUyEdyDReAOQiyvOg"/>
+ <Cpp:CppInclude xmi:id="_gutqEDa8Edy_E4ZljVbr-g" body="#if defined(_POSIX_SOURCE) || defined(PC)&#xD;&#xA;&#x9;#include &lt;string.h>&#xD;&#xA;#else&#xD;&#xA;&#x9;#include &lt;string.h>&#xD;&#xA;&#x9;#ifndef SYSTEM_VxWorks&#xD;&#xA;&#x9;&#x9;#include &lt;memory.h>&#xD;&#xA;&#x9;#endif &#xD;&#xA;#endif &#xD;&#xA;" header="/**&#xD;&#xA; * ----------------------------------------------------------------------&#xD;&#xA; * [todo: it would be very good to have lock-free set/list implementations.&#xD;&#xA; * Currently, two threads that are mixing adding/removals would need lock&#xD;&#xA; * protection] => examine solutions, for instance skip lists&#xD;&#xA; * ----------------------------------------------------------------------&#xD;&#xA; */&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * This macro is used for historical reasons: it is used by the&#xD;&#xA; * code generated by objecteering. It declares a variable of type SetOf&#xD;&#xA; * with the prefix set_of_&lt;typename>. This variable stores a set of pointers.&#xD;&#xA; */&#xD;&#xA;#define CR_SET(className)\&#xD;&#xA;&#x9;typedef SetOf&lt;className *> set_of_ ## className;&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * This macro is similar to the macro above. The difference is that a set&#xD;&#xA; * of values (and not pointers) is stored.&#xD;&#xA; */&#xD;&#xA;#define CR_SET_V(className)\&#xD;&#xA;&#x9;typedef SetOf&lt;className> set_of_ ## className;&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * This integer default value DEFAULT_SIZE_BLOCK is used to control (partly)&#xD;&#xA; * memory size and fragmentation during growing. The ARRAY&#xD;&#xA; * is roughly doubled in size until it hits the size_block limit, after&#xD;&#xA; * which it is grown only in size_block sized chunks, if necessary.&#xD;&#xA; * A large value limits fragmentation at the expense of using more memory.&#xD;&#xA; * DEFAULT_SIZE_BLOCK value must always be a number greater than zero.&#xD;&#xA; */&#xD;&#xA;#ifndef DEFAULT_BLOCK_SIZE&#xD;&#xA;#define DEFAULT_BLOCK_SIZE 1024&#xD;&#xA;#endif&#xD;&#xA;" base_class="_2bXLkDUuEdyDReAOQiyvOg"/>
+ <l2:Create xmi:id="_HVTDYDa_Edy_E4ZljVbr-g" base_BehavioralFeature="_rnk_IDa-Edy_E4ZljVbr-g"/>
+ <l2:Destroy xmi:id="_H9iIEDa_Edy_E4ZljVbr-g" base_BehavioralFeature="_-M24MDa-Edy_E4ZljVbr-g"/>
+ <Cpp:CppDefault xmi:id="_2kPhADa-Edy_E4ZljVbr-g" value="0" base_parameter="_smT4QDa-Edy_E4ZljVbr-g"/>
+ <Cpp:CppConst xmi:id="_LDIAADa_Edy_E4ZljVbr-g" base_parameter="_smT4QDa-Edy_E4ZljVbr-g"/>
+ <Cpp:CppDefault xmi:id="_4UAOcDa-Edy_E4ZljVbr-g" value="DEFAULT_BLOCK_SIZE" base_parameter="_sqyIkDa-Edy_E4ZljVbr-g"/>
+ <Cpp:CppConst xmi:id="_L59hYDa_Edy_E4ZljVbr-g" base_parameter="_sqyIkDa-Edy_E4ZljVbr-g"/>
+ <Cpp:CppConst xmi:id="_dnEcUDa_Edy_E4ZljVbr-g" base_operation="_Q1uQwDa_Edy_E4ZljVbr-g"/>
+ <Cpp:CppInline xmi:id="_dnEcUTa_Edy_E4ZljVbr-g" base_operation="_Q1uQwDa_Edy_E4ZljVbr-g"/>
+ <Cpp:CppConst xmi:id="_7hAggDa_Edy0gLsbEakL5w" base_operation="_sUiWUDa_Edy0gLsbEakL5w"/>
+ <Cpp:CppInline xmi:id="_7hAggTa_Edy0gLsbEakL5w" base_operation="_sUiWUDa_Edy0gLsbEakL5w"/>
+ <Cpp:CppConst xmi:id="_Y4rlIDbAEdy0gLsbEakL5w" base_parameter="_Eq75cDbAEdy0gLsbEakL5w"/>
+ <Cpp:CppConst xmi:id="_taifoDbAEdy0gLsbEakL5w" base_parameter="_dxdR8DbAEdy0gLsbEakL5w"/>
+ <Cpp:CppConst xmi:id="_6qujUDbAEdy0gLsbEakL5w" base_parameter="_0ywqYDbAEdy0gLsbEakL5w"/>
+ <Cpp:CppConst xmi:id="_SuMjYDbBEdy0gLsbEakL5w" base_parameter="_JbLf4DbBEdy0gLsbEakL5w"/>
+ <Cpp:CppDefault xmi:id="_FmAvsDbCEdy0gLsbEakL5w" value="-1" base_parameter="_rogE0DbBEdy0gLsbEakL5w"/>
+ <Cpp:CppPtr xmi:id="_fhSl8DbCEdy0gLsbEakL5w" base_property="_QYjFMDbCEdy0gLsbEakL5w"/>
+ <Cpp:CppConst xmi:id="_3OjsgDbCEdy0gLsbEakL5w" base_operation="_q4yCoDbCEdy0gLsbEakL5w"/>
+ <Cpp:CppConst xmi:id="_5PAhUDbCEdy0gLsbEakL5w" base_parameter="_ugyrIDbCEdy0gLsbEakL5w"/>
+ <Cpp:CppRef xmi:id="_5PAhUTbCEdy0gLsbEakL5w" base_parameter="_ugyrIDbCEdy0gLsbEakL5w"/>
+ <l2:Create xmi:id="_jfUIcDbHEdy0gLsbEakL5w"/>
+ <l2:Destroy xmi:id="_kkAfoDbHEdy0gLsbEakL5w"/>
+ <l2:Create xmi:id="_29S5MDbJEdyGU4WMlqJBaQ"/>
+ <l2:Create xmi:id="_FHQtcDbeEdy0Rd6V_tf1-Q" base_BehavioralFeature="_C1-AQDbeEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppConst xmi:id="_VH44cDbeEdy0Rd6V_tf1-Q" base_parameter="_NLvhQDbeEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppRef xmi:id="_VH44cTbeEdy0Rd6V_tf1-Q" base_parameter="_NLvhQDbeEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppPtr xmi:id="_kY0r4DbeEdy0Rd6V_tf1-Q" base_parameter="_Zd8SsDbeEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppInline xmi:id="_1HyjkDbeEdy0Rd6V_tf1-Q" base_operation="_p1ESIDbeEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppInline xmi:id="_ER4IIDbfEdy0Rd6V_tf1-Q" base_operation="_795fwDbeEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppConstInit xmi:id="_aslaoDbfEdy0Rd6V_tf1-Q" initialisation="current (0), full (FALSE)" base_operation="_C1-AQDbeEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppInclude xmi:id="_xGQLUDbfEdy0Rd6V_tf1-Q" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>" base_class="_y68Y0DUuEdyDReAOQiyvOg"/>
+ <Cpp:CppInclude xmi:id="_b4VAMDj8Edy0Rd6V_tf1-Q" header="#ifdef DEBUG&#xD;&#xA;" base_class="_BN92YDj8Edy0Rd6V_tf1-Q"/>
+ <Cpp:CppPtr xmi:id="_E3dv0DkAEdy0Rd6V_tf1-Q" base_property="_B8mhMTkAEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppPtr xmi:id="_VYIFwDkAEdy0Rd6V_tf1-Q" base_parameter="_Q8_-QDkAEdy0Rd6V_tf1-Q"/>
+ <Cpp:CppPtr xmi:id="_Wns3QDkAEdy0Rd6V_tf1-Q" base_parameter="_RLwL8DkAEdy0Rd6V_tf1-Q"/>
+ <l2:Create xmi:id="__drVwDkBEdyuzNpSiGPe4w"/>
+ <l2:Destroy xmi:id="_AQ7-sDkCEdyuzNpSiGPe4w"/>
+ <Cpp:CppInclude xmi:id="_tNGmwDkUEdyuzNpSiGPe4w" body="#include &lt;OS_AL/Time/Timer.h>&#xD;&#xA;#include &lt;OS_AL/Time/TimeVal.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#include &lt;limits.h>&#xD;&#xA;#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#if defined SYSTEM_Solaris&#xD;&#xA;&#x9;// todo: reconsider using class Mutex&#xD;&#xA;&#x9;#include &lt;synch.h>&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#if defined SYNCHRO_POSIX4&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#define TimerNotAssigned&#x9;((timer_t) -1)&#xD;&#xA;" header="#include &lt;sys/types.h>" base_class="_ETakYDj8Edy0Rd6V_tf1-Q"/>
+ <l2:Create xmi:id="_776kkDkUEdyuzNpSiGPe4w" base_BehavioralFeature="_4_tSIDkUEdyuzNpSiGPe4w"/>
+ <l2:Destroy xmi:id="_8sV78DkUEdyuzNpSiGPe4w" base_BehavioralFeature="_5IDV0DkUEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_mLyDoDkVEdyuzNpSiGPe4w" base_parameter="_B5PeoDkVEdyuzNpSiGPe4w"/>
+ <Cpp:CppPtr xmi:id="_mLyDoTkVEdyuzNpSiGPe4w" base_parameter="_B5PeoDkVEdyuzNpSiGPe4w"/>
+ <Cpp:CppPtr xmi:id="_nzDjcDkVEdyuzNpSiGPe4w" base_parameter="_B9j98DkVEdyuzNpSiGPe4w"/>
+ <Cpp:CppPtr xmi:id="_1NOpkDkVEdyuzNpSiGPe4w" base_parameter="_GD1PwDkVEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_sazVMDkWEdyuzNpSiGPe4w" base_parameter="_blSJkDkWEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_sazVMTkWEdyuzNpSiGPe4w" base_parameter="_blSJkDkWEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_8r0soDkWEdyuzNpSiGPe4w" base_parameter="_1vwSYDkWEdyuzNpSiGPe4w"/>
+ <Cpp:CppPtr xmi:id="_8r0soTkWEdyuzNpSiGPe4w" base_parameter="_1vwSYDkWEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_DF6bMDkXEdyuzNpSiGPe4w" base_parameter="_10YTsDkWEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_DF6bMTkXEdyuzNpSiGPe4w" base_parameter="_10YTsDkWEdyuzNpSiGPe4w"/>
+ <Cpp:CppDefault xmi:id="_IuhpgDkXEdyuzNpSiGPe4w" value="1" base_parameter="_142kADkWEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_wNg8YDkXEdyuzNpSiGPe4w" base_parameter="_efgpkDkXEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_xNcIUDkXEdyuzNpSiGPe4w" base_parameter="_eio2EDkXEdyuzNpSiGPe4w"/>
+ <Cpp:CppInclude xmi:id="_ceH5QDkaEdyuzNpSiGPe4w" body="&#xD;&#xA;" header="#if defined SYSTEM_VxWorks&#xD;&#xA;#&#x9;include &lt;sys/times.h>&#x9;&#x9;// -VxW: definition of 'struct timeval'&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#include &lt;time.h>&#xD;&#xA;#include &lt;sys/time.h>&#xD;&#xA;#include &lt;sys/types.h>&#xD;&#xA;&#xD;&#xA;// TODO: operators that enable marshalling into message buffer&#xD;&#xA;#if defined __GNUC__&#xD;&#xA;// LeftShiftPrint (TimeVal);&#xD;&#xA;// LeftShiftTrace (TimeVal);&#xD;&#xA;#endif&#x9;// __GNUC__&#xD;&#xA;" base_class="_FuKEEDj8Edy0Rd6V_tf1-Q"/>
+ <l2:Create xmi:id="_7rTG8DkaEdyuzNpSiGPe4w" base_BehavioralFeature="_t7qHIDkaEdyuzNpSiGPe4w"/>
+ <l2:Create xmi:id="_8orVMDkaEdyuzNpSiGPe4w" base_BehavioralFeature="_uEc2wDkaEdyuzNpSiGPe4w"/>
+ <l2:Create xmi:id="_9PZ-ADkaEdyuzNpSiGPe4w" base_BehavioralFeature="_uKtPwDkaEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_Iat_4DkbEdyuzNpSiGPe4w" base_parameter="_DgL_kDkbEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_Ia3J0DkbEdyuzNpSiGPe4w" base_parameter="_DgL_kDkbEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_Rm9F8DkbEdyuzNpSiGPe4w" base_parameter="_LywSsDkbEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_8RKFsDkdEdyuzNpSiGPe4w" base_parameter="_ndW8EDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_-WFK0DkdEdyuzNpSiGPe4w" base_parameter="_nhPWgDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_-WFK0TkdEdyuzNpSiGPe4w" base_parameter="_nhPWgDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_BZcOIDkeEdyuzNpSiGPe4w" base_parameter="_1jVYQDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_CTs28DkeEdyuzNpSiGPe4w" base_parameter="_1lt94DkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_CTs28TkeEdyuzNpSiGPe4w" base_parameter="_1lt94DkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_FsOR8DkeEdyuzNpSiGPe4w" base_parameter="_8FwjcDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_HO3wcDkeEdyuzNpSiGPe4w" base_parameter="_8JVb4DkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_HO3wcTkeEdyuzNpSiGPe4w" base_parameter="_8JVb4DkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_NDs10DkeEdyuzNpSiGPe4w" base_operation="_T6uC4DkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_Qn_b8DkeEdyuzNpSiGPe4w" base_parameter="_EkwJADkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_Qn_b8TkeEdyuzNpSiGPe4w" base_parameter="_EkwJADkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_SruOQDkeEdyuzNpSiGPe4w" base_operation="_T_yJEDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_TijvoDkeEdyuzNpSiGPe4w" base_parameter="_ZsKAkDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_TijvoTkeEdyuzNpSiGPe4w" base_parameter="_ZsKAkDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_cAhacDkeEdyuzNpSiGPe4w" base_operation="_UDgLcDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_dv_M8DkeEdyuzNpSiGPe4w" base_parameter="_lppGQDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_dv_M8TkeEdyuzNpSiGPe4w" base_parameter="_lppGQDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_fATlUDkeEdyuzNpSiGPe4w" base_operation="_UKNQYDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_f2sawDkeEdyuzNpSiGPe4w" base_parameter="_pFuyoDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_f2sawTkeEdyuzNpSiGPe4w" base_parameter="_pFuyoDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_hEx-gDkeEdyuzNpSiGPe4w" base_operation="_UPk4kDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_iUWwADkeEdyuzNpSiGPe4w" base_parameter="_tPIQ8DkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_iUWwATkeEdyuzNpSiGPe4w" base_parameter="_tPIQ8DkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_jPgwsDkeEdyuzNpSiGPe4w" base_operation="_UVFqsDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_kA_Q8DkeEdyuzNpSiGPe4w" base_parameter="_wVT-wDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_kA_Q8TkeEdyuzNpSiGPe4w" base_parameter="_wVT-wDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_lCtMoDkeEdyuzNpSiGPe4w" base_operation="_UcFqkDkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_mg4a0DkeEdyuzNpSiGPe4w" base_parameter="_y4CaMDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_mg4a0TkeEdyuzNpSiGPe4w" base_parameter="_y4CaMDkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_n354IDkeEdyuzNpSiGPe4w" base_operation="_Us7i8DkcEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_pOLukDkeEdyuzNpSiGPe4w" base_parameter="_1MAn8DkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_pOVfkDkeEdyuzNpSiGPe4w" base_parameter="_1MAn8DkdEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_OlhjADkgEdyuzNpSiGPe4w" base_operation="_9jMDYDkfEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="__Hbn4DkgEdyuzNpSiGPe4w" base_operation="_hArPsDkgEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_AAWz8DkhEdyuzNpSiGPe4w" base_operation="_hIbdgDkgEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_AsndADkhEdyuzNpSiGPe4w" base_operation="_hPbdYDkgEdyuzNpSiGPe4w"/>
+ <Cpp:CppInline xmi:id="_CMynkDknEdyuzNpSiGPe4w" base_operation="_q8lQcDkmEdyuzNpSiGPe4w"/>
+ <Cpp:CppInline xmi:id="_GL6IgDknEdyuzNpSiGPe4w" base_operation="_rCsfgDkmEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="_J0q-8DknEdyuzNpSiGPe4w" base_parameter="_0LugkDkmEdyuzNpSiGPe4w"/>
+ <Cpp:CppRef xmi:id="_LNoV8DknEdyuzNpSiGPe4w" base_parameter="_4lNpUDkmEdyuzNpSiGPe4w"/>
+ <l2:Create xmi:id="_YqZrwDnlEdyuzNpSiGPe4w"/>
+ <l2:Create xmi:id="_ZbRvEDnlEdyuzNpSiGPe4w"/>
+ <l2:Create xmi:id="_aJdqwDnlEdyuzNpSiGPe4w"/>
+ <l2:Destroy xmi:id="_a39IcDnlEdyuzNpSiGPe4w"/>
+ <Cpp:CppInclude xmi:id="_57kQoE_BEdy2tpS719xBwQ" body="#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/Thread.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Util/BString500.h>&#xD;&#xA;&#xD;&#xA;#include &lt;stdlib.h>&#xD;&#xA;#include &lt;stdio.h>&#xD;&#xA;#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#if defined SYSTEM_Solaris&#xD;&#xA;&#x9;#include &lt;sys/priocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/rtpriocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/tspriocntl.h>&#xD;&#xA;&#x9;int posixPriorityNumbering;&#xD;&#xA;#elif defined SYSTEM_POSIX4 || defined SYSTEM_Linux&#xD;&#xA;&#x9;#include &lt;sys/resource.h>&#x9;&#x9;// Linux&#xD;&#xA;&#x9;#include &lt;sched.h>&#xD;&#xA;&#x9;int posixPriorityNumbering;&#xD;&#xA;#elif defined SYSTEM_VxWorks&#xD;&#xA;&#x9;#include &lt;envLib.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;sched.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;extern int posixPriorityNumbering;&#xD;&#xA;#else&#xD;&#xA;&#x9;#error Define SYSTEM_POSIX4 | SYSTEM_Solaris | SYSTEM_VxWorks | SYSTEM_Linux&#xD;&#xA;#endif&#xD;&#xA;" header="&#xD;&#xA;// for getpid, getppid&#xD;&#xA;#include &lt;unistd.h>&#x9;&#x9;&#xD;&#xA;&#xD;&#xA;&#xD;&#xA;#define ABANDON_SIG&#x9;SIGTERM&#x9;// ==> exit(SUCCESS)&#xD;&#xA;#define ExitERR_SIG&#x9;SIGABRT&#x9;// ==> exit(FAILURE) + core&#xD;&#xA;#define ABORT_SIG&#x9;SIGINT&#x9;// ==> exit(FAILURE) [usually by Control-C on controlling terminal&#xD;&#xA;#define ABORT2_SIG&#x9;SIGQUIT&#x9;// ==> exit(FAILURE) + core [usually by Control-| on controlling terminal&#xD;&#xA;&#xD;&#xA;#define OSAL_ERROR(msg) OS_AL::ProcessingResources::ProDesc::exitErr (__LINE__, __FILE__, msg)&#xD;&#xA;&#xD;&#xA;#ifdef SYSTEM_VxWorks&#xD;&#xA;&#x9;typedef int id_t;&#xD;&#xA;&#x9;#include &lt;OS_AL/ProcessingResources/Thread.h>&#xD;&#xA;#elif defined SYSTEM_Solaris || defined SYSTEM_Linux&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#include &lt;signal.h>&#xD;&#xA;" base_class="_oSgIME_BEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_uIkuQE_CEdy2tpS719xBwQ" value="ExitERR_SIG" base_parameter="_oVPdsE_CEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_3ZDbIE_CEdy2tpS719xBwQ" base_parameter="_w5c6cE_CEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_3ZMlEE_CEdy2tpS719xBwQ" base_parameter="_w5c6cE_CEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_WlrPME_DEdy2tpS719xBwQ" base_parameter="_5wJ1YE_CEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_WlrPMU_DEdy2tpS719xBwQ" base_parameter="_5wJ1YE_CEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_YiZakE_DEdy2tpS719xBwQ" base_parameter="_5y1V8E_CEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_YiZakU_DEdy2tpS719xBwQ" base_parameter="_5y1V8E_CEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_mKtqYE_DEdy2tpS719xBwQ" base_parameter="_bmpOsE_DEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_mKtqYU_DEdy2tpS719xBwQ" base_parameter="_bmpOsE_DEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_nvJRkE_DEdy2tpS719xBwQ" value="10" base_parameter="_bolIYE_DEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_zMI5UE_DEdy2tpS719xBwQ" base_parameter="_rj1EIE_DEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_zMI5UU_DEdy2tpS719xBwQ" base_parameter="_rj1EIE_DEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_AhZDME_EEdy2tpS719xBwQ" base_parameter="_5by5gE_DEdy2tpS719xBwQ" declaration="**"/>
+ <Cpp:CppRef xmi:id="_ZreGAE_EEdy2tpS719xBwQ" base_parameter="_T-YnYE_EEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_i9lKkE_EEdy2tpS719xBwQ" base_parameter="_clSLwE_EEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_i9u7kE_EEdy2tpS719xBwQ" base_parameter="_clSLwE_EEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_5-7J0E_FEdy2tpS719xBwQ" base_parameter="_wb-M4E_FEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_5-7J0U_FEdy2tpS719xBwQ" base_parameter="_wb-M4E_FEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_89qL0E_FEdy2tpS719xBwQ" base_parameter="_wfQKYE_FEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_89qL0U_FEdy2tpS719xBwQ" base_parameter="_wfQKYE_FEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_LGUIkE_GEdy2tpS719xBwQ" base_parameter="_BiBu4E_GEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_LGUIkU_GEdy2tpS719xBwQ" base_parameter="_BiBu4E_GEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_M2rS8E_GEdy2tpS719xBwQ" base_parameter="_BlTsYE_GEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_M2rS8U_GEdy2tpS719xBwQ" base_parameter="_BlTsYE_GEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_DtBU4E_IEdy2tpS719xBwQ" base_parameter="_9L7mcE_HEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_JwdeAE_IEdy2tpS719xBwQ" base_parameter="_G6XaoE_IEdy2tpS719xBwQ" declaration="**"/>
+ <Cpp:CppPtr xmi:id="_s-l_sE_IEdy2tpS719xBwQ" base_property="_hkukcE_IEdy2tpS719xBwQ" declaration="**"/>
+ <Cpp:CppConst xmi:id="_U9T7gE_JEdy2tpS719xBwQ" base_parameter="_NHIpcE_JEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_U9T7gU_JEdy2tpS719xBwQ" base_parameter="_NHIpcE_JEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_55tV0E_JEdy2tpS719xBwQ" base_operation="_fBQXkE_HEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_6uKRkE_JEdy2tpS719xBwQ" base_operation="_fMk2wE_HEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_7YBt8E_JEdy2tpS719xBwQ" base_operation="_fRpkAE_HEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_8FB94E_JEdy2tpS719xBwQ" base_operation="_fWj5ME_HEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_8xvS4E_JEdy2tpS719xBwQ" base_operation="_fbomcE_HEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_9gOwkE_JEdy2tpS719xBwQ" base_operation="_ffqK0E_HEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_-NYKcE_JEdy2tpS719xBwQ" base_operation="_fkkgAE_HEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_2z4X4E_KEdy2tpS719xBwQ" value="false" base_property="_jLVgcE_JEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_4AeG0E_KEdy2tpS719xBwQ" value="0" base_property="_xLHqgE_IEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_5Y-x4E_KEdy2tpS719xBwQ" value="1" base_property="_xO_d4E_IEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_7Fdh0E_KEdy2tpS719xBwQ" value="0" base_property="_xY-gUE_IEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_8icdME_KEdy2tpS719xBwQ" value="0" base_property="_xVsi0E_IEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_-LzAoE_KEdy2tpS719xBwQ" value="-1" base_property="_es7bcE_JEdy2tpS719xBwQ"/>
+ <Cpp:CppInclude xmi:id="_bphYAE_NEdy2tpS719xBwQ" body="#include &lt;OS_AL/ProcessingResources/System.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;#include &lt;OS_AL/Time/DebugTimer.h>&#xD;&#xA;&#xD;&#xA;#if defined SYSTEM_Solaris&#xD;&#xA;&#x9;#include &lt;sys/priocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/rtpriocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/tspriocntl.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYSTEM_VxWorks&#xD;&#xA;&#x9;#include &lt;configAll.h>&#x9;//-VxW&#xD;&#xA;&#xD;&#xA;#elif defined SYSTEM_Cygwin&#xD;&#xA; #include &lt;sys/unistd.h>&#x9;&#x9;// for _SC_SEM_NSEMS_MAX and _SC_OPEN_MQ_MAX&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#if defined SYSTEM_Linux || defined SYSTEM_Solaris&#xD;&#xA;&#x9;#include &lt;sys/utsname.h>&#xD;&#xA;#endif&#xD;&#xA;" header="#if defined SYSTEM_POSIX4 || defined SYSTEM_Linux&#xD;&#xA;&#x9;#define SYS_NMLN&#x9;250&#x9;&#x9;&#x9;// vérif. s'il existe&#xD;&#xA;&#x9;#include &lt;limits.h>&#xD;&#xA;&#x9;#include &lt;unistd.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYSTEM_Solaris&#xD;&#xA;&#x9;#include &lt;sys/utsname.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYSTEM_VxWorks&#xD;&#xA;&#x9;#include &lt;vxWorks.h>&#xD;&#xA;&#x9;#include &lt;configAll.h>&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#define SYS_NMLN&#x9;250&#x9;&#x9;// vérif. s'il existe&#xD;&#xA;#else&#xD;&#xA;&#x9;SYSTEM_x_not_defined;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_TVGDsE_NEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_cZtCUE_OEdy2tpS719xBwQ" base_parameter="_YIRCUE_OEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_cZtCUU_OEdy2tpS719xBwQ" base_parameter="_YIRCUE_OEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_5ufNME_dEdy2tpS719xBwQ" base_parameter="_1uCPgE_dEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_GgHsoE_eEdy2tpS719xBwQ" base_parameter="__yhMME_dEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_HZ7pgE_eEdy2tpS719xBwQ" base_parameter="_BjxHYE_eEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_IQBkAE_eEdy2tpS719xBwQ" base_parameter="_DiSCgE_eEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_u1BT0E_eEdy2tpS719xBwQ" base_property="_c8Tl0E_eEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_vniV4E_eEdy2tpS719xBwQ" base_property="_c_4eQE_eEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_wNFS8E_eEdy2tpS719xBwQ" base_property="_dC25wE_eEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_w0IE0E_eEdy2tpS719xBwQ" base_property="_dF18UE_eEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_xecNIE_eEdy2tpS719xBwQ" base_property="_dJHSwE_eEdy2tpS719xBwQ"/>
+ <Cpp:CppInclude xmi:id="_UXASAE_gEdy2tpS719xBwQ" body="#include &lt;stdio.h>&#xD;&#xA;#if defined THREAD_Solaris&#xD;&#xA;&#x9;#include &lt;sys/priocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/rtpriocntl.h>&#xD;&#xA;&#x9;#include &lt;sys/tspriocntl.h>&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_POSIX4&#xD;&#xA;&#x9;#include &lt;sys/resource.h>&#xD;&#xA;&#xD;&#xA;#endif&#xD;&#xA;#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#define ThExecOUT&#x9;-2&#xD;&#xA;&#xD;&#xA;// TODO: other sequence, avoid manual includes if possible&#xD;&#xA;#include &lt;OS_AL/Sets/SetOf.h>&#xD;&#xA;#include &lt;OS_AL/Util/BString50.h>&#xD;&#xA;&#xD;&#xA;OS_AL::Sets::SetOf &lt;OS_AL::ProcessingResources::Thread *> set_of_threads;&#xD;&#xA;&#xD;&#xA;const static OS_AL::Util::BString50 threadName_main (&quot;Main&quot;);&#xD;&#xA;" header="#define CancelThSIG&#x9;SIGQUIT&#x9;&#x9;// by waiting for availability of thread-cancellation&#xD;&#xA;#define DefaultExecPrio&#x9;-1&#xD;&#xA;&#xD;&#xA;#if defined THREAD_POSIX4&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;&#x9;#include &lt;sys/procfs.h> // lwpid_t type declaration&#xD;&#xA;&#x9;typedef struct sched_param SchedParam;&#xD;&#xA;&#x9;typedef pthread_t ThreadId;&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_Solaris&#xD;&#xA;&#x9;#include &lt;thread.h>&#xD;&#xA;&#x9;typedef thread_t ThreadId;&#xD;&#xA;&#x9;typedef struct&#xD;&#xA;&#x9;{&#xD;&#xA;&#x9;&#x9;int sched_priority;&#xD;&#xA;&#x9;} SchedParam;&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_VxWorks&#xD;&#xA;&#x9;#include &lt;vxWorks.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;configAll.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;signal.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;sched.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;taskLib.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;taskVarLib.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;typedef int ThreadId;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;typedef struct sched_param SchedParam;&#xD;&#xA;#else&#xD;&#xA;&#x9;THREAD_x_not_defined;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ <Cpp:CppConst xmi:id="_EEa-4E_hEdy2tpS719xBwQ" base_parameter="_srl3QE_gEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_EEkv4E_hEdy2tpS719xBwQ" base_parameter="_srl3QE_gEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_FnXYUE_hEdy2tpS719xBwQ" base_parameter="_suk50E_gEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_HRxEoE_hEdy2tpS719xBwQ" base_parameter="_s1R-wE_gEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_KKF8oE_hEdy2tpS719xBwQ" value="DefaultExecPrio" base_parameter="_s423ME_gEdy2tpS719xBwQ"/>
+ <l2:Create xmi:id="_VTHfgE_hEdy2tpS719xBwQ" base_BehavioralFeature="_oCK1EE_gEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_mhqPIE_hEdy2tpS719xBwQ" base_parameter="_X1168E_hEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_mh0AIE_hEdy2tpS719xBwQ" base_parameter="_X1168E_hEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_oPoz4E_hEdy2tpS719xBwQ" base_parameter="_X4XqgE_hEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_rUoO4E_hEdy2tpS719xBwQ" value="NULL" base_parameter="_X4XqgE_hEdy2tpS719xBwQ"/>
+ <l2:Create xmi:id="_zCc2ME_hEdy2tpS719xBwQ" base_BehavioralFeature="_VpnT8E_hEdy2tpS719xBwQ"/>
+ <l2:Destroy xmi:id="_0IfRME_hEdy2tpS719xBwQ" base_BehavioralFeature="_vOOWoE_hEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_IYwFYE_iEdy2tpS719xBwQ" base_parameter="_BxQ0AE_iEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_m7pnAE_iEdy2tpS719xBwQ" base_parameter="_h151ME_iEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_m7pnAU_iEdy2tpS719xBwQ" base_parameter="_h151ME_iEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_7VcKoE_iEdy2tpS719xBwQ" base_parameter="_qgiDAE_iEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_7VcKoU_iEdy2tpS719xBwQ" base_parameter="_qgiDAE_iEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_D2YQ8E_jEdy2tpS719xBwQ" base_operation="_dS4V8E_iEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_kYiUkE_jEdy2tpS719xBwQ" base_parameter="_diu6YE_jEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_ySu-kE_jEdy2tpS719xBwQ" base_operation="_mdJ3sE_jEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_H0zY4E_kEdy2tpS719xBwQ" base_parameter="__Um5cE_jEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_I2XjkE_kEdy2tpS719xBwQ" base_parameter="__YLx4E_jEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_grzusE_kEdy2tpS719xBwQ" base_parameter="_dhdSkE_kEdy2tpS719xBwQ" declaration="**"/>
+ <Cpp:CppPtr xmi:id="_ig59ME_mEdy2tpS719xBwQ" base_parameter="_WqIjgE_mEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_kxSrcE_mEdy2tpS719xBwQ" value="DefaultExecPrio" base_parameter="_WuKH4E_mEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_FvULsE_nEdy2tpS719xBwQ" base_parameter="_9hJ3cE_mEdy2tpS719xBwQ"/>
+ <Cpp:CppRef xmi:id="_FvULsU_nEdy2tpS719xBwQ" base_parameter="_9hJ3cE_mEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_cS8wsE_nEdy2tpS719xBwQ" base_parameter="_VzWQAE_nEdy2tpS719xBwQ" declaration="**"/>
+ <Cpp:CppDefault xmi:id="_fYF8sE_nEdy2tpS719xBwQ" value="NULL" base_parameter="_VzWQAE_nEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_cm-DcE_oEdy2tpS719xBwQ" base_property="_Z47I0E_oEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_Y9YRIE_pEdy2tpS719xBwQ" value="SCHED_RR" base_property="_nyBcEE_nEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_apQkIE_pEdy2tpS719xBwQ" value="true" base_property="_u5djYE_oEdy2tpS719xBwQ"/>
+ <Cpp:CppConstInit xmi:id="_1BSAwE_pEdy2tpS719xBwQ" initialisation="&#x9;m_name (name),&#xD;&#xA;&#x9;m_semaphore (0),&#xD;&#xA;&#x9;m_threadId (0)&#xD;&#xA;#ifdef THREAD_Solaris&#xD;&#xA;&#x9;, m_lwpId (0)&#xD;&#xA;#endif&#xD;&#xA;" base_operation="_oCK1EE_gEdy2tpS719xBwQ"/>
+ <Cpp:CppConstInit xmi:id="_75KekE_pEdy2tpS719xBwQ" initialisation="&#x9;m_name (name),&#xD;&#xA;&#x9;m_semaphore (0),&#xD;&#xA;&#x9;m_threadId (0),&#xD;&#xA;#ifdef THREAD_Solaris&#xD;&#xA;&#x9;m_lwpId (0),&#xD;&#xA;#endif&#xD;&#xA;&#x9;m_joined (false)&#xD;&#xA;" base_operation="_VpnT8E_hEdy2tpS719xBwQ"/>
+ <Cpp:CppInclude xmi:id="_Q72YwE_rEdy2tpS719xBwQ" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#include &lt;errno.h>" header="#if defined THREAD_POSIX4&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;&#x9;#ifdef THREAD_Linux&#xD;&#xA;&#x9;&#x9;#include &lt;bits/local_lim.h>&#xD;&#xA;&#x9;#endif&#xD;&#xA;#elif defined THREAD_Solaris&#xD;&#xA;&#x9;#include &lt;thread.h>&#xD;&#xA;#elif defined THREAD_VxWorks&#xD;&#xA;&#x9;#define PTHREAD_STACK_MIN&#x9;WDB_SPAWN_STACK_SIZE&#xD;&#xA;#else&#xD;&#xA;&#x9;#error Define THREAD_POSIX4 | THREAD_Solaris | THREAD_VxWorks | THREAD_Linux&#xD;&#xA;#endif&#xD;&#xA;" base_class="_Saw1YDkDEdyuzNpSiGPe4w"/>
+ <l2:Create xmi:id="_cxbfoE_rEdy2tpS719xBwQ" base_BehavioralFeature="_YAjKkE_rEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_sTffUE_rEdy2tpS719xBwQ" base_operation="_f_9RIE_rEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_sTffUU_rEdy2tpS719xBwQ" base_operation="_f_9RIE_rEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_7RMNsE_rEdy2tpS719xBwQ" base_operation="_vxhFYE_rEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_8IoMAE_rEdy2tpS719xBwQ" base_parameter="_ztpjwE_rEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_-s-_IE_rEdy2tpS719xBwQ" base_operation="_v5HiME_rEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_-tIwIE_rEdy2tpS719xBwQ" base_operation="_v5HiME_rEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="__8thoE_rEdy2tpS719xBwQ" base_parameter="_2eX-8E_rEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_2fr7oE_tEdy2tpS719xBwQ" base_operation="_oN8UUE_tEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_3pvT8E_tEdy2tpS719xBwQ" base_operation="_ofORkE_tEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_3p5E8E_tEdy2tpS719xBwQ" base_operation="_ofORkE_tEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_AHaD0E_uEdy2tpS719xBwQ" base_property="_9TGJIE_tEdy2tpS719xBwQ"/>
+ <Cpp:CppInclude xmi:id="_PSuiAE_vEdy2tpS719xBwQ" body="#include &lt;OS_AL/Tracing/Trace.h>" header="#include &lt;errno.h>&#xD;&#xA;&#xD;&#xA;#if defined THREAD_POSIX4&#xD;&#xA;&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;&#x9;typedef pthread_key_t ThreadKey;&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_Solaris&#xD;&#xA;&#xD;&#xA;&#x9;#include &lt;thread.h>&#xD;&#xA;&#x9;#if defined(__SunOS_5_5) || defined(__SunOS_5_5_1)&#xD;&#xA;&#x9;&#x9;typedef thread_t pthread_t;&#xD;&#xA;&#x9;&#x9;typedef int pthread_once_t;&#xD;&#xA;&#x9;#endif&#xD;&#xA;&#x9;typedef thread_key_t ThreadKey;&#xD;&#xA;&#xD;&#xA;#elif defined THREAD_VxWorks&#xD;&#xA;&#xD;&#xA;&#x9;#include &lt;sched.h>&#x9;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;taskLib.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;#include &lt;taskVarLib.h>&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;typedef int pthread_t;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#x9;typedef int ThreadKey;&#x9;&#x9;&#x9;//-VxW&#xD;&#xA;&#xD;&#xA;#else&#xD;&#xA;&#xD;&#xA;&#x9;THREAD_x_not_defined;&#xD;&#xA;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_9-OUUE_uEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_gmJfsE_xEdy2tpS719xBwQ" base_operation="_ZtXqAE_xEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_hVYkQE_xEdy2tpS719xBwQ" base_operation="_Z2BPsE_xEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_icKmIE_xEdy2tpS719xBwQ" base_operation="_Z7FV4E_xEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_jVieIE_xEdy2tpS719xBwQ" base_operation="_aJrykE_xEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_taxBsE_xEdy2tpS719xBwQ" base_parameter="_n-EvgE_xEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_0mwuUE_xEdy2tpS719xBwQ" base_parameter="_vzzVoE_xEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_41YD0E_xEdy2tpS719xBwQ" base_parameter="_1w0tsE_xEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_FZJGYE_yEdy2tpS719xBwQ" base_operation="_ECHpEE_yEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_GuFgEE_yEdy2tpS719xBwQ" base_operation="_ETtIUE_yEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_E4NjkE_yEdy2tpS719xBwQ" base_operation="_D9gO0E_yEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_J_mUIE_yEdy2tpS719xBwQ" base_operation="_D9gO0E_yEdy2tpS719xBwQ"/>
+ <Cpp:CppInline xmi:id="_GA7fIE_yEdy2tpS719xBwQ" base_operation="_EJIQAE_yEdy2tpS719xBwQ"/>
+ <Cpp:CppConst xmi:id="_KrGvQE_yEdy2tpS719xBwQ" base_operation="_EJIQAE_yEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_YykZME_yEdy2tpS719xBwQ" base_property="_RwZ-AE_yEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_p4eKME_yEdy2tpS719xBwQ" base_parameter="_iqPB4E_yEdy2tpS719xBwQ"/>
+ <Cpp:CppPtr xmi:id="_zMONgE_yEdy2tpS719xBwQ" base_parameter="_tK4WIE_yEdy2tpS719xBwQ"/>
+ <Cpp:CppDefault xmi:id="_V6TWIE_zEdy2tpS719xBwQ" value="0" base_property="_1oie8E_yEdy2tpS719xBwQ"/>
+ <l2:Create xmi:id="_g-gccFCNEdy7Jv6DZICvHQ"/>
+ <l2:Create xmi:id="_ipy5kFCNEdy7Jv6DZICvHQ"/>
+ <l2:Destroy xmi:id="_nB7-gFCNEdy7Jv6DZICvHQ"/>
+ <l2:Create xmi:id="_ur5AMFCSEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_D2adMFCTEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_RQB3wFCVEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_8pmw4FCVEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_cGMeIFCXEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_n22owFCXEdyTutVzffQTmQ"/>
+ <Cpp:CppInclude xmi:id="_iOOrAFClEdyTutVzffQTmQ" body="#include &lt;OS_AL/Communication/MessageBuffer.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;&#xD;&#xA;// it is useful to align objects in the buffer to allow for quicker&#xD;&#xA;// memory transfer (which might not be employed by memcpy)&#xD;&#xA;#define MB_ALIGNMENT 4&#xD;&#xA;&#xD;&#xA;#ifdef USE_NETWORK_BYTE_ORDER&#xD;&#xA;MessageBuffer &amp; operator &lt;&lt; (MessageBuffer &amp; msg, int value)&#xD;&#xA;{&#xD;&#xA;&#x9;byte value_buf[4];&#xD;&#xA;&#x9;value_buf[3] = value &amp; 0xff; value >>= 8;&#xD;&#xA;&#x9;value_buf[2] = value &amp; 0xff; value >>= 8;&#xD;&#xA;&#x9;value_buf[1] = value &amp; 0xff; value >>= 8;&#xD;&#xA;&#x9;value_buf[0] = value;&#xD;&#xA;&#x9;msg.addToBuffer (value_buf, 4);&#xD;&#xA;&#x9;return msg;&#xD;&#xA;};&#xD;&#xA;&#xD;&#xA;MessageBuffer &amp; operator >> (MessageBuffer &amp; msg, int &amp; value)&#xD;&#xA;{&#xD;&#xA;&#x9;byte value_buf[4];&#xD;&#xA;&#x9;msg.getFromBuffer (value_buf, 4);&#xD;&#xA;&#x9;value = value_buf[0] +&#xD;&#xA;&#x9;&#x9;(value_buf[1] &lt;&lt; 8) +&#xD;&#xA;&#x9;&#x9;(value_buf[1] &lt;&lt; 16) +&#xD;&#xA;&#x9;&#x9;(value_buf[2] &lt;&lt; 24);&#xD;&#xA;&#x9;return msg;&#xD;&#xA;};&#xD;&#xA;#endif&#xD;&#xA;" header="#define MAX_MESSAGE_SIZE 800&#xD;&#xA;&#xD;&#xA;/**&#xD;&#xA; * handle hetereogeneous network configurations (currently incomplete)&#xD;&#xA; */&#xD;&#xA;#ifdef USE_NETWORK_BYTE_ORDER&#xD;&#xA;&#x9;MessageBuffer &amp; operator &lt;&lt; (MessageBuffer &amp; msg, int value);&#xD;&#xA;&#x9;MessageBuffer &amp; operator >> (MessageBuffer &amp; msg, int &amp; value);&#xD;&#xA;#endif&#xD;&#xA;" base_class="_LbxUEDRPEdy1p4IpsoZYqA"/>
+ <Cpp:CppConst xmi:id="_1MrSAFClEdyTutVzffQTmQ" base_parameter="_qqshAFClEdyTutVzffQTmQ"/>
+ <Cpp:CppRef xmi:id="_1MrSAVClEdyTutVzffQTmQ" base_parameter="_qqshAFClEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_8P4PAFClEdyTutVzffQTmQ" base_BehavioralFeature="_3v1yUFClEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_8_twgFClEdyTutVzffQTmQ" base_BehavioralFeature="_oHiAsFClEdyTutVzffQTmQ"/>
+ <Cpp:CppInline xmi:id="_ASH8cFCmEdyTutVzffQTmQ" base_operation="_9XQt0FClEdyTutVzffQTmQ"/>
+ <Cpp:CppInline xmi:id="_Km-3cFCmEdyTutVzffQTmQ" base_operation="_FSpQAFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppInline xmi:id="_QRh_cFCmEdyTutVzffQTmQ" base_operation="_Olf7cFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppConst xmi:id="_Xe3v4FCmEdyTutVzffQTmQ" base_operation="_UH_6sFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppInline xmi:id="_Xe3v4VCmEdyTutVzffQTmQ" base_operation="_UH_6sFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppConst xmi:id="_YN9qgFCmEdyTutVzffQTmQ" base_operation="_UVQTkFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppInline xmi:id="_YN9qgVCmEdyTutVzffQTmQ" base_operation="_UVQTkFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppConst xmi:id="_scRW4FCmEdyTutVzffQTmQ" base_parameter="_lT2isFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppPtr xmi:id="_scRW4VCmEdyTutVzffQTmQ" base_parameter="_lT2isFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppPtr xmi:id="_6pse4FCmEdyTutVzffQTmQ" base_parameter="_04JXAFCmEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_ObP90FCnEdyTutVzffQTmQ" base_BehavioralFeature="_9ececFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppInline xmi:id="_QO4eoFCnEdyTutVzffQTmQ" base_operation="_9ececFCmEdyTutVzffQTmQ"/>
+ <Cpp:CppPtr xmi:id="_ztN_gFCnEdyTutVzffQTmQ" base_property="_iRkoAFCnEdyTutVzffQTmQ"/>
+ <Cpp:CppPtr xmi:id="_0kgM0FCnEdyTutVzffQTmQ" base_property="_iVcbYFCnEdyTutVzffQTmQ"/>
+ <Cpp:CppPtr xmi:id="_1TJbgFCnEdyTutVzffQTmQ" base_property="_iY4J4FCnEdyTutVzffQTmQ"/>
+ <l2:Create xmi:id="_rCIFYFCsEdyqzLG48ixyqA" base_BehavioralFeature="_i3atwFCsEdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_0NfowFCsEdyqzLG48ixyqA" base_parameter="_sZUh0FCsEdyqzLG48ixyqA"/>
+ <Cpp:CppRef xmi:id="_0NpZwFCsEdyqzLG48ixyqA" base_parameter="_sZUh0FCsEdyqzLG48ixyqA"/>
+ <l2:Create xmi:id="_3FZC8FCsEdyqzLG48ixyqA" base_BehavioralFeature="_k-Am0FCsEdyqzLG48ixyqA"/>
+ <Cpp:CppInline xmi:id="_EEzfsFCtEdyqzLG48ixyqA" base_operation="__McpoFCsEdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_QIAy4FCtEdyqzLG48ixyqA" base_parameter="_KUMaIFCtEdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_Tz6c4FCtEdyqzLG48ixyqA" base_operation="_JEUGoFCtEdyqzLG48ixyqA"/>
+ <Cpp:CppInline xmi:id="_Tz6c4VCtEdyqzLG48ixyqA" base_operation="_JEUGoFCtEdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_Yf5q4FCtEdyqzLG48ixyqA" base_operation="_V5vg8FCtEdyqzLG48ixyqA"/>
+ <Cpp:CppInline xmi:id="_Yf5q4VCtEdyqzLG48ixyqA" base_operation="_V5vg8FCtEdyqzLG48ixyqA"/>
+ <l2:Create xmi:id="_hfusoFCtEdyqzLG48ixyqA" base_BehavioralFeature="_cxNvEFCtEdyqzLG48ixyqA"/>
+ <Cpp:CppConstInit xmi:id="_4CE4MFCtEdyqzLG48ixyqA" initialisation="&#x9;MessageBuffer (NO_RESET)" base_operation="_i3atwFCsEdyqzLG48ixyqA"/>
+ <Cpp:CppConstInit xmi:id="_9REFkFCtEdyqzLG48ixyqA" initialisation="&#x9;MessageBuffer (NO_RESET)" base_operation="_cxNvEFCtEdyqzLG48ixyqA"/>
+ <Cpp:CppConstInit xmi:id="__L2-UFCtEdyqzLG48ixyqA" initialisation="&#x9;MessageBuffer (msg)" base_operation="_k-Am0FCsEdyqzLG48ixyqA"/>
+ <Cpp:CppInclude xmi:id="_LAexAFCwEdyqzLG48ixyqA" body="#include &lt;OS_AL/Communication/SharedMemory.h>&#xD;&#xA;#include &lt;OS_AL/Synchronization/SM_Mutex.h>&#xD;&#xA;#include &lt;OS_AL/Util/BString50.h>&#xD;&#xA;#include &lt;OS_AL/Util/BString500.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/Process.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#ifndef SYNCHRO_VxWorks&#xD;&#xA;&#xD;&#xA;// Extract from &lt;sys/ipc.h> &#xD;&#xA;// we use the compilation option -D_XOPEN_SOURCE to get shmdt(void*) defined&#xD;&#xA;// [todo: not true - don't use this option]&#xD;&#xA;extern &quot;C&quot;&#xD;&#xA;{&#xD;&#xA;&#x9;// #if defined(__STDC__) &amp;&amp; !defined(_KERNEL) &amp;&amp; !defined(_XOPEN_SOURCE)&#xD;&#xA;&#x9;key_t ftok (const char *, int);&#xD;&#xA;&#x9;// #endif&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;# include &lt;fcntl.h>&#xD;&#xA;&#xD;&#xA;#else //-VxW&#xD;&#xA;&#x9;//#define MultiCPU&#xD;&#xA;&#x9;#ifdef MultiCPU&#xD;&#xA;&#x9;&#x9;#include &lt;smMemLib.h>&#xD;&#xA;&#x9;#else // monoCPU&#xD;&#xA;&#x9;&#x9;//#define OutOfHeap&#xD;&#xA;&#x9;&#x9;#ifdef OutOfHeap&#xD;&#xA;&#x9;&#x9;&#x9;#include &lt;memLib.h>&#xD;&#xA;&#x9;&#x9;#endif&#xD;&#xA;&#x9;#endif&#xD;&#xA;#endif&#xD;&#xA;" header="#if defined SYNCHRO_Linux&#xD;&#xA;&#x9;#include &lt;sys/stat.h>&#xD;&#xA;&#x9;#include &lt;sys/mman.h>&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYNCHRO_Cygwin&#xD;&#xA;&#x9;#include &lt;cygwin/shm.h>&#xD;&#xA;&#x9;#include &lt;sys/mman.h>&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;&#x9;&#xD;&#xA;#elif defined SYNCHRO_Solaris || defined SYNCHRO_Cygwin&#xD;&#xA;&#x9;#include &lt;sys/stat.h>&#xD;&#xA;&#x9;#include &lt;sys/shm.h>&#xD;&#xA;&#x9;#include &lt;sys/mman.h>&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;&#xD;&#xA;#elif defined SYNCHRO_VxWorks&#xD;&#xA;&#x9;&#xD;&#xA;#else&#xD;&#xA;&#x9;# error SYNCHRO_x??? not defined&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#if defined SYNCHRO_VxWorks&#xD;&#xA;&#x9;typedef int Key;&#xD;&#xA;#else&#xD;&#xA;&#x9;typedef key_t Key;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_sq-yMFCvEdyqzLG48ixyqA"/>
+ <l2:Create xmi:id="_YkCcoFCwEdyqzLG48ixyqA" base_BehavioralFeature="_W9qUsFCwEdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_q0vz4FCwEdyqzLG48ixyqA" base_parameter="_bUnt4FCwEdyqzLG48ixyqA"/>
+ <Cpp:CppRef xmi:id="_q0vz4VCwEdyqzLG48ixyqA" base_parameter="_bUnt4FCwEdyqzLG48ixyqA"/>
+ <Cpp:CppDefault xmi:id="_tNCg8FCwEdyqzLG48ixyqA" value="FALSE" base_parameter="_bev6QFCwEdyqzLG48ixyqA"/>
+ <l2:Create xmi:id="_w4VuAFCwEdyqzLG48ixyqA" base_BehavioralFeature="_ZznOIFCwEdyqzLG48ixyqA"/>
+ <l2:Destroy xmi:id="_0VUyQFCwEdyqzLG48ixyqA" base_BehavioralFeature="_yFEm4FCwEdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_NshrEFCxEdyqzLG48ixyqA" base_parameter="_87L00FCwEdyqzLG48ixyqA"/>
+ <Cpp:CppRef xmi:id="_NshrEVCxEdyqzLG48ixyqA" base_parameter="_87L00FCwEdyqzLG48ixyqA"/>
+ <Cpp:CppDefault xmi:id="_SemS8FCxEdyqzLG48ixyqA" value="FALSE" base_parameter="_9MK3IFCwEdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_dt414FCxEdyqzLG48ixyqA" base_parameter="_bNjAEFCxEdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_oFmQkFCxEdyqzLG48ixyqA" base_parameter="_iRXBEFCxEdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_oFmQkVCxEdyqzLG48ixyqA" base_parameter="_iRXBEFCxEdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_0zNLoFCxEdyqzLG48ixyqA" base_parameter="_vhjEwFCxEdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_9D52gFCxEdyqzLG48ixyqA" base_operation="_7F2OYFCxEdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_UfunwFCyEdyqzLG48ixyqA" base_parameter="_-rLWUFCxEdyqzLG48ixyqA"/>
+ <Cpp:CppInline xmi:id="_ac7UEFC0EdyqzLG48ixyqA" base_operation="_LAqaYFC0EdyqzLG48ixyqA"/>
+ <Cpp:CppInline xmi:id="_YRmE8FC0EdyqzLG48ixyqA" base_operation="_KxUW0FC0EdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_cekbsFC0EdyqzLG48ixyqA" base_operation="_KxUW0FC0EdyqzLG48ixyqA"/>
+ <Cpp:CppInline xmi:id="_Y6R1kFC0EdyqzLG48ixyqA" base_operation="_K3bl4FC0EdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_dHPlQFC0EdyqzLG48ixyqA" base_operation="_K3bl4FC0EdyqzLG48ixyqA"/>
+ <Cpp:CppInline xmi:id="_ZtsPgFC0EdyqzLG48ixyqA" base_operation="_K8DAIFC0EdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_eAdsQFC0EdyqzLG48ixyqA" base_operation="_K8DAIFC0EdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_02JDgFC0EdyqzLG48ixyqA" base_property="_qTs_gFC0EdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_jYnnQFC1EdyqzLG48ixyqA" base_property="_gOHaIFC1EdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_kMxoEFC1EdyqzLG48ixyqA" base_property="_gR1cgFC1EdyqzLG48ixyqA"/>
+ <Cpp:CppPtr xmi:id="_k3sNUFC1EdyqzLG48ixyqA" base_property="_gVRLAFC1EdyqzLG48ixyqA"/>
+ <Cpp:CppDefault xmi:id="_Ou8_IFC2EdyqzLG48ixyqA" value="13091969" base_property="_VPz5gFC1EdyqzLG48ixyqA"/>
+ <Cpp:CppConstInit xmi:id="_VNNcAFC2EdyqzLG48ixyqA" initialisation="&#x9;m_name (&quot;-&quot;),&#xD;&#xA;&#x9;m_mutex (NULL),&#xD;&#xA;&#x9;m_key (-1),&#xD;&#xA;&#x9;m_id (-1)&#xD;&#xA;" base_operation="_W9qUsFCwEdyqzLG48ixyqA"/>
+ <Cpp:CppConstInit xmi:id="_ZB5OkFC2EdyqzLG48ixyqA" initialisation="&#x9;m_name (name),&#xD;&#xA;&#x9;m_mutex (NULL),&#xD;&#xA;&#x9;m_key (-1),&#xD;&#xA;&#x9;m_id (-1)&#xD;&#xA;" base_operation="_ZznOIFCwEdyqzLG48ixyqA"/>
+ <Cpp:CppVisibility xmi:id="_ATTYcFC3EdyqzLG48ixyqA" value="public" base_generalization="_TmRe8FCsEdyqzLG48ixyqA"/>
+ <Cpp:CppInclude xmi:id="_3d4acFC3EdyqzLG48ixyqA" header="#ifdef SYSTEM_Linux&#xD;&#xA;&#x9;// [todo: check, if we can use the pthread barrier for Solaris as well]&#xD;&#xA;&#x9;#define USE_PTHREAD_BARRIER&#xD;&#xA;#endif&#xD;&#xA;&#xD;&#xA;#ifdef USE_PTHREAD_BARRIER&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;#endif&#xD;&#xA;" base_class="_jXTGsFC3EdyqzLG48ixyqA"/>
+ <l2:Destroy xmi:id="_HaeaAFC4EdyqzLG48ixyqA" base_BehavioralFeature="_FQyJoFC4EdyqzLG48ixyqA"/>
+ <Cpp:CppConst xmi:id="_QbnDUFC4EdyqzLG48ixyqA" base_parameter="_IsliIFC4EdyqzLG48ixyqA"/>
+ <Cpp:CppRef xmi:id="_QbnDUVC4EdyqzLG48ixyqA" base_parameter="_IsliIFC4EdyqzLG48ixyqA"/>
+ <l2:Create xmi:id="_ShH-UFC4EdyqzLG48ixyqA" base_BehavioralFeature="_FFwlYFC4EdyqzLG48ixyqA"/>
+ <Cpp:CppInline xmi:id="_WSYCYFC4EdyqzLG48ixyqA" base_operation="_VNO_QFC4EdyqzLG48ixyqA"/>
+ <Cpp:CppRef xmi:id="_eyuS0FC4EdyqzLG48ixyqA" base_parameter="_XPBQ0FC4EdyqzLG48ixyqA"/>
+ <l2:Create xmi:id="_b68GAFC7EdyqzLG48ixyqA"/>
+ <l2:Destroy xmi:id="_ci4PwFC7EdyqzLG48ixyqA"/>
+ <l2:Create xmi:id="_jdVAgFFXEdyqzLG48ixyqA"/>
+ <l2:Destroy xmi:id="_kIGb0FFXEdyqzLG48ixyqA"/>
+ <Cpp:CppInclude xmi:id="_SQ2h4FFhEdyjobZYtXo9NQ" body="#include &lt;OS_AL/Synchronization/Mutex.h>&#xD;&#xA;#include &lt;OS_AL/Synchronization/SM_Mutex.h>&#xD;&#xA;#include &lt;OS_AL/Communication/SharedMemory.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/Thread.h>&#xD;&#xA;" header="#include &lt;signal.h>" base_class="_5HEaAFFgEdyjobZYtXo9NQ"/>
+ <Cpp:CppPtr xmi:id="_pVQ4sFFhEdyjobZYtXo9NQ" base_parameter="_lihm4FFhEdyjobZYtXo9NQ"/>
+ <Cpp:CppPtr xmi:id="_yJRsAFFhEdyjobZYtXo9NQ" base_parameter="_u2uWIFFhEdyjobZYtXo9NQ"/>
+ <Cpp:CppConst xmi:id="_0F_3YFFhEdyjobZYtXo9NQ" base_parameter="_u2uWIFFhEdyjobZYtXo9NQ"/>
+ <l2:Create xmi:id="_5sYREFFhEdyjobZYtXo9NQ" base_BehavioralFeature="_df1i0FFhEdyjobZYtXo9NQ"/>
+ <l2:Create xmi:id="_6p63YFFhEdyjobZYtXo9NQ" base_BehavioralFeature="_dnb_oFFhEdyjobZYtXo9NQ"/>
+ <l2:Destroy xmi:id="_7Ty60FFhEdyjobZYtXo9NQ" base_BehavioralFeature="_du4rcFFhEdyjobZYtXo9NQ"/>
+ <Cpp:CppPtr xmi:id="_FVb-4FFiEdyjobZYtXo9NQ" base_property="__4miwFFhEdyjobZYtXo9NQ"/>
+ <Cpp:CppInclude xmi:id="_xoZ-IFFiEdyjobZYtXo9NQ" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;" header="# include &lt;fcntl.h>&#xD;&#xA;&#xD;&#xA;#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Solaris || defined SYNCHRO_Linux&#xD;&#xA;&#x9;// see section 11 of POSIX standard&#xD;&#xA;&#x9;// see fcntl(2) or lockf(3C) of Solaris reference manual&#xD;&#xA;&#x9;#include &lt;sys/types.h>&#xD;&#xA;&#x9;#include &lt;unistd.h>&#xD;&#xA;#elif defined SYNCHRO_VxWorks&#xD;&#xA;&#x9;#include &lt;ioLib.h>&#xD;&#xA;&#x9;#define fcntl(a1, a2, a3) ioctl (a1, a2, (int) a3)&#x9;// use ioctl (works?)&#xD;&#xA;#else&#xD;&#xA;&#x9;#error SYNCHRO_??? not defined&#xD;&#xA;#endif&#xD;&#xA;" base_class="_qIyBkFC3EdyqzLG48ixyqA"/>
+ <Cpp:CppDefault xmi:id="_VKq7wFFuEdyjobZYtXo9NQ" value="TRUE" base_parameter="_OATm0FFuEdyjobZYtXo9NQ"/>
+ <l2:Create xmi:id="_Xly6YFFuEdyjobZYtXo9NQ" base_BehavioralFeature="_F6fWQFFuEdyjobZYtXo9NQ"/>
+ <Cpp:CppPtr xmi:id="_3NPCMFFuEdyjobZYtXo9NQ" base_parameter="_wwdzEFFuEdyjobZYtXo9NQ"/>
+ <Cpp:CppConstInit xmi:id="_OcrkUFFvEdyjobZYtXo9NQ" initialisation="&#x9;m_lockType (exclusive ? F_WRLCK : F_RDLCK),&#xD;&#xA;&#x9;m_fd (fileDesc)&#xD;&#xA;" base_operation="_F6fWQFFuEdyjobZYtXo9NQ"/>
+ <l2:Create xmi:id="_6UX80FFvEdyjobZYtXo9NQ" base_BehavioralFeature="_4NODEFFvEdyjobZYtXo9NQ"/>
+ <l2:Destroy xmi:id="_69DGYFFvEdyjobZYtXo9NQ" base_BehavioralFeature="_4cRLsFFvEdyjobZYtXo9NQ"/>
+ <l2:Create xmi:id="_RJcQEFFwEdyjobZYtXo9NQ" base_BehavioralFeature="_OEl_AFFwEdyjobZYtXo9NQ"/>
+ <Cpp:CppPtr xmi:id="_M0zOQFF0EdyjobZYtXo9NQ" base_parameter="_Dd6-cFF0EdyjobZYtXo9NQ"/>
+ <Cpp:CppConst xmi:id="_M0zOQVF0EdyjobZYtXo9NQ" base_parameter="_Dd6-cFF0EdyjobZYtXo9NQ"/>
+ <Cpp:CppInclude xmi:id="_X2-iQFF0EdyjobZYtXo9NQ" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;#include &lt;stdio.h>&#xD;&#xA;&#xD;&#xA;#if defined SYNCHRO_VxWorks&#xD;&#xA;#define&#x9;SYNCHRO_VxWorks_MES&#x9;1&#x9;// Mutual-Exclusion Semaphore&#xD;&#xA;&#x9;// else Binary Semaphore&#xD;&#xA;#endif&#xD;&#xA;#include &lt;errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux || defined SYNCHRO_WIN32&#xA; #include &lt;pthread.h>&#xA; typedef pthread_mutex_t MutexId;&#xA;&#xA;#elif defined SYNCHRO_Solaris&#xA; #include &lt;synch.h>&#xA; typedef mutex_t MutexId;&#xA;&#xA;#elif defined SYNCHRO_VxWorks&#xA; #include &lt;semLib.h>&#xA; typedef SEM_ID MutexId;&#xA;&#xA;#else&#xA; #error SYNCHRO_X not defined&#xA;&#xA;#endif&#xA;" base_class="_Jj9usFC7EdyqzLG48ixyqA"/>
+ <Cpp:CppInclude xmi:id="_1Rt3EFF2EdyxP5ejovTmBw" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;" header="#if defined SYNCHRO_Solaris&#xD;&#xA;&#x9;#include &lt;synch.h>&#xD;&#xA;&#x9;typedef rwlock_t RWLockStruc;&#xD;&#xA;&#xD;&#xA;#elif defined SYNCHRO_POSIX4 || SYNCHRO_Linux&#xD;&#xA;&#x9;#include &lt;pthread.h>&#xD;&#xA;&#x9;typedef pthread_rwlock_t RWLockStruc;&#xD;&#xA;&#xD;&#xA;#elif defined SYNCHRO_VxWorks&#xD;&#xA;&#x9;typedef struct&#xD;&#xA;&#x9;{&#xD;&#xA;&#x9;&#x9;int readers;&#xD;&#xA;&#x9;&#x9;int writers;&#xD;&#xA;&#x9;&#x9;MutexStruc readersMut;&#x9;&#x9;// protège readers&#xD;&#xA;&#x9;&#x9;MutexStruc writersMut;&#x9;&#x9;// protège writers&#xD;&#xA;&#x9;&#x9;MutexStruc readMut;&#x9;&#x9;&#x9;// protège le sémaphore 'read'&#xD;&#xA;&#x9;&#x9;SEM_ID writeSem;&#xD;&#xA;&#x9;&#x9;SEM_ID readSem;&#xD;&#xA;&#x9;} RWLockStruc;&#xD;&#xA;&#xD;&#xA;#else // defined RWLock_Simulation&#xD;&#xA;&#xD;&#xA;&#x9;// this new variant is not up to date (surtout tryRdLock et tryWrLock() )&#xD;&#xA;&#x9;#include &lt;OS_AL/Synchronization/Mutex.h>&#xD;&#xA;&#x9;#include &lt;OS_AL/Synchronization/Semaphore.h>&#xD;&#xA;&#xD;&#xA;&#x9;typedef struct&#xD;&#xA;&#x9;{&#xD;&#xA;&#x9;&#x9;int readers;&#xD;&#xA;&#x9;&#x9;int writers;&#xD;&#xA;&#x9;&#x9;Mutex readersMut;&#xD;&#xA;&#x9;&#x9;Mutex writersMut;&#xD;&#xA;&#x9;&#x9;Mutex readMut;&#xD;&#xA;&#x9;&#x9;Semaphore writeSem;&#xD;&#xA;&#x9;&#x9;Semaphore readSem;&#xD;&#xA;&#x9;} RWLockStruc;&#xD;&#xA;#endif&#xD;&#xA;" base_class="_dhMBIFF2EdyxP5ejovTmBw"/>
+ <l2:Create xmi:id="_xdF5cFF3EdyxP5ejovTmBw" base_BehavioralFeature="_tz4-IFF3EdyxP5ejovTmBw"/>
+ <l2:Destroy xmi:id="_yXNYUFF3EdyxP5ejovTmBw" base_BehavioralFeature="_t6TIIFF3EdyxP5ejovTmBw"/>
+ <Cpp:CppInline xmi:id="_IHbjYFF4EdyxP5ejovTmBw" base_operation="_-EmMgFF3EdyxP5ejovTmBw"/>
+ <Cpp:CppConst xmi:id="_IHbjYVF4EdyxP5ejovTmBw" base_operation="_-EmMgFF3EdyxP5ejovTmBw"/>
+ <Cpp:CppInline xmi:id="_JeAUwFF4EdyxP5ejovTmBw" base_operation="_-N-yAFF3EdyxP5ejovTmBw"/>
+ <Cpp:CppInclude xmi:id="_TSTq8FF5EdyxP5ejovTmBw" body="#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#include &lt;errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_VxWorks ||\&#xD;&#xA; defined SYNCHRO_Linux || defined SYNCHRO_Cygwin&#xD;&#xA;&#x9;// see section 11 of POSIX standard&#xD;&#xA;&#x9;// see semPxLib of section 1 in the VxWorks reference manual&#xD;&#xA;&#x9;// see sem_init(3R) of Solaris reference manual (but not available in&#xD;&#xA;&#x9;// Solaris 2.5 - which is probably not a restriction today)&#xD;&#xA;&#x9;#include &lt;semaphore.h>&#xD;&#xA;&#x9;typedef sem_t SemStruc;&#xD;&#xA;#elif defined SYNCHRO_Solaris&#xD;&#xA;&#x9;// see semaphore(3T) of Solaris reference manual&#xD;&#xA;&#x9;#include &lt;synch.h>&#xD;&#xA;&#x9;typedef sema_t SemStruc;&#xD;&#xA;#else&#xD;&#xA;&#x9;#error SYNCHRO_??? not defined&#xD;&#xA;#endif&#xD;&#xA;" base_class="_D8njME_gEdy2tpS719xBwQ"/>
+ <l2:Create xmi:id="_dGY0IFF5EdyxP5ejovTmBw" base_BehavioralFeature="_aemSgFF5EdyxP5ejovTmBw"/>
+ <l2:Destroy xmi:id="_d1Lz0FF5EdyxP5ejovTmBw" base_BehavioralFeature="_ak3SkFF5EdyxP5ejovTmBw"/>
+ <Cpp:CppDefault xmi:id="_iduFMFF5EdyxP5ejovTmBw" value="0" base_parameter="_fQq6YFF5EdyxP5ejovTmBw"/>
+ <Cpp:CppConst xmi:id="_DKmLEFF6EdyxP5ejovTmBw" base_operation="_76k6EFF5EdyxP5ejovTmBw"/>
+ <l2:Create xmi:id="__0FFwFF6EdyxP5ejovTmBw"/>
+ <Cpp:CppInline xmi:id="_GyvK4FGEEdy2j6DfRsavvw" base_operation="_IM-wwFGDEdyxP5ejovTmBw"/>
+ <Cpp:CppDefault xmi:id="_NK4YsFGEEdy2j6DfRsavvw" value="FLAG_All" base_parameter="_tpG0AFGDEdy2j6DfRsavvw"/>
+ <Cpp:CppConst xmi:id="_QJeQwFGEEdy2j6DfRsavvw" base_parameter="_3K3eIFGDEdy2j6DfRsavvw"/>
+ <Cpp:CppRef xmi:id="_QtYPEFGEEdy2j6DfRsavvw" base_parameter="_3K3eIFGDEdy2j6DfRsavvw"/>
+ <Cpp:CppInclude xmi:id="_Gyo1gFGKEdy7g9CjxdN7jw" body="#include &lt;OS_AL/Util/Print.h>" base_class="_5InEkFGAEdyxP5ejovTmBw"/>
+ <Cpp:CppDefault xmi:id="_I6FqMFGKEdy7g9CjxdN7jw" value="0" base_property="_rqVygFGJEdy7g9CjxdN7jw"/>
+ <Cpp:CppInclude xmi:id="_b0TcwFIfEdy7g9CjxdN7jw" header="// MACRO&#xD;&#xA;#ifdef ENABLE_TRACING&#xD;&#xA;&#x9;#define TRACEpr(flags)&#x9;&#x9;Trace pr(FLAG_ ## flags)&#xD;&#xA;&#x9;#define PR(arg)&#x9;&#x9;&#x9;&#x9;pr &lt;&lt; arg&#xD;&#xA;#else&#xD;&#xA;&#x9;#define TRACEpr(flags)&#xD;&#xA;&#x9;#define PR(arg)&#xD;&#xA;#endif&#xD;&#xA;" base_class="_1DM54DxBEdyfAeav5abbAw"/>
+ <l2:Create xmi:id="_qaUq8FIfEdy7g9CjxdN7jw" base_BehavioralFeature="_n7UR4FIfEdy7g9CjxdN7jw"/>
+ <l2:Destroy xmi:id="_vmw6oFIfEdy7g9CjxdN7jw" base_BehavioralFeature="_oFTUUFIfEdy7g9CjxdN7jw"/>
+ <Cpp:CppRef xmi:id="_OnLesFIgEdy7g9CjxdN7jw" base_parameter="_DEXi0FIgEdy7g9CjxdN7jw"/>
+ <Cpp:CppConst xmi:id="_QdMlIVIgEdy7g9CjxdN7jw" base_operation="_BsdUsFIgEdy7g9CjxdN7jw"/>
+ <Cpp:CppInline xmi:id="_VO1IIFIgEdy7g9CjxdN7jw" base_operation="_TAN7gFIgEdy7g9CjxdN7jw"/>
+ <Cpp:CppConst xmi:id="_VO-SEFIgEdy7g9CjxdN7jw" base_operation="_TAN7gFIgEdy7g9CjxdN7jw"/>
+ <Cpp:CppInline xmi:id="_tph8cFIgEdy7g9CjxdN7jw" base_operation="_qIrE0FIgEdy7g9CjxdN7jw"/>
+ <Cpp:CppRef xmi:id="_0n1LUFIgEdy7g9CjxdN7jw" base_parameter="_vzhHwFIgEdy7g9CjxdN7jw"/>
+ <Cpp:CppConst xmi:id="_0n1LUVIgEdy7g9CjxdN7jw" base_parameter="_vzhHwFIgEdy7g9CjxdN7jw"/>
+ <l2:Create xmi:id="_8oSawFIgEdy7g9CjxdN7jw" base_BehavioralFeature="_7hM24FIgEdy7g9CjxdN7jw"/>
+ <Cpp:CppPtr xmi:id="_N4U_MFIhEdy7g9CjxdN7jw" base_property="_JByHAFIhEdy7g9CjxdN7jw"/>
+ <Cpp:CppConst xmi:id="_K-SJADReEdyDwaY3iUxzzA" base_parameter="_o4Q9YDRGEdyG-pUz-bb-Lg"/>
+ <Cpp:CppRef xmi:id="_4wbsAFIFEd-OfYmxqPWG5g" base_parameter="_o4Q9YDRGEdyG-pUz-bb-Lg"/>
+ <Cpp:CppExternClass xmi:id="_z-g9QFKWEd-OfYmxqPWG5g" name="time.h" base_class="_vZD1EFKWEd-OfYmxqPWG5g"/>
+ <Cpp:CppDefault xmi:id="_Yy4zUFRgEd-mj-y6sW0V8w" value="false" base_parameter="_VQVI4DUUEdyDReAOQiyvOg"/>
+ <Cpp:CppType xmi:id="_pTNvoFdhEd-9TNLvplUFDQ" definition="void (*typeName) (void*)" base_primitivetype="_kor6MFdhEd-9TNLvplUFDQ"/>
+ <Cpp:CppConst xmi:id="_ecbxIFnDEd-9TNLvplUFDQ" base_property="_WG7s4DRoEdypGbuyt3_DaA"/>
+ <Cpp:CppPtr xmi:id="_XZvckFnmEd-9TNLvplUFDQ" base_parameter="_FeNrIFnmEd-9TNLvplUFDQ"/>
+ <Cpp:CppArray xmi:id="_jwJS4F2nEd-12d_h0i1xhQ" definition="[maxSize]" base_property="_jwCk4DR-Edy0feurbW0fyQ"/>
+ <Cpp:CppConst xmi:id="_AvS_cF3MEd-12d_h0i1xhQ" base_parameter="_Y6spMDUREdy0feurbW0fyQ"/>
+ <Cpp:CppPtr xmi:id="_L8pB4DUSEdy0feurbW0fyQ" base_parameter="_Y6spMDUREdy0feurbW0fyQ"/>
+ <Cpp:CppConst xmi:id="_D-HE0F3MEd-12d_h0i1xhQ" base_parameter="_Y-RhoDUREdy0feurbW0fyQ"/>
+ <Cpp:CppPtr xmi:id="_NX10kDUSEdy0feurbW0fyQ" base_parameter="_Y-RhoDUREdy0feurbW0fyQ"/>
+ <Cpp:CppInclude xmi:id="_jne3cLmvEd-Ncuei_moJtA" header="#ifdef OS_Cygwin&#xA;&#x9;#define SYSTEM_Cygwin&#xA;&#x9;#define SYSTEM_POSIX4&#xA;&#x9;#define SYNCHRO_Cygwin&#xA;&#x9;#define SYNCHRO_POSIX4&#xA;&#x9;#define THREAD_POSIX4&#xA;&#x9;#define TIMER_POSIX4&#xA;&#x9;#define TIMER_Cygwin&#xA;#endif&#xA;&#xA;#ifdef OS_Linux&#xA;&#x9;#define SYSTEM_Linux&#xA;&#x9;#define SYSTEM_POSIX4&#xA;&#x9;#ifdef OS_Xenomai&#xA;&#x9;&#x9;#define SYSTEM_Xenomai&#xA;&#x9;#endif&#xA;&#x9;#define SYNCHRO_POSIX4&#xA;&#x9;#define THREAD_POSIX4&#xA;&#x9;#define TIMER_POSIX4&#xA;&#x9;#define TIMER_Linux&#xA;#endif&#xA;&#xA;#ifdef OS_Solaris&#xA;&#x9;#define SYSTEM_Solaris&#xA;&#x9;#define THREAD_Solaris&#xA;&#x9;#define SYNCHRO_Solaris&#xA;#endif" base_package="_ROTQYC-OEdySSa8YESkO2w"/>
+ <FCM:CppLibrary xmi:id="_USnQ4CgpEeC5Ga5kAgjl0g" base_Package="_ROTQYC-OEdySSa8YESkO2w">
+ <libs>pthread</libs>
+ <libs>rt</libs>
+ </FCM:CppLibrary>
+ <Cpp:CppDefault xmi:id="_nABaADrnEeChpNDXy9GnYg" value=" TimeVal::systemTime();" base_property="_Ag0mQFKiEd-OfYmxqPWG5g"/>
+ <Cpp:CppExternClass xmi:id="_7xMi4It4EeCA0czgCf_91g" name="time.h" base_class="_5YJA0It4EeCA0czgCf_91g"/>
+ <Cpp:CppExternClass xmi:id="_2xMacIt9EeCA0czgCf_91g" name="time.h" base_class="_SPVucIt6EeCA0czgCf_91g"/>
+ <Cpp:CppConst xmi:id="_yh6NYIu7EeC1j5hJbrrc8g" base_parameter="_efgpkDkXEdyuzNpSiGPe4w"/>
+ <Cpp:CppConst xmi:id="__fXiUIu7EeC1j5hJbrrc8g" base_operation="_9xV0IDkfEdyuzNpSiGPe4w"/>
+ <Cpp:CppInclude xmi:id="_QWmjoPRTEeCUGrV0Hl4JwQ" body="#include &lt;OS_AL/Synchronization/Condition.h>&#xD;&#xA;#include &lt;OS_AL/Synchronization/Mutex.h>&#xD;&#xA;#include &lt;OS_AL/Time/TimeVal.h>&#xD;&#xA;#include &lt;OS_AL/ProcessingResources/ProDesc.h>&#xD;&#xA;#include &lt;OS_AL/Tracing/Trace.h>&#xD;&#xA;&#xD;&#xA;#include &lt;errno.h>" header="#if defined SYNCHRO_POSIX4 || defined SYNCHRO_Linux || defined SYNCHRO_WIN32&#xA;&#x9;#include &lt;pthread.h>&#xA;&#x9;typedef pthread_cond_t ConditionId;&#xA;&#xA;#elif defined SYNCHRO_Solaris&#xA;&#x9;#include &lt;synch.h>&#xA;&#x9;typedef cond_t ConditionId;&#xA;&#xA;#elif defined SYNCHRO_VxWorks&#xA;&#x9;#include &lt;semLib.h>&#xA;&#x9;typedef int ConditionId;&#x9;&#x9;&#x9;// dummy declaration&#xA;&#xA;#else&#xA; #error SYNCHRO_X not defined&#xA;&#xA;#endif&#xA;" base_class="_QWlVgPRTEeCUGrV0Hl4JwQ"/>
+ <l2:Create xmi:id="_QWmjofRTEeCUGrV0Hl4JwQ" base_BehavioralFeature="_QWlVkfRTEeCUGrV0Hl4JwQ"/>
+ <Cpp:CppConstInit xmi:id="_QWmjovRTEeCUGrV0Hl4JwQ" initialisation="&#x9;m_mutex (),&#xD;&#xA;&#x9;m_isLocked (false)&#xD;&#xA;" base_operation="_QWlVkfRTEeCUGrV0Hl4JwQ"/>
+ <l2:Destroy xmi:id="_QWmjo_RTEeCUGrV0Hl4JwQ" base_BehavioralFeature="_QWlVkvRTEeCUGrV0Hl4JwQ"/>
+ <Cpp:CppConst xmi:id="_QWmjpPRTEeCUGrV0Hl4JwQ" base_parameter="_QWlVofRTEeCUGrV0Hl4JwQ"/>
+ <Cpp:CppRef xmi:id="_QWmjpfRTEeCUGrV0Hl4JwQ" base_parameter="_QWlVofRTEeCUGrV0Hl4JwQ"/>
+ <l2:Destroy xmi:id="__A9BwCZrEeGP95nTW02SMA" base_BehavioralFeature="_6Db-4CZrEeGP95nTW02SMA"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.di
new file mode 100644
index 00000000000..ee692079cdc
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.di
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmi:id="_agpmUOUTEd-P08Bciq_LqQ">
+ <pageList xmi:id="_agpmUeUTEd-P08Bciq_LqQ">
+ <availablePage xmi:id="_deTDMOUTEd-P08Bciq_LqQ">
+ <emfPageIdentifier href="statemachine.notation#_deScIOUTEd-P08Bciq_LqQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="statemachine.notation#_hky-AOuMEeCTfOY57pgE3w"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="statemachine.notation#_-9eIUOx1EeCeNZHeHxkazQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="statemachine.notation#_f3mAUPTXEeCn1-FCrfecFg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="statemachine.notation#_YNvtYP3HEeC1YdT2qA0bjA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="statemachine.notation#_IOfaAF8wEeGerN33d-RdRg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="statemachine.notation#_KwHpQF8wEeGerN33d-RdRg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="statemachine.notation#_Ogua0F81EeGbQoflzrdx0g"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_agpmUuUTEd-P08Bciq_LqQ" currentSelection="_agpmVOUTEd-P08Bciq_LqQ">
+ <windows xmi:id="_agpmU-UTEd-P08Bciq_LqQ">
+ <children xsi:type="di:TabFolder" xmi:id="_agpmVOUTEd-P08Bciq_LqQ">
+ <children xmi:id="_deTDMeUTEd-P08Bciq_LqQ">
+ <emfPageIdentifier href="statemachine.notation#_deScIOUTEd-P08Bciq_LqQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="statemachine.notation#_hky-AOuMEeCTfOY57pgE3w"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="statemachine.notation#_-9eIUOx1EeCeNZHeHxkazQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="statemachine.notation#_f3mAUPTXEeCn1-FCrfecFg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="statemachine.notation#_YNvtYP3HEeC1YdT2qA0bjA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="statemachine.notation#_IOfaAF8wEeGerN33d-RdRg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="statemachine.notation#_Ogua0F81EeGbQoflzrdx0g"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.notation
new file mode 100644
index 00000000000..b2188d93035
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.notation
@@ -0,0 +1,1566 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_deScIOUTEd-P08Bciq_LqQ" type="CompositeStructure" name="StateMachines" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_en03EOUTEd-P08Bciq_LqQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_en1eIOUTEd-P08Bciq_LqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_en1eIeUTEd-P08Bciq_LqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_en1eIuUTEd-P08Bciq_LqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_en2FMOUTEd-P08Bciq_LqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_en2FMeUTEd-P08Bciq_LqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_en2FMuUTEd-P08Bciq_LqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_juzw8OusEeCTfOY57pgE3w" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOMVsM3zEeGrI9HID9bwtg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOMVsc3zEeGrI9HID9bwtg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOMVss3zEeGrI9HID9bwtg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOMVs83zEeGrI9HID9bwtg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOMVtM3zEeGrI9HID9bwtg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_en2FM-UTEd-P08Bciq_LqQ" type="5156">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IAiKUE0YEeGqXM1qMFWauA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J2OgoE0YEeGqXM1qMFWauA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J2PHsE0YEeGqXM1qMFWauA" key="StereotypeList" value="FCM::ContainerExt"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J2PHsU0YEeGqXM1qMFWauA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J2PHsk0YEeGqXM1qMFWauA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J2PHs00YEeGqXM1qMFWauA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_en2FNOUTEd-P08Bciq_LqQ" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_en2FNeUTEd-P08Bciq_LqQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_u83s4PRUEeCKVJwdD4MMsg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u847APRUEeCKVJwdD4MMsg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u85iEPRUEeCKVJwdD4MMsg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u85iEfRUEeCKVJwdD4MMsg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u85iEvRUEeCKVJwdD4MMsg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u85iE_RUEeCKVJwdD4MMsg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u85iFPRUEeCKVJwdD4MMsg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rYaxIF8wEeGerN33d-RdRg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rtqoYF8wEeGerN33d-RdRg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rtqoYV8wEeGerN33d-RdRg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rtqoYl8wEeGerN33d-RdRg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rtqoY18wEeGerN33d-RdRg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rtqoZF8wEeGerN33d-RdRg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_u85iFfRUEeCKVJwdD4MMsg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iAfo4Fl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_idrUIFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_u86JIPRUEeCKVJwdD4MMsg" x="-117"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_u86JIfRUEeCKVJwdD4MMsg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_u86JIvRUEeCKVJwdD4MMsg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_u7pk4PRUEeCKVJwdD4MMsg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u83s4fRUEeCKVJwdD4MMsg" x="225" y="117" width="20" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_oVaTIF8wEeGerN33d-RdRg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oVa6MF8wEeGerN33d-RdRg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oVa6MV8wEeGerN33d-RdRg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oVa6Ml8wEeGerN33d-RdRg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oVa6M18wEeGerN33d-RdRg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_oVbhQF8wEeGerN33d-RdRg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oVbhQV8wEeGerN33d-RdRg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uC-58F8wEeGerN33d-RdRg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vFkYUF8wEeGerN33d-RdRg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vFkYUV8wEeGerN33d-RdRg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vFkYUl8wEeGerN33d-RdRg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vFk_YF8wEeGerN33d-RdRg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vFk_YV8wEeGerN33d-RdRg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oVbhQl8wEeGerN33d-RdRg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fXpXUFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ffTegFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oVbhQ18wEeGerN33d-RdRg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oVbhRF8wEeGerN33d-RdRg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_oVbhRV8wEeGerN33d-RdRg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oVaTIV8wEeGerN33d-RdRg" x="-10" y="45"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xVjd8F8wEeGerN33d-RdRg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVkFAF8wEeGerN33d-RdRg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVkFAV8wEeGerN33d-RdRg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVksEF8wEeGerN33d-RdRg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVksEV8wEeGerN33d-RdRg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVksEl8wEeGerN33d-RdRg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVksE18wEeGerN33d-RdRg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JZW1MF8xEeGerN33d-RdRg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PKyBQF8xEeGerN33d-RdRg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PKyoUF8xEeGerN33d-RdRg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PKyoUV8xEeGerN33d-RdRg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PKyoUl8xEeGerN33d-RdRg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PKyoU18xEeGerN33d-RdRg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVksFF8wEeGerN33d-RdRg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gCoOAFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gGpLUFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVksFV8wEeGerN33d-RdRg" x="-144"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVksFl8wEeGerN33d-RdRg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVksF18wEeGerN33d-RdRg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_xUE3QF8wEeGerN33d-RdRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xVjd8V8wEeGerN33d-RdRg" x="225" y="72" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_ens7QOUTEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_en03EeUTEd-P08Bciq_LqQ" x="54" y="135" width="235" height="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_u-vbIOUTEd-P08Bciq_LqQ" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u-vbIuUTEd-P08Bciq_LqQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u-vbI-UTEd-P08Bciq_LqQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u-vbJOUTEd-P08Bciq_LqQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u-wCMOUTEd-P08Bciq_LqQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_u-wCMeUTEd-P08Bciq_LqQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_u-wCMuUTEd-P08Bciq_LqQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ha3xAOUUEd-P08Bciq_LqQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOU4kM3zEeGrI9HID9bwtg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOU4kc3zEeGrI9HID9bwtg" key="StereotypeList" value=",FCM::UseInstanceConfigurator"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOU4ks3zEeGrI9HID9bwtg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOU4k83zEeGrI9HID9bwtg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NOVfoM3zEeGrI9HID9bwtg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_u-wCM-UTEd-P08Bciq_LqQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_u-wCNOUTEd-P08Bciq_LqQ" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u-wCNeUTEd-P08Bciq_LqQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_WeNZ4DXLEeCZ5ODDEHnvRw" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WeOA8DXLEeCZ5ODDEHnvRw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WeOA8TXLEeCZ5ODDEHnvRw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WeOA8jXLEeCZ5ODDEHnvRw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WeOA8zXLEeCZ5ODDEHnvRw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WeOA9DXLEeCZ5ODDEHnvRw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_WeOoADXLEeCZ5ODDEHnvRw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8HQF8F8wEeGerN33d-RdRg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8mKPgF8wEeGerN33d-RdRg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8mKPgV8wEeGerN33d-RdRg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8mK2kF8wEeGerN33d-RdRg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8mK2kV8wEeGerN33d-RdRg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8mK2kl8wEeGerN33d-RdRg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WeOoATXLEeCZ5ODDEHnvRw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jBmgkFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jHxaAFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WeOoAjXLEeCZ5ODDEHnvRw" x="28" y="9"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_WeOoAzXLEeCZ5ODDEHnvRw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_WeOoBDXLEeCZ5ODDEHnvRw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WeNZ4TXLEeCZ5ODDEHnvRw" x="-10" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YK7aYDXLEeCZ5ODDEHnvRw" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YK8BcDXLEeCZ5ODDEHnvRw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YK8BcTXLEeCZ5ODDEHnvRw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YK8BcjXLEeCZ5ODDEHnvRw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YK8BczXLEeCZ5ODDEHnvRw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YK8ogDXLEeCZ5ODDEHnvRw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YK8ogTXLEeCZ5ODDEHnvRw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-GLQwF8wEeGerN33d-RdRg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-bGX4F8wEeGerN33d-RdRg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-bG-8F8wEeGerN33d-RdRg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-bG-8V8wEeGerN33d-RdRg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-bG-8l8wEeGerN33d-RdRg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-bG-818wEeGerN33d-RdRg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YK8ogjXLEeCZ5ODDEHnvRw" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kK_xkFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQMaoFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YK8ogzXLEeCZ5ODDEHnvRw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YK8ohDXLEeCZ5ODDEHnvRw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YK8ohTXLEeCZ5ODDEHnvRw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YK7aYTXLEeCZ5ODDEHnvRw" x="207" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a7sjEOuMEeCTfOY57pgE3w" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a7tKIOuMEeCTfOY57pgE3w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a7tKIeuMEeCTfOY57pgE3w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a7tKIuuMEeCTfOY57pgE3w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a7tKI-uMEeCTfOY57pgE3w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a7txMOuMEeCTfOY57pgE3w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a7txMeuMEeCTfOY57pgE3w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AiFSgF8xEeGerN33d-RdRg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A7lXoF8xEeGerN33d-RdRg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A7lXoV8xEeGerN33d-RdRg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A7lXol8xEeGerN33d-RdRg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A7lXo18xEeGerN33d-RdRg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A7lXpF8xEeGerN33d-RdRg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a7txMuuMEeCTfOY57pgE3w" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jl_nEFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jq_b0Fl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a7txM-uMEeCTfOY57pgE3w" x="27" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a7txNOuMEeCTfOY57pgE3w" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_a7txNeuMEeCTfOY57pgE3w" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_a4NKMOuMEeCTfOY57pgE3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a7sjEeuMEeCTfOY57pgE3w" x="108" y="153" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_u-qioOUTEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_u-vbIeUTEd-P08Bciq_LqQ" x="414" y="108" width="217" height="163"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_OTiegDXLEeCZ5ODDEHnvRw" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OTjFkDXLEeCZ5ODDEHnvRw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OTjFkTXLEeCZ5ODDEHnvRw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OTjFkjXLEeCZ5ODDEHnvRw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OTjsoDXLEeCZ5ODDEHnvRw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OTjsoTXLEeCZ5ODDEHnvRw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OTjsojXLEeCZ5ODDEHnvRw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OTjsozXLEeCZ5ODDEHnvRw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OTjspDXLEeCZ5ODDEHnvRw" type="7073" collapsed="true">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OTjspTXLEeCZ5ODDEHnvRw"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_Zx2ZUA1jEd6tvthBDl600Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OTiegTXLEeCZ5ODDEHnvRw" x="414" y="18" width="217"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9DtmsOuLEeCTfOY57pgE3w" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9DwC8OuLEeCTfOY57pgE3w" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9DwC8euLEeCTfOY57pgE3w" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9DwqAOuLEeCTfOY57pgE3w" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9DwqAeuLEeCTfOY57pgE3w" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9DwqAuuLEeCTfOY57pgE3w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9DwqA-uLEeCTfOY57pgE3w" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9DwqBOuLEeCTfOY57pgE3w" type="5192"/>
+ <element xmi:type="uml:Comment" href="statemachine.uml#_9BpKIOuLEeCTfOY57pgE3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9DtmseuLEeCTfOY57pgE3w" x="648" y="18" width="208" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_OlJPsBE0EeG3cfLoiI6G7g" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OlMTABE0EeG3cfLoiI6G7g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OlMTARE0EeG3cfLoiI6G7g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OlMTAhE0EeG3cfLoiI6G7g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OlMTAxE0EeG3cfLoiI6G7g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OlM6EBE0EeG3cfLoiI6G7g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_OlM6ERE0EeG3cfLoiI6G7g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_OlM6EhE0EeG3cfLoiI6G7g" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_OlNhIBE0EeG3cfLoiI6G7g" visible="false" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_OlNhIRE0EeG3cfLoiI6G7g" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OlNhIhE0EeG3cfLoiI6G7g"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_JRmo0PNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OlJPsRE0EeG3cfLoiI6G7g" x="60" y="333" width="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Py6qYBE0EeG3cfLoiI6G7g" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Py7RcBE0EeG3cfLoiI6G7g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Py7RcRE0EeG3cfLoiI6G7g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Py7RchE0EeG3cfLoiI6G7g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Py7RcxE0EeG3cfLoiI6G7g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Py7RdBE0EeG3cfLoiI6G7g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Py7RdRE0EeG3cfLoiI6G7g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Py7RdhE0EeG3cfLoiI6G7g" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Py7RdxE0EeG3cfLoiI6G7g" visible="false" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Py7ReBE0EeG3cfLoiI6G7g" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Py7ReRE0EeG3cfLoiI6G7g"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_WkkjoPNUEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Py6qYRE0EeG3cfLoiI6G7g" x="198" y="333" width="90"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_KR_OMCNYEeGj_4swHBbKwg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KSBqcCNYEeGj_4swHBbKwg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSBqcSNYEeGj_4swHBbKwg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KSBqciNYEeGj_4swHBbKwg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSBqcyNYEeGj_4swHBbKwg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KSCRgCNYEeGj_4swHBbKwg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSCRgSNYEeGj_4swHBbKwg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_KSCRgiNYEeGj_4swHBbKwg" type="5156">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QQ5coCNYEeGj_4swHBbKwg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQ5coSNYEeGj_4swHBbKwg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQ5coiNYEeGj_4swHBbKwg" key="StereotypeList" value="FCM::InstanceConfigurator"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQ6DsCNYEeGj_4swHBbKwg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQ6DsSNYEeGj_4swHBbKwg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QQ6DsiNYEeGj_4swHBbKwg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_KSCRgyNYEeGj_4swHBbKwg" visible="false" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_KSCRhCNYEeGj_4swHBbKwg" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KSCRhSNYEeGj_4swHBbKwg"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_KEMp0CNYEeGj_4swHBbKwg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KR_OMSNYEeGj_4swHBbKwg" x="414" y="319" width="226" height="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XAfYYCWNEeGB3KV6qwTHBw" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XAmGECWNEeGB3KV6qwTHBw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XAmtICWNEeGB3KV6qwTHBw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XAmtISWNEeGB3KV6qwTHBw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XAmtIiWNEeGB3KV6qwTHBw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XAmtIyWNEeGB3KV6qwTHBw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XAmtJCWNEeGB3KV6qwTHBw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XAmtJSWNEeGB3KV6qwTHBw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XAnUMCWNEeGB3KV6qwTHBw" visible="false" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_XAnUMSWNEeGB3KV6qwTHBw" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XAnUMiWNEeGB3KV6qwTHBw"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XAfYYSWNEeGB3KV6qwTHBw" x="54" y="36" width="235"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_deScIeUTEd-P08Bciq_LqQ"/>
+ <element xmi:type="uml:Model" href="statemachine.uml#_ago_QOUTEd-P08Bciq_LqQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_OUdrkDXLEeCZ5ODDEHnvRw" type="4015" source="_u-vbIOUTEd-P08Bciq_LqQ" target="_OTiegDXLEeCZ5ODDEHnvRw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_OUfgwDXLEeCZ5ODDEHnvRw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_OUfgwTXLEeCZ5ODDEHnvRw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_OUdrkTXLEeCZ5ODDEHnvRw" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="statemachine.uml#_3LpLIOUTEd-P08Bciq_LqQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OUdrkjXLEeCZ5ODDEHnvRw" points="[-78, -24, 450, 138]$[-528, -162, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KOQVYOuMEeCTfOY57pgE3w" type="4002" source="_9DtmsOuLEeCTfOY57pgE3w" target="_u-vbIOUTEd-P08Bciq_LqQ" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_KOQVYeuMEeCTfOY57pgE3w" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KOQVYuuMEeCTfOY57pgE3w" points="[16, 22, 54, -77]$[16, 70, 54, -29]$[-19, 70, 19, -29]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KOSxoOuMEeCTfOY57pgE3w" id="(0.007782101167315175,0.6333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KOSxoeuMEeCTfOY57pgE3w" id="(0.9166666666666666,0.29357798165137616)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Q2fnQBE0EeG3cfLoiI6G7g" type="4010" source="_en03EOUTEd-P08Bciq_LqQ" target="_OlJPsBE0EeG3cfLoiI6G7g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q2g1YBE0EeG3cfLoiI6G7g" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q2g1YRE0EeG3cfLoiI6G7g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Q2g1YhE0EeG3cfLoiI6G7g" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q2g1YxE0EeG3cfLoiI6G7g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Q2fnQRE0EeG3cfLoiI6G7g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Dependency" href="statemachine.uml#_Q2C7UBE0EeG3cfLoiI6G7g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Q2fnQhE0EeG3cfLoiI6G7g" points="[2, 10, 0, -40]$[4, 39, 2, -11]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q3E2EBE0EeG3cfLoiI6G7g" id="(0.26382978723404255,0.9570552147239264)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q3E2ERE0EeG3cfLoiI6G7g" id="(0.5757575757575758,0.18333333333333332)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Rq3DcBE0EeG3cfLoiI6G7g" type="4010" source="_en03EOUTEd-P08Bciq_LqQ" target="_Py6qYBE0EeG3cfLoiI6G7g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Rq3qgBE0EeG3cfLoiI6G7g" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Rq3qgRE0EeG3cfLoiI6G7g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Rq3qghE0EeG3cfLoiI6G7g" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Rq3qgxE0EeG3cfLoiI6G7g" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Rq3DcRE0EeG3cfLoiI6G7g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Dependency" href="statemachine.uml#_RqmkwBE0EeG3cfLoiI6G7g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Rq3DchE0EeG3cfLoiI6G7g" points="[-8, 12, -5, -61]$[-8, 43, -5, -30]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RrUWcBE0EeG3cfLoiI6G7g" id="(0.8212765957446808,0.9815950920245399)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_auAL8CWNEeGB3KV6qwTHBw" type="4015" source="_en03EOUTEd-P08Bciq_LqQ" target="_XAfYYCWNEeGB3KV6qwTHBw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_auCBICWNEeGB3KV6qwTHBw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_auCBISWNEeGB3KV6qwTHBw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_auAL8SWNEeGB3KV6qwTHBw" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="statemachine.uml#_ar4sECWNEeGB3KV6qwTHBw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_auAL8iWNEeGB3KV6qwTHBw" points="[-5, -1, -2, 79]$[-5, -60, -2, 20]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_avfZsCWNEeGB3KV6qwTHBw" id="(0.5106382978723404,0.006134969325153374)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_hky-AOuMEeCTfOY57pgE3w" type="PapyrusUMLClassDiagram" name="Interfaces" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_62j9UOx1EeCeNZHeHxkazQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_62lLcOx1EeCeNZHeHxkazQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_62lygOx1EeCeNZHeHxkazQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_62lygex1EeCeNZHeHxkazQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_62lygux1EeCeNZHeHxkazQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_62lyg-x1EeCeNZHeHxkazQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_62lyhOx1EeCeNZHeHxkazQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_62mZkOx1EeCeNZHeHxkazQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_62mZkex1EeCeNZHeHxkazQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_62mZkux1EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_62mZk-x1EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_62mZlOx1EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_62mZlex1EeCeNZHeHxkazQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_62mZlux1EeCeNZHeHxkazQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_62nAoOx1EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_62nAoex1EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_62nAoux1EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_62nAo-x1EeCeNZHeHxkazQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_62nApOx1EeCeNZHeHxkazQ" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_62nApex1EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_62nApux1EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_62nAp-x1EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_62nAqOx1EeCeNZHeHxkazQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_6uRBMOuqEeCTfOY57pgE3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_62kkYOx1EeCeNZHeHxkazQ" x="82" y="313"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_hky-AeuMEeCTfOY57pgE3w"/>
+ <element xmi:type="uml:Model" href="statemachine.uml#_ago_QOUTEd-P08Bciq_LqQ"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_-9eIUOx1EeCeNZHeHxkazQ" type="PapyrusUMLClassDiagram" name="Associ" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_ABwP0Ox2EeCeNZHeHxkazQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ABw24Ox2EeCeNZHeHxkazQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ABxd8Ox2EeCeNZHeHxkazQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ABxd8ex2EeCeNZHeHxkazQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ABxd8ux2EeCeNZHeHxkazQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ABxd8-x2EeCeNZHeHxkazQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ABxd9Ox2EeCeNZHeHxkazQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AByFAOx2EeCeNZHeHxkazQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AByFAex2EeCeNZHeHxkazQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AByFAux2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AByFA-x2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AByFBOx2EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AByFBex2EeCeNZHeHxkazQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AByFBux2EeCeNZHeHxkazQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AByFB-x2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AByFCOx2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AByFCex2EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AByFCux2EeCeNZHeHxkazQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AByFC-x2EeCeNZHeHxkazQ" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AByFDOx2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AByFDex2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AByFDux2EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AByFD-x2EeCeNZHeHxkazQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_6uRBMOuqEeCTfOY57pgE3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ABwP0ex2EeCeNZHeHxkazQ" x="468" y="126"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_AwlrwOx2EeCeNZHeHxkazQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Awng8Ox2EeCeNZHeHxkazQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Awng8ex2EeCeNZHeHxkazQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Awng8ux2EeCeNZHeHxkazQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Awng8-x2EeCeNZHeHxkazQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Awng9Ox2EeCeNZHeHxkazQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AwoIAOx2EeCeNZHeHxkazQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AwoIAex2EeCeNZHeHxkazQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AwoIAux2EeCeNZHeHxkazQ" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AwoIA-x2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AwoIBOx2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AwoIBex2EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AwoIBux2EeCeNZHeHxkazQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AwoIB-x2EeCeNZHeHxkazQ" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AwoICOx2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AwoICex2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AwoICux2EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AwoIC-x2EeCeNZHeHxkazQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AwoIDOx2EeCeNZHeHxkazQ" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AwoIDex2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_AwoIDux2EeCeNZHeHxkazQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_AwoID-x2EeCeNZHeHxkazQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AwovEOx2EeCeNZHeHxkazQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_ens7QOUTEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Awlrwex2EeCeNZHeHxkazQ" x="162" y="126"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_-9eIUex1EeCeNZHeHxkazQ"/>
+ <element xmi:type="uml:Package" href="statemachine.uml#_9J39cOupEeCTfOY57pgE3w"/>
+ <edges xmi:type="notation:Connector" xmi:id="_S-AYwO3GEeCHv5BGhoZ8CA" type="4001" source="_AwlrwOx2EeCeNZHeHxkazQ" target="_ABwP0Ox2EeCeNZHeHxkazQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_S-Bm4O3GEeCHv5BGhoZ8CA" type="6001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S-Bm4e3GEeCHv5BGhoZ8CA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S-CN8O3GEeCHv5BGhoZ8CA" visible="false" type="6002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S-CN8e3GEeCHv5BGhoZ8CA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S-CN8u3GEeCHv5BGhoZ8CA" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S-CN8-3GEeCHv5BGhoZ8CA" x="21" y="-25"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S-CN9O3GEeCHv5BGhoZ8CA" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S-CN9e3GEeCHv5BGhoZ8CA" x="-12" y="29"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S-C1AO3GEeCHv5BGhoZ8CA" type="6033">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S-C1Ae3GEeCHv5BGhoZ8CA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S-C1Au3GEeCHv5BGhoZ8CA" type="6034">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_S-C1A-3GEeCHv5BGhoZ8CA" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_S-AYwe3GEeCHv5BGhoZ8CA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Association" href="statemachine.uml#_S99VcO3GEeCHv5BGhoZ8CA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_S-AYwu3GEeCHv5BGhoZ8CA" points="[12, 3, -184, -6]$[193, -41, -3, -50]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S-EDIO3GEeCHv5BGhoZ8CA" id="(0.88,0.41)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_f3mAUPTXEeCn1-FCrfecFg" type="CompositeStructure" name="ContainerRules" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_hobr0PTXEeCn1-FCrfecFg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hobr0fTXEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hobr0vTXEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hobr0_TXEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hobr1PTXEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hobr1fTXEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hobr1vTXEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hobr1_TXEeCn1-FCrfecFg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NO6ucM3zEeGrI9HID9bwtg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NO6ucc3zEeGrI9HID9bwtg" key="StereotypeList" value=",FCM::ContainerRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NO6ucs3zEeGrI9HID9bwtg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NO6uc83zEeGrI9HID9bwtg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NO6udM3zEeGrI9HID9bwtg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hobr3fTXEeCn1-FCrfecFg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hobr3vTXEeCn1-FCrfecFg" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_hobr3_TXEeCn1-FCrfecFg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hobr4PTXEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hobr4fTXEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hobr4vTXEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hobr4_TXEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hobr5PTXEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hobr5fTXEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z5YlkPUQEeCn1-FCrfecFg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z5YlkfUQEeCn1-FCrfecFg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z5YlkvUQEeCn1-FCrfecFg" key="StereotypeList" value="FCM::InterceptionRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z5Ylk_UQEeCn1-FCrfecFg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z5YllPUQEeCn1-FCrfecFg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z5YllfUQEeCn1-FCrfecFg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_hobr5vTXEeCn1-FCrfecFg" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pFVkoFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pGMgQFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_hobr5_TXEeCn1-FCrfecFg" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hobr6PTXEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hobr6fTXEeCn1-FCrfecFg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tE-AkPTXEeCn1-FCrfecFg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tE-noPTXEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tE-nofTXEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tE-novTXEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tE-no_TXEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tE-npPTXEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tE-npfTXEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6qDi8ECWEeGa5NwyW9TCXg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FdFgECWEeGa5NwyW9TCXg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FdFgUCWEeGa5NwyW9TCXg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FdskECWEeGa5NwyW9TCXg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FdskUCWEeGa5NwyW9TCXg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FdskkCWEeGa5NwyW9TCXg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tE_OsPTXEeCn1-FCrfecFg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pmOEIFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_po16UFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tE_OsfTXEeCn1-FCrfecFg" x="36" y="22"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tE_OsvTXEeCn1-FCrfecFg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tE_Os_TXEeCn1-FCrfecFg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_a4NKMOuMEeCTfOY57pgE3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tE-AkfTXEeCn1-FCrfecFg" x="72" y="39"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_LyxAEPTXEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hobr6vTXEeCn1-FCrfecFg" x="31" y="4" width="235" height="49"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jXZIAPTXEeCn1-FCrfecFg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jXZvEPTXEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jXaWIPTXEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jXaWIfTXEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jXaWIvTXEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jXaWI_TXEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jXaWJPTXEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jXaWJfTXEeCn1-FCrfecFg" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rL5ogFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rSIzYFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jXaWJvTXEeCn1-FCrfecFg" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jXa9MPTXEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jXa9MfTXEeCn1-FCrfecFg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vGo9YPTXEeCn1-FCrfecFg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vGpkcPTXEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vGpkcfTXEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vGpkcvTXEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vGpkc_TXEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vGpkdPTXEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vGpkdfTXEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-kq-YECWEeGa5NwyW9TCXg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__42jEECWEeGa5NwyW9TCXg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__42jEUCWEeGa5NwyW9TCXg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__42jEkCWEeGa5NwyW9TCXg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__42jE0CWEeGa5NwyW9TCXg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__42jFECWEeGa5NwyW9TCXg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vGpkdvTXEeCn1-FCrfecFg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qG2E8Fl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qJB2QFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vGpkd_TXEeCn1-FCrfecFg" x="-22" y="31"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vGqLgPTXEeCn1-FCrfecFg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_vGqLgfTXEeCn1-FCrfecFg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_MzO8gPNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vGo9YfTXEeCn1-FCrfecFg" x="-10" y="18"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_jXX54PTXEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jXZIAfTXEeCn1-FCrfecFg" x="157" y="103" width="155" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_mv8YMPTXEeCn1-FCrfecFg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mv8_QPTXEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mv8_QfTXEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mv8_QvTXEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mv9mUPTXEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mv9mUfTXEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mv9mUvTXEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mv9mU_TXEeCn1-FCrfecFg" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tGwLoFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tKD-UFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mv9mVPTXEeCn1-FCrfecFg" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mv9mVfTXEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mv9mVvTXEeCn1-FCrfecFg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1pwFEPTXEeCn1-FCrfecFg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pwFEvTXEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pwFE_TXEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pwFFPTXEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pwFFfTXEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1pwFFvTXEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1pwFF_TXEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8bUsQECWEeGa5NwyW9TCXg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9rNm0ECWEeGa5NwyW9TCXg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9rNm0UCWEeGa5NwyW9TCXg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9rNm0kCWEeGa5NwyW9TCXg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9rNm00CWEeGa5NwyW9TCXg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9rNm1ECWEeGa5NwyW9TCXg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1pwFGPTXEeCn1-FCrfecFg" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_r4clcFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r-rwUFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1pwsIPTXEeCn1-FCrfecFg" x="36" y="-12"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1pwsIfTXEeCn1-FCrfecFg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1pwsIvTXEeCn1-FCrfecFg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_u7pk4PRUEeCKVJwdD4MMsg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1pwFEfTXEeCn1-FCrfecFg" x="72" y="-10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_4jFLACWdEeGX6PuSE-DJlQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4jFLAiWdEeGX6PuSE-DJlQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4jFyECWdEeGX6PuSE-DJlQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4jFyESWdEeGX6PuSE-DJlQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4jFyEiWdEeGX6PuSE-DJlQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4jFyEyWdEeGX6PuSE-DJlQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4jFyFCWdEeGX6PuSE-DJlQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AtWiIECXEeGa5NwyW9TCXg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C7miYECXEeGa5NwyW9TCXg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C7miYUCXEeGa5NwyW9TCXg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C7miYkCXEeGa5NwyW9TCXg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C7miY0CXEeGa5NwyW9TCXg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C7miZECXEeGa5NwyW9TCXg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4jFyFSWdEeGX6PuSE-DJlQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MXmeYCWeEeGX6PuSE-DJlQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zi_2UFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4jFyFiWdEeGX6PuSE-DJlQ" x="18" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4jFyFyWdEeGX6PuSE-DJlQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_4jFyGCWdEeGX6PuSE-DJlQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4jFLASWdEeGX6PuSE-DJlQ" x="225" y="18"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_mv6jAPTXEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mv8YMfTXEeCn1-FCrfecFg" x="31" y="211" width="235" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vjc9kCWdEeGX6PuSE-DJlQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vjeLsCWdEeGX6PuSE-DJlQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vjeLsSWdEeGX6PuSE-DJlQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vjeLsiWdEeGX6PuSE-DJlQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vjeLsyWdEeGX6PuSE-DJlQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vjeLtCWdEeGX6PuSE-DJlQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vjeLtSWdEeGX6PuSE-DJlQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vjeLtiWdEeGX6PuSE-DJlQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6cCKsFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6gaUYFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vjeywCWdEeGX6PuSE-DJlQ" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vjeywSWdEeGX6PuSE-DJlQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vjeywiWdEeGX6PuSE-DJlQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3QYNACWdEeGX6PuSE-DJlQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3QrvACWdEeGX6PuSE-DJlQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3QrvASWdEeGX6PuSE-DJlQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3QrvAiWdEeGX6PuSE-DJlQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3QrvAyWdEeGX6PuSE-DJlQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3QrvBCWdEeGX6PuSE-DJlQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3QrvBSWdEeGX6PuSE-DJlQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DuW1AECXEeGa5NwyW9TCXg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EPPUgECXEeGa5NwyW9TCXg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EPPUgUCXEeGa5NwyW9TCXg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EPPUgkCXEeGa5NwyW9TCXg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EPPUg0CXEeGa5NwyW9TCXg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EPPUhECXEeGa5NwyW9TCXg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3QrvBiWdEeGX6PuSE-DJlQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IjtWACWeEeGX6PuSE-DJlQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0KpsMFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3QrvByWdEeGX6PuSE-DJlQ" x="-35" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3QsWECWdEeGX6PuSE-DJlQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3QsWESWdEeGX6PuSE-DJlQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_ZjdOAP-EEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3QYNASWdEeGX6PuSE-DJlQ" x="-10" y="18"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3Qs9ICWdEeGX6PuSE-DJlQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Q0R4CWdEeGX6PuSE-DJlQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Q0R4SWdEeGX6PuSE-DJlQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Q0R4iWdEeGX6PuSE-DJlQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Q0R4yWdEeGX6PuSE-DJlQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3Q0R5CWdEeGX6PuSE-DJlQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_3Q0R5SWdEeGX6PuSE-DJlQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FMLd4ECXEeGa5NwyW9TCXg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FlRTUECXEeGa5NwyW9TCXg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FlRTUUCXEeGa5NwyW9TCXg" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FlRTUkCXEeGa5NwyW9TCXg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FlR6YECXEeGa5NwyW9TCXg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FlR6YUCXEeGa5NwyW9TCXg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Q0R5iWdEeGX6PuSE-DJlQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KT8o8ECXEeGa5NwyW9TCXg" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wy1b0Fl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="12"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Q0R5yWdEeGX6PuSE-DJlQ" x="18" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_3Q0R6CWdEeGX6PuSE-DJlQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3Q0R6SWdEeGX6PuSE-DJlQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Qs9ISWdEeGX6PuSE-DJlQ" x="126" y="18"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_vcPiUCWdEeGX6PuSE-DJlQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vjc9kSWdEeGX6PuSE-DJlQ" x="364" y="211" width="136" height="46"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_hobr6_TXEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hobr7PTXEeCn1-FCrfecFg"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_18qdsO67EeCZ9MjsZTV1zw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hobr7fTXEeCn1-FCrfecFg" x="72" y="38" width="550" height="334"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LwPYADeoEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LwPYAjeoEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LwPYAzeoEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LwP_EDeoEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LwP_ETeoEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LwP_EjeoEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LwP_EzeoEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LwP_FDeoEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="statemachine.uml#_LuBKcDeoEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LwPYATeoEeGPyrZ5I3hMlA" x="198" y="396" width="424"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_f3mAUfTXEeCn1-FCrfecFg"/>
+ <element xmi:type="uml:Package" href="statemachine.uml#_DEJCwF81EeGbQoflzrdx0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_-EO-EPTXEeCn1-FCrfecFg" type="4013" source="_1pwFEPTXEeCn1-FCrfecFg" target="_vGo9YPTXEeCn1-FCrfecFg" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_-EQMMPTXEeCn1-FCrfecFg" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-EQMMfTXEeCn1-FCrfecFg" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-EQMMvTXEeCn1-FCrfecFg" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-EQMM_TXEeCn1-FCrfecFg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-EQMNPTXEeCn1-FCrfecFg" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-EQMNfTXEeCn1-FCrfecFg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-EQzQPTXEeCn1-FCrfecFg" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-EQzQfTXEeCn1-FCrfecFg" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_-EPlIPTXEeCn1-FCrfecFg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="statemachine.uml#_-DJY8PTXEeCn1-FCrfecFg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-EPlIfTXEeCn1-FCrfecFg" points="[3, -3, -94, 79]$[3, -76, -94, 6]$[85, -76, -12, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-ERaUPTXEeCn1-FCrfecFg" id="(0.45,0.15)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_nINGYPUHEeCn1-FCrfecFg" type="4013" source="_tE-AkPTXEeCn1-FCrfecFg" target="_vGo9YPTXEeCn1-FCrfecFg" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nIOUgPUHEeCn1-FCrfecFg" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nIOUgfUHEeCn1-FCrfecFg" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nIOUgvUHEeCn1-FCrfecFg" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nIOUg_UHEeCn1-FCrfecFg" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nIO7kPUHEeCn1-FCrfecFg" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nIO7kfUHEeCn1-FCrfecFg" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nIO7kvUHEeCn1-FCrfecFg" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nIO7k_UHEeCn1-FCrfecFg" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_nINGYfUHEeCn1-FCrfecFg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="statemachine.uml#_nILRMPUHEeCn1-FCrfecFg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nINGYvUHEeCn1-FCrfecFg" points="[2, 10, -87, -56]$[2, 68, -87, 2]$[84, 68, -5, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6HRBECQdEeGj_4swHBbKwg" id="(0.55,0.8)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4FuAECQdEeGj_4swHBbKwg" id="(0.45,0.2)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="__0oGACWdEeGX6PuSE-DJlQ" type="4013" source="_4jFLACWdEeGX6PuSE-DJlQ" target="_3QYNACWdEeGX6PuSE-DJlQ" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="__0otECWdEeGX6PuSE-DJlQ" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__0otESWdEeGX6PuSE-DJlQ" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__0pUICWdEeGX6PuSE-DJlQ" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__0pUISWdEeGX6PuSE-DJlQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__0pUIiWdEeGX6PuSE-DJlQ" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__0pUIyWdEeGX6PuSE-DJlQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="__0pUJCWdEeGX6PuSE-DJlQ" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="__0pUJSWdEeGX6PuSE-DJlQ" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="__0oGASWdEeGX6PuSE-DJlQ" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="statemachine.uml#__zI4QCWdEeGX6PuSE-DJlQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__0oGAiWdEeGX6PuSE-DJlQ" points="[3, 0, -79, -2]$[81, 0, -1, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__006UCWdEeGX6PuSE-DJlQ" id="(0.85,0.35)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__006USWdEeGX6PuSE-DJlQ" id="(0.05,0.45)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_jFHzwDeoEeGPyrZ5I3hMlA" type="4002" source="_LwPYADeoEeGPyrZ5I3hMlA" target="_hobr0PTXEeCn1-FCrfecFg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_jFHzwTeoEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jFHzwjeoEeGPyrZ5I3hMlA" points="[1, -2, 0, 34]$[-1, -26, -2, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jFnjADeoEeGPyrZ5I3hMlA" id="(0.294811320754717,0.03333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jFnjATeoEeGPyrZ5I3hMlA" id="(0.4581818181818182,0.9700598802395209)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_YNvtYP3HEeC1YdT2qA0bjA" type="PapyrusUMLClassDiagram" name="PackageTemplates" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Z7x8gP3HEeC1YdT2qA0bjA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z7yjkP3HEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z7yjkf3HEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z7yjkv3HEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z7yjk_3HEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z7yjlP3HEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Z7yjlf3HEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z7yjlv3HEeC1YdT2qA0bjA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z7yjl_3HEeC1YdT2qA0bjA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Z7yjmP3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z7yjmf3HEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_afY_4P3HEeC1YdT2qA0bjA" type="3033" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_afaOAP3HEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_afaOAf3HEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_afaOAv3HEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_afaOA_3HEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_afaOBP3HEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_afa1EP3HEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_afa1Ef3HEeC1YdT2qA0bjA" type="7038">
+ <children xmi:type="notation:Shape" xmi:id="_bZdbcP3HEeC1YdT2qA0bjA" type="3031" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="pathmap://QML_CORE/core.uml#_wfwIoOUYEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bZdbcf3HEeC1YdT2qA0bjA" x="16" y="7"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_afa1Ev3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_afa1E_3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_afa1FP3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_afa1Ff3HEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:TemplateSignature" href="pathmap://QML_CORE/core.uml#_rNm5kOUYEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_afY_4f3HEeC1YdT2qA0bjA" x="181" y="8"/>
+ </children>
+ <element xmi:type="uml:Package" href="pathmap://QML_CORE/core.uml#_m7SIwOUYEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z7x8gf3HEeC1YdT2qA0bjA" x="106" y="65"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_dpF7wP3HEeC1YdT2qA0bjA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpGi0P3HEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpGi0f3HEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpHJ4P3HEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpHJ4f3HEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dpHJ4v3HEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dpHJ4_3HEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dpHJ5P3HEeC1YdT2qA0bjA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_dpHJ5f3HEeC1YdT2qA0bjA" type="7016">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_dpHJ5v3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpHJ5_3HEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_g_daoP3HEeC1YdT2qA0bjA" type="3033" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_g_eBsP3HEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g_eBsf3HEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_g_eBsv3HEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g_eBs_3HEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_g_eBtP3HEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_g_eBtf3HEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_g_eBtv3HEeC1YdT2qA0bjA" type="7038">
+ <children xmi:type="notation:Shape" xmi:id="_iFmjUP3HEeC1YdT2qA0bjA" type="3031" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:ClassifierTemplateParameter" href="pathmap://QML_CORE/core.uml#_WzWVUPfBEd2TbIfwytOyPA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iFmjUf3HEeC1YdT2qA0bjA" x="25" y="14"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_g_eBt_3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_g_eBuP3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_g_eBuf3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_eBuv3HEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:TemplateSignature" href="pathmap://QML_CORE/core.uml#_V0b2APfBEd2TbIfwytOyPA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_daof3HEeC1YdT2qA0bjA" x="159" y="3"/>
+ </children>
+ <element xmi:type="uml:Package" href="pathmap://QML_CORE/core.uml#_mMCK8PiPEd2UhpY2Y3WUyg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dpF7wf3HEeC1YdT2qA0bjA" x="450" y="72"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jCm-IP3HEeC1YdT2qA0bjA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jCoMQP3HEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jCoMQf3HEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jCoMQv3HEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jCoMQ_3HEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jCoMRP3HEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jCoMRf3HEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jCozUP3HEeC1YdT2qA0bjA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jCozUf3HEeC1YdT2qA0bjA" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_xlmtgP3HEeC1YdT2qA0bjA" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xlnUkP3HEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xlnUkf3HEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xlnUkv3HEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xlnUk_3HEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xln7oP3HEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xln7of3HEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xln7ov3HEeC1YdT2qA0bjA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xln7o_3HEeC1YdT2qA0bjA" visible="false" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xln7pP3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xln7pf3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xln7pv3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xln7p_3HEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xln7qP3HEeC1YdT2qA0bjA" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xln7qf3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xln7qv3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xln7q_3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xln7rP3HEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xln7rf3HEeC1YdT2qA0bjA" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xln7rv3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xln7r_3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xln7sP3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xln7sf3HEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_ens7QOUTEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xlmtgf3HEeC1YdT2qA0bjA" x="41" y="10" height="43"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_jCozUv3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jCozU_3HEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Package" href="statemachine.uml#_9J39cOupEeCTfOY57pgE3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jCnlMP3HEeC1YdT2qA0bjA" x="108" y="234"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rjNtQP3HEeC1YdT2qA0bjA" type="2007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rjOUUP3HEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rjOUUf3HEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rjOUUv3HEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rjOUU_3HEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rjOUVP3HEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rjOUVf3HEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rjOUVv3HEeC1YdT2qA0bjA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rjOUV_3HEeC1YdT2qA0bjA" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_vWQhEP3HEeC1YdT2qA0bjA" type="3010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vWRIIP3HEeC1YdT2qA0bjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vWRvMP3HEeC1YdT2qA0bjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vWRvMf3HEeC1YdT2qA0bjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vWRvMv3HEeC1YdT2qA0bjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vWRvM_3HEeC1YdT2qA0bjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vWRvNP3HEeC1YdT2qA0bjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vWRvNf3HEeC1YdT2qA0bjA" type="5014"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vWSWQP3HEeC1YdT2qA0bjA" visible="false" type="7011">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vWSWQf3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vWSWQv3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vWSWQ_3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWSWRP3HEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vWSWRf3HEeC1YdT2qA0bjA" visible="false" type="7012">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vWSWRv3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vWSWR_3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vWSWSP3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWSWSf3HEeC1YdT2qA0bjA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vWSWSv3HEeC1YdT2qA0bjA" visible="false" type="7013">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_vWSWS_3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_vWSWTP3HEeC1YdT2qA0bjA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_vWSWTf3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWSWTv3HEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_u-qioOUTEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vWQhEf3HEeC1YdT2qA0bjA" x="35" y="10" height="43"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rjO7YP3HEeC1YdT2qA0bjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rjO7Yf3HEeC1YdT2qA0bjA"/>
+ </children>
+ <element xmi:type="uml:Package" href="statemachine.uml#_i9AuoOUTEd-P08Bciq_LqQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rjNtQf3HEeC1YdT2qA0bjA" x="451" y="234"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_YNvtYf3HEeC1YdT2qA0bjA"/>
+ <element xmi:type="uml:Model" href="statemachine.uml#_ago_QOUTEd-P08Bciq_LqQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_lvW4QP3HEeC1YdT2qA0bjA" type="4011" source="_jCm-IP3HEeC1YdT2qA0bjA" target="_Z7x8gP3HEeC1YdT2qA0bjA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lvYtcP3HEeC1YdT2qA0bjA" type="6030">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lvYtcf3HEeC1YdT2qA0bjA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lvW4Qf3HEeC1YdT2qA0bjA" fontName="Sans Serif"/>
+ <element xmi:type="uml:PackageMerge" href="statemachine.uml#_lvUcAP3HEeC1YdT2qA0bjA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lvW4Qv3HEeC1YdT2qA0bjA" points="[4, -30, 0, 104]$[10, -120, 6, 14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nNSO0P3HEeC1YdT2qA0bjA" id="(0.555,0.22)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lvaioP3HEeC1YdT2qA0bjA" id="(0.58,0.86)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_ttE8wP3HEeC1YdT2qA0bjA" type="4011" source="_rjNtQP3HEeC1YdT2qA0bjA" target="_dpF7wP3HEeC1YdT2qA0bjA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ttGK4P3HEeC1YdT2qA0bjA" type="6030">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ttGK4f3HEeC1YdT2qA0bjA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ttE8wf3HEeC1YdT2qA0bjA" fontName="Sans Serif"/>
+ <element xmi:type="uml:PackageMerge" href="statemachine.uml#_ttDuoP3HEeC1YdT2qA0bjA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ttE8wv3HEeC1YdT2qA0bjA" points="[4, -30, 5, 132]$[99, -155, 100, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EiU2MP3IEeC1YdT2qA0bjA" id="(0.62,0.24)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D6k5sP3IEeC1YdT2qA0bjA" id="(0.58,0.98)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_IOfaAF8wEeGerN33d-RdRg" type="CompositeStructure" name="Animation" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_xEbfcF81EeGbQoflzrdx0g" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xEctkF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xEctkV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xEctkl81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xEctk181EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xEctlF81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xEctlV81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uqphYF_1EeGbQoflzrdx0g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uqqIcF_1EeGbQoflzrdx0g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uqqIcV_1EeGbQoflzrdx0g" key="StereotypeList" value="FCM::Singleton"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uqqIcl_1EeGbQoflzrdx0g" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uqqIc1_1EeGbQoflzrdx0g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uqqIdF_1EeGbQoflzrdx0g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xEdUoF81EeGbQoflzrdx0g" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xEdUoV81EeGbQoflzrdx0g" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_xEdUol81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xEdUo181EeGbQoflzrdx0g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_z-vUcF81EeGbQoflzrdx0g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-v7gF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-v7gV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-v7gl81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-v7g181EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-v7hF81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z-wikF81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8C1GsF81EeGbQoflzrdx0g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8cT9sF81EeGbQoflzrdx0g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8cT9sV81EeGbQoflzrdx0g" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8cT9sl81EeGbQoflzrdx0g" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8cT9s181EeGbQoflzrdx0g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8cT9tF81EeGbQoflzrdx0g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z-wikV81EeGbQoflzrdx0g" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_z-wikl81EeGbQoflzrdx0g" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z-wik181EeGbQoflzrdx0g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_z-wilF81EeGbQoflzrdx0g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_z94Y0F81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z-vUcV81EeGbQoflzrdx0g" x="-10" y="64" width="20" height="20"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_xELAwF81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xEbfcV81EeGbQoflzrdx0g" x="203" y="116" width="284" height="128"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_IOfaAV8wEeGerN33d-RdRg"/>
+ <element xmi:type="uml:Package" href="statemachine.uml#_F5DMoF8wEeGerN33d-RdRg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_KwHpQF8wEeGerN33d-RdRg" type="PapyrusUMLClassDiagram" name="Animation" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_L-7lwF8wEeGerN33d-RdRg" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L-8M0F8wEeGerN33d-RdRg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L-8M0V8wEeGerN33d-RdRg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L-8M0l8wEeGerN33d-RdRg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L-8M018wEeGerN33d-RdRg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L-8M1F8wEeGerN33d-RdRg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L-8M1V8wEeGerN33d-RdRg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L-8z4F8wEeGerN33d-RdRg" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_L-8z4V8wEeGerN33d-RdRg" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_L-8z4l8wEeGerN33d-RdRg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_L-8z418wEeGerN33d-RdRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_L-8z5F8wEeGerN33d-RdRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L-8z5V8wEeGerN33d-RdRg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_L-8z5l8wEeGerN33d-RdRg" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_N3uTYF8wEeGerN33d-RdRg" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="statemachine.uml#_N3m-oF8wEeGerN33d-RdRg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_N3uTYV8wEeGerN33d-RdRg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZghigF8wEeGerN33d-RdRg" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="statemachine.uml#_ZgY_oF8wEeGerN33d-RdRg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZghigV8wEeGerN33d-RdRg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_L-8z518wEeGerN33d-RdRg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_L-8z6F8wEeGerN33d-RdRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_L-8z6V8wEeGerN33d-RdRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L-8z6l8wEeGerN33d-RdRg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_L-9a8F8wEeGerN33d-RdRg" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_L-9a8V8wEeGerN33d-RdRg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_L-9a8l8wEeGerN33d-RdRg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_L-9a818wEeGerN33d-RdRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L-9a9F8wEeGerN33d-RdRg"/>
+ </children>
+ <element xmi:type="uml:Interface" href="statemachine.uml#_L-I7kF8wEeGerN33d-RdRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L-7lwV8wEeGerN33d-RdRg" x="175" y="129" width="339" height="88"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_KwHpQV8wEeGerN33d-RdRg"/>
+ <element xmi:type="uml:Package" href="statemachine.uml#_F5DMoF8wEeGerN33d-RdRg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Ogua0F81EeGbQoflzrdx0g" type="CompositeStructure" name="ContainerRules2" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_PMf7sF81EeGbQoflzrdx0g" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PMhJ0F81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PMhw4F81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PMhw4V81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PMhw4l81EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PMhw4181EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PMhw5F81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_PMiX8F81EeGbQoflzrdx0g" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PMiX8V81EeGbQoflzrdx0g" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_Qj1iEF81EeGbQoflzrdx0g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj2JIF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj2JIV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj2wMF81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj2wMV81EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj2wMl81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj2wM181EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qj2wNF81EeGbQoflzrdx0g" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-fvQsFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-ib_YFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Qj2wNV81EeGbQoflzrdx0g" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Qj2wNl81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qj2wN181EeGbQoflzrdx0g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XQCUUF81EeGbQoflzrdx0g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XQDicF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XQDicV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XQDicl81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XQDic181EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XQDidF81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XQEJgF81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XQEJgV81EeGbQoflzrdx0g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_78ZxQFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7_ndUFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XQEJgl81EeGbQoflzrdx0g" x="36" y="13"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XQEJg181EeGbQoflzrdx0g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XQEJhF81EeGbQoflzrdx0g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_a4NKMOuMEeCTfOY57pgE3w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XQCUUV81EeGbQoflzrdx0g" x="35" y="35"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_IeWosV81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qj1iEV81EeGbQoflzrdx0g" x="10" y="10" width="225"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Qj5McF81EeGbQoflzrdx0g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj5zgF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj6akF81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj6akV81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj6akl81EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj6ak181EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj6alF81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qj7BoF81EeGbQoflzrdx0g" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9fG6IFl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9f6ycFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Qj7BoV81EeGbQoflzrdx0g" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Qj7Bol81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qj7Bo181EeGbQoflzrdx0g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_X1IlcF81EeGbQoflzrdx0g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_X1JMgF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X1JMgV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_X1JzkF81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X1JzkV81EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_X1Jzkl81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X1Jzk181EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X1JzlF81EeGbQoflzrdx0g" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X1JzlV81EeGbQoflzrdx0g" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_X1Jzll81EeGbQoflzrdx0g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_X1Jzl181EeGbQoflzrdx0g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_MzO8gPNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_X1IlcV81EeGbQoflzrdx0g" x="-10" y="23"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_IeWotV81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qj5McV81EeGbQoflzrdx0g" x="99" y="85" width="181" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Qj8PwF81EeGbQoflzrdx0g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj9d4F81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj9d4V81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj9d4l81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj9d4181EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qj-E8F81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qj-E8V81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qj-E8l81EeGbQoflzrdx0g" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_APNqQFl-EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ASBGoFl-EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Qj-E8181EeGbQoflzrdx0g" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Qj-E9F81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qj-E9V81EeGbQoflzrdx0g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Yl57EF81EeGbQoflzrdx0g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl6iIF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl7JMF81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl7JMV81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl7JMl81EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl7JM181EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl7JNF81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Yl7JNV81EeGbQoflzrdx0g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__G-P0Fl9EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__MRmkFl9EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Yl7JNl81EeGbQoflzrdx0g" x="27" y="-8"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Yl7JN181EeGbQoflzrdx0g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Yl7JOF81EeGbQoflzrdx0g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_u7pk4PRUEeCKVJwdD4MMsg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Yl57EV81EeGbQoflzrdx0g" x="18" y="-10"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Yl7wQF81EeGbQoflzrdx0g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl8XUF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl8XUV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl8XUl81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl8XU181EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl8XVF81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl8XVV81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Yl8XVl81EeGbQoflzrdx0g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AxQnYFl-EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_A02G4Fl-EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Yl8XV181EeGbQoflzrdx0g" x="27" y="18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Yl8-YF81EeGbQoflzrdx0g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Yl8-YV81EeGbQoflzrdx0g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_xUE3QF8wEeGerN33d-RdRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Yl7wQV81EeGbQoflzrdx0g" x="18" y="54"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Yl8-Yl81EeGbQoflzrdx0g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl9lcF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl9lcV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl9lcl81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl9lc181EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Yl-MgF81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Yl-MgV81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Yl-Mgl81EeGbQoflzrdx0g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Mui4wFl-EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M0qH0Fl-EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Yl-Mg181EeGbQoflzrdx0g" x="31" y="-18"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Yl-MhF81EeGbQoflzrdx0g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Yl-MhV81EeGbQoflzrdx0g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Yl8-Y181EeGbQoflzrdx0g" x="164" y="27"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_IeXPwV81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qj8PwV81EeGbQoflzrdx0g" x="27" y="175" width="190" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Qj_6IF81EeGbQoflzrdx0g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QkAhMF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QkAhMV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QkBIQF81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QkBIQV81EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QkBIQl81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QkBIQ181EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QkBIRF81EeGbQoflzrdx0g" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GH4t0Fl-EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GN7EYFl-EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_QkBIRV81EeGbQoflzrdx0g" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_QkBIRl81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkBIR181EeGbQoflzrdx0g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Zh1X0F81EeGbQoflzrdx0g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zh1-4F81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zh1-4V81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zh1-4l81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zh1-4181EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zh1-5F81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zh1-5V81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Zh1-5l81EeGbQoflzrdx0g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GtCCQFl-EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G06y8Fl-EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Zh1-5181EeGbQoflzrdx0g" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Zh1-6F81EeGbQoflzrdx0g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Zh1-6V81EeGbQoflzrdx0g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_ZjdOAP-EEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zh1X0V81EeGbQoflzrdx0g" x="-10" y="27"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_IeXPxV81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qj_6IV81EeGbQoflzrdx0g" x="378" y="175" width="145" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pTX98F81EeGbQoflzrdx0g" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pTYlAF81EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pTYlAV81EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pTYlAl81EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pTYlA181EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pTYlBF81EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pTYlBV81EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pTYlBl81EeGbQoflzrdx0g" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IKthMFl-EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IQmt0Fl-EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pTZMEF81EeGbQoflzrdx0g" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pTZMEV81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pTZMEl81EeGbQoflzrdx0g"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_CYirkF82EeGbQoflzrdx0g" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CYjSoF82EeGbQoflzrdx0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CYjSoV82EeGbQoflzrdx0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CYjSol82EeGbQoflzrdx0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CYjSo182EeGbQoflzrdx0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CYj5sF82EeGbQoflzrdx0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CYj5sV82EeGbQoflzrdx0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CYj5sl82EeGbQoflzrdx0g" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N0M5QFl-EeKFQZ_XV_Kn6g" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N3Vs0Fl-EeKFQZ_XV_Kn6g" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CYj5s182EeGbQoflzrdx0g" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_CYj5tF82EeGbQoflzrdx0g" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_CYj5tV82EeGbQoflzrdx0g" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="statemachine.uml#_z94Y0F81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CYirkV82EeGbQoflzrdx0g" x="-10" y="23"/>
+ </children>
+ <element xmi:type="uml:Property" href="statemachine.uml#_pTD04F81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pTX98V81EeGbQoflzrdx0g" x="225" y="283" width="226"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PMiX8l81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PMiX8181EeGbQoflzrdx0g"/>
+ </children>
+ <element xmi:type="uml:Class" href="statemachine.uml#_IeWosF81EeGbQoflzrdx0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PMf7sV81EeGbQoflzrdx0g" x="157" y="88" width="609" height="372"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Ogua0V81EeGbQoflzrdx0g"/>
+ <element xmi:type="uml:Package" href="statemachine.uml#_DEJCwF81EeGbQoflzrdx0g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Z-W7wF81EeGbQoflzrdx0g" type="4013" source="_Yl57EF81EeGbQoflzrdx0g" target="_X1IlcF81EeGbQoflzrdx0g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z-YJ4F81EeGbQoflzrdx0g" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Z-YJ4V81EeGbQoflzrdx0g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z-YJ4l81EeGbQoflzrdx0g" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Z-YJ4181EeGbQoflzrdx0g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z-Yw8F81EeGbQoflzrdx0g" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Z-Yw8V81EeGbQoflzrdx0g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Z-Yw8l81EeGbQoflzrdx0g" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Z-Yw8181EeGbQoflzrdx0g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Z-W7wV81EeGbQoflzrdx0g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="statemachine.uml#_IeXPyV81EeGbQoflzrdx0g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Z-W7wl81EeGbQoflzrdx0g" points="[-1, -10, -45, 33]$[-1, -43, -45, 0]$[34, -43, -10, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_bD3LQF81EeGbQoflzrdx0g" type="4013" source="_XQCUUF81EeGbQoflzrdx0g" target="_X1IlcF81EeGbQoflzrdx0g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bD4ZYF81EeGbQoflzrdx0g" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bD4ZYV81EeGbQoflzrdx0g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bD4ZYl81EeGbQoflzrdx0g" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bD4ZY181EeGbQoflzrdx0g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bD4ZZF81EeGbQoflzrdx0g" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bD4ZZV81EeGbQoflzrdx0g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bD4ZZl81EeGbQoflzrdx0g" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bD4ZZ181EeGbQoflzrdx0g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bD3LQV81EeGbQoflzrdx0g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="statemachine.uml#_IeXP0F81EeGbQoflzrdx0g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bD3LQl81EeGbQoflzrdx0g" points="[6, 4, -45, -53]$[6, 51, -45, -6]$[41, 51, -10, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eBtnAF82EeGbQoflzrdx0g" id="(0.15,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_boYNkF81EeGbQoflzrdx0g" type="4013" source="_Yl8-Yl81EeGbQoflzrdx0g" target="_Zh1X0F81EeGbQoflzrdx0g" routing="Rectilinear" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_boY0oF81EeGbQoflzrdx0g" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_boY0oV81EeGbQoflzrdx0g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_boY0ol81EeGbQoflzrdx0g" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_boY0o181EeGbQoflzrdx0g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_boY0pF81EeGbQoflzrdx0g" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_boY0pV81EeGbQoflzrdx0g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_boZbsF81EeGbQoflzrdx0g" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_boZbsV81EeGbQoflzrdx0g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_boYNkV81EeGbQoflzrdx0g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="statemachine.uml#_IeXP1181EeGbQoflzrdx0g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_boYNkl81EeGbQoflzrdx0g" points="[10, 8, -167, 12]$[87, 8, -90, 12]$[167, -3, -10, 1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QGaMcFl-EeKFQZ_XV_Kn6g" id="(0.7,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_G9WTgF82EeGbQoflzrdx0g" type="4013" source="_Yl7wQF81EeGbQoflzrdx0g" target="_CYirkF82EeGbQoflzrdx0g" routing="Rectilinear" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UWzA4F82EeGbQoflzrdx0g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UW-AAF82EeGbQoflzrdx0g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UW-AAV82EeGbQoflzrdx0g" key="StereotypeList" value="FCM::Connector"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UW-AAl82EeGbQoflzrdx0g" key="PropStereoDisplay" value="FCM::Connector.ic"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UW-AA182EeGbQoflzrdx0g" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UW-nEF82EeGbQoflzrdx0g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G9W6kF82EeGbQoflzrdx0g" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G9W6kV82EeGbQoflzrdx0g" x="31" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G9W6kl82EeGbQoflzrdx0g" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G9W6k182EeGbQoflzrdx0g" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G9W6lF82EeGbQoflzrdx0g" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G9W6lV82EeGbQoflzrdx0g" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G9W6ll82EeGbQoflzrdx0g" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_G9XhoF82EeGbQoflzrdx0g" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_G9WTgV82EeGbQoflzrdx0g" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="statemachine.uml#_G9Gb4F82EeGbQoflzrdx0g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_G9WTgl82EeGbQoflzrdx0g" points="[0, 10, -109, -68]$[0, 78, -109, 0]$[106, 78, -3, 0]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_G967QF82EeGbQoflzrdx0g" id="(0.15,0.25)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.uml
new file mode 100644
index 00000000000..9bbee31cb3f
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/statemachine.uml
@@ -0,0 +1,417 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_ago_QOUTEd-P08Bciq_LqQ" name="statemachine">
+ <ownedComment xmi:id="_9BpKIOuLEeCTfOY57pgE3w" annotatedElement="_u-qioOUTEd-P08Bciq_LqQ">
+ <body>Call event interceptor, interacts with state-machine. It will handle in particular call events that are intercepted by the port operations</body>
+ </ownedComment>
+ <ownedComment xmi:id="_LuBKcDeoEeGPyrZ5I3hMlA" annotatedElement="_18qdsO67EeCZ9MjsZTV1zw">
+ <body>Container rule for state machine realization. It consists of a collaboration of a call event interceptor, an event pool, the state-machine itself and a thread for this state-machine. The latter means that the state-machine will execute in its own thread and poll the pool for new events.</body>
+ </ownedComment>
+ <packageImport xmi:id="_e8dN0OUUEd-P08Bciq_LqQ">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_76Rc8OuMEeCTfOY57pgE3w">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packageImport xmi:id="_guUMgOuNEeCTfOY57pgE3w">
+ <importedPackage xmi:type="uml:Model" href="pathmap://Papyrus_Alf_LIBRARIES/alflibrary.uml#_0bBI4Hy5EeCKy5kSqd4eVw"/>
+ </packageImport>
+ <packageImport xmi:id="_Ov3NkF82EeGbQoflzrdx0g">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_DISTRIBUTION/distribution.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_i9AuoOUTEd-P08Bciq_LqQ" name="SMInterceptor">
+ <packageImport xmi:id="_q2WCYOUTEd-P08Bciq_LqQ">
+ <importedPackage href="pathmap://QML_CORE/core.uml#_mMCK8PiPEd2UhpY2Y3WUyg"/>
+ </packageImport>
+ <packageMerge xmi:id="_ttDuoP3HEeC1YdT2qA0bjA">
+ <mergedPackage href="pathmap://QML_CORE/core.uml#_mMCK8PiPEd2UhpY2Y3WUyg"/>
+ </packageMerge>
+ <packagedElement xmi:type="uml:Class" xmi:id="_u-qioOUTEd-P08Bciq_LqQ" clientDependency="_qJxa0OUUEd-P08Bciq_LqQ _d3GdYOUWEd-P08Bciq_LqQ" name="CI_CallEvent">
+ <generalization xmi:id="_3LpLIOUTEd-P08Bciq_LqQ">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_Zx2ZUA1jEd6tvthBDl600Q"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_a4NKMOuMEeCTfOY57pgE3w" name="out" visibility="public" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/core.uml#_elkpwPQREeCovO8AYZymZQ"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c9A6kOuMEeCTfOY57pgE3w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_c9IPUOuMEeCTfOY57pgE3w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_c9ZVEOuMEeCTfOY57pgE3w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_bL0sACVvEeGaL60JjVj19Q" name="portID">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bMjEwCVvEeGaL60JjVj19Q" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bMjr0CVvEeGaL60JjVj19Q" value="1"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_qJxa0OUUEd-P08Bciq_LqQ" name="derived realization of I" client="_u-qioOUTEd-P08Bciq_LqQ">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/core.uml#_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <contract href="pathmap://QML_CORE/core.uml#_ZzlzMPfBEd2TbIfwytOyPA"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_mlIZ8OUVEd-P08Bciq_LqQ" name="&lt;%name%>" specification="_2qJyMOUUEd-P08Bciq_LqQ">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public multiply(operation : Operation)]
+
+// create event with operationID/portID and pass call
+core::ContainerServices::CallEvent_ event;
+event.operationID = ID_[operation.name/];
+event.portID = portID;
+out->writeEvent (event);
+[if not (type = null)]return [/if]rconn->[operation.cppCall()/];
+[/template]</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_2qJyMOUUEd-P08Bciq_LqQ" name="[name/]" method="_mlIZ8OUVEd-P08Bciq_LqQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_d3GdYOUWEd-P08Bciq_LqQ" name="Dependency0" client="_u-qioOUTEd-P08Bciq_LqQ">
+ <supplier xmi:type="uml:Enumeration" href="pathmap://QML_CORE/core.uml#_2oxDIPiPEd2UhpY2Y3WUyg"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_9J39cOupEeCTfOY57pgE3w" name="StateMachine">
+ <packageMerge xmi:id="_lvUcAP3HEeC1YdT2qA0bjA">
+ <mergedPackage href="pathmap://QML_CORE/core.uml#_m7SIwOUYEd-P08Bciq_LqQ"/>
+ </packageMerge>
+ <packagedElement xmi:type="uml:Class" xmi:id="_ens7QOUTEd-P08Bciq_LqQ" clientDependency="_Q2C7UBE0EeG3cfLoiI6G7g _RqmkwBE0EeG3cfLoiI6G7g _F3inwCT7EeGXBt65HZzY7g _3GXWYCWSEeGB3KV6qwTHBw" name="StateMachine">
+ <generalization xmi:id="_ar4sECWNEeGB3KV6qwTHBw">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:id="_dFBg4OupEeCTfOY57pgE3w" name="m_currentState" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dFurgOupEeCTfOY57pgE3w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dFurgeupEeCTfOY57pgE3w" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_jeMpcOupEeCTfOY57pgE3w">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_S9FLsO3GEeCHv5BGhoZ8CA" name="executor" aggregation="shared" association="_S99VcO3GEeCHv5BGhoZ8CA">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_6uRBMOuqEeCTfOY57pgE3w"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S9FLsu3GEeCHv5BGhoZ8CA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S9FLse3GEeCHv5BGhoZ8CA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_u7pk4PRUEeCKVJwdD4MMsg" name="ep" visibility="public" aggregation="composite">
+ <type xmi:type="uml:Interface" href="pathmap://QML_CORE/core.uml#_omxU4PNAEeCovO8AYZymZQ"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yCHmkPRUEeCKVJwdD4MMsg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yCNtMPRUEeCKVJwdD4MMsg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yCXeMPRUEeCKVJwdD4MMsg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_xUE3QF8wEeGerN33d-RdRg" name="animOut" visibility="public" type="_L-I7kF8wEeGerN33d-RdRg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xotDcF8wEeGerN33d-RdRg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xotqgF8wEeGerN33d-RdRg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_xowGwF8wEeGerN33d-RdRg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_3GXWYCWSEeGB3KV6qwTHBw" name="derived realization of ILifeCycle" client="_ens7QOUTEd-P08Bciq_LqQ">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/SystemInterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/SystemInterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_rglykOupEeCTfOY57pgE3w" name="processEvents" visibility="package" specification="_b5mYgCaiEeGRo-gX9igNzw">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::modellibs::core::acceleo::StateMachine/]
+
+[template public stateMachineD(clazz : Class)]
+[clazz.StateMachine()/]
+[/template]
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_p_0sUCaiEeGRo-gX9igNzw" name="activate" specification="_3GbAwCWSEeGB3KV6qwTHBw">
+ <language>C/C++</language>
+ <body>for (;;) {
+ processEvents();
+}</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_3GbAwCWSEeGB3KV6qwTHBw" name="activate" method="_p_0sUCaiEeGRo-gX9igNzw"/>
+ <ownedOperation xmi:id="_3G6I8CWSEeGB3KV6qwTHBw" name="deactivate"/>
+ <ownedOperation xmi:id="_b5mYgCaiEeGRo-gX9igNzw" name="processEvents" method="_rglykOupEeCTfOY57pgE3w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_S99VcO3GEeCHv5BGhoZ8CA" name="stateMachine_executor" memberEnd="_S99Vce3GEeCHv5BGhoZ8CA _S9FLsO3GEeCHv5BGhoZ8CA">
+ <ownedEnd xmi:id="_S99Vce3GEeCHv5BGhoZ8CA" name="stateMachine" type="_ens7QOUTEd-P08Bciq_LqQ" association="_S99VcO3GEeCHv5BGhoZ8CA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S998ge3GEeCHv5BGhoZ8CA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S998gO3GEeCHv5BGhoZ8CA" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_Q2C7UBE0EeG3cfLoiI6G7g" name="Dependency0" client="_ens7QOUTEd-P08Bciq_LqQ">
+ <supplier xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_JRmo0PNAEeCovO8AYZymZQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_RqmkwBE0EeG3cfLoiI6G7g" name="Dependency1" client="_ens7QOUTEd-P08Bciq_LqQ">
+ <supplier xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_WkkjoPNUEeCovO8AYZymZQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_F3inwCT7EeGXBt65HZzY7g" name="Usage1" client="_ens7QOUTEd-P08Bciq_LqQ">
+ <supplier xmi:type="uml:Class" href="pathmap://QML_CORE/osal.uml#_oSgIME_BEdy2tpS719xBwQ"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_CV_x4O68EeCZ9MjsZTV1zw" name="CallEvents"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_KEMp0CNYEeGj_4swHBbKwg" name="CallEventConfigurator"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_F5DMoF8wEeGerN33d-RdRg" name="Animation">
+ <packagedElement xmi:type="uml:Class" xmi:id="_xELAwF81EeGbQoflzrdx0g" clientDependency="_bmInQF_4EeGbQoflzrdx0g" name="AnimationServer">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_z94Y0F81EeGbQoflzrdx0g" name="animServer" visibility="public" type="_L-I7kF8wEeGerN33d-RdRg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2Y7e8F81EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2ZEB0F81EeGbQoflzrdx0g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2ZSEQF81EeGbQoflzrdx0g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_bmInQF_4EeGbQoflzrdx0g" name="derived realization of IAnimation" client="_xELAwF81EeGbQoflzrdx0g" supplier="_L-I7kF8wEeGerN33d-RdRg" contract="_L-I7kF8wEeGerN33d-RdRg"/>
+ <ownedOperation xmi:id="_bmbiMF_4EeGbQoflzrdx0g" name="enterState">
+ <ownedParameter xmi:id="_OJXykGEpEeGzd_21sXyuog" name="stateEnum">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OJZAsGEpEeGzd_21sXyuog" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OJZAsWEpEeGzd_21sXyuog" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OJZnwGEpEeGzd_21sXyuog" name="eInstance">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OJa14GEpEeGzd_21sXyuog" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OJbc8GEpEeGzd_21sXyuog" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_bmo9kF_4EeGbQoflzrdx0g" name="leaveState">
+ <ownedParameter xmi:id="_OKJOoGEpEeGzd_21sXyuog" name="eState">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OKKcwGEpEeGzd_21sXyuog" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OKLD0GEpEeGzd_21sXyuog" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OKLD0WEpEeGzd_21sXyuog" name="eInstance">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OKMR8GEpEeGzd_21sXyuog" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OKM5AGEpEeGzd_21sXyuog"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_L-I7kF8wEeGerN33d-RdRg" name="IAnimation">
+ <ownedOperation xmi:id="_N3m-oF8wEeGerN33d-RdRg" name="enterState" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_YmEFYV8wEeGerN33d-RdRg">
+ <body>&lt;&lt;TextualRepresentation>>public abstract enterState (in stateEnum : StateMachine::Short, in eInstance : String) ;</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_NbPhQGEpEeGzd_21sXyuog" name="stateEnum">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NbYEIGEpEeGzd_21sXyuog" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NbbHcGEpEeGzd_21sXyuog" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_NbdjsGEpEeGzd_21sXyuog" name="eInstance">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NbupcGEpEeGzd_21sXyuog" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Nb2lQGEpEeGzd_21sXyuog" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ZgY_oF8wEeGerN33d-RdRg" name="leaveState" visibility="public" isAbstract="true">
+ <ownedComment xmi:id="_df_owF8wEeGerN33d-RdRg">
+ <body>&lt;&lt;TextualRepresentation>>public abstract leaveState(in eState : StateMachine::Short, in eInstance : String) ;</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_OJfHUGEpEeGzd_21sXyuog" name="eState">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OJr7oGEpEeGzd_21sXyuog" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OJwNEGEpEeGzd_21sXyuog" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_OJ0egGEpEeGzd_21sXyuog" name="eInstance">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OKCg8GEpEeGzd_21sXyuog" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OKHZcGEpEeGzd_21sXyuog" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_DEJCwF81EeGbQoflzrdx0g" name="rules">
+ <packagedElement xmi:type="uml:Class" xmi:id="_18qdsO67EeCZ9MjsZTV1zw" name="StateMachineWCallEvents">
+ <ownedAttribute xmi:id="_LyxAEPTXEeCn1-FCrfecFg" name="callEventInterceptor" visibility="public" type="_u-qioOUTEd-P08Bciq_LqQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MGWDYPTXEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MGfNUPTXEeCn1-FCrfecFg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_MGz9cPTXEeCn1-FCrfecFg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_jXX54PTXEeCn1-FCrfecFg" name="eventPool" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_JRmo0PNAEeCovO8AYZymZQ"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l6kPYPTXEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l6k2cPTXEeCn1-FCrfecFg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_l6mEkPTXEeCn1-FCrfecFg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_mv6jAPTXEeCn1-FCrfecFg" name="stateMachine" visibility="public" type="_ens7QOUTEd-P08Bciq_LqQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ocG_EPTXEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ocHmIPTXEeCn1-FCrfecFg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ocI0QPTXEeCn1-FCrfecFg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_vcPiUCWdEeGX6PuSE-DJlQ" name="thread" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yS4YQCWdEeGX6PuSE-DJlQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yS4_UCWdEeGX6PuSE-DJlQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yS6NcCWdEeGX6PuSE-DJlQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_-DJY8PTXEeCn1-FCrfecFg" name="Connector-SM-Pool">
+ <end xmi:id="_-DKnEPTXEeCn1-FCrfecFg" partWithPort="_mv6jAPTXEeCn1-FCrfecFg" role="_u7pk4PRUEeCKVJwdD4MMsg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-DKnEvTXEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-DKnEfTXEeCn1-FCrfecFg" value="1"/>
+ </end>
+ <end xmi:id="_-DL1MPTXEeCn1-FCrfecFg" partWithPort="_jXX54PTXEeCn1-FCrfecFg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-DL1MvTXEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-DL1MfTXEeCn1-FCrfecFg" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_MzO8gPNAEeCovO8AYZymZQ"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_nILRMPUHEeCn1-FCrfecFg" name="connector-CallEvent-Pool">
+ <end xmi:id="_nIL4QPUHEeCn1-FCrfecFg" partWithPort="_LyxAEPTXEeCn1-FCrfecFg" role="_a4NKMOuMEeCTfOY57pgE3w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nIL4QvUHEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nIL4QfUHEeCn1-FCrfecFg" value="1"/>
+ </end>
+ <end xmi:id="_nIMfUPUHEeCn1-FCrfecFg" partWithPort="_jXX54PTXEeCn1-FCrfecFg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nIMfUvUHEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nIMfUfUHEeCn1-FCrfecFg" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_MzO8gPNAEeCovO8AYZymZQ"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="__zI4QCWdEeGX6PuSE-DJlQ" name="connector-SM-thread">
+ <end xmi:id="__zI4QSWdEeGX6PuSE-DJlQ" partWithPort="_mv6jAPTXEeCn1-FCrfecFg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__zI4QyWdEeGX6PuSE-DJlQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__zI4QiWdEeGX6PuSE-DJlQ" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ </end>
+ <end xmi:id="__zJfUCWdEeGX6PuSE-DJlQ" partWithPort="_vcPiUCWdEeGX6PuSE-DJlQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__zJfUiWdEeGX6PuSE-DJlQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__zJfUSWdEeGX6PuSE-DJlQ" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_ZjdOAP-EEd6628OhKk_dpg"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_b1zNUOusEeCTfOY57pgE3w" name="StateMachine"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IeWosF81EeGbQoflzrdx0g" name="StateMachineWCallEventsAndAnim">
+ <ownedAttribute xmi:id="_IeWosV81EeGbQoflzrdx0g" name="callEventInterceptor" visibility="public" type="_u-qioOUTEd-P08Bciq_LqQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeWos181EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeWosl81EeGbQoflzrdx0g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IeWotF81EeGbQoflzrdx0g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_IeWotV81EeGbQoflzrdx0g" name="eventPool" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_JRmo0PNAEeCovO8AYZymZQ"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeWot181EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeWotl81EeGbQoflzrdx0g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IeXPwF81EeGbQoflzrdx0g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_IeXPwV81EeGbQoflzrdx0g" name="stateMachine" visibility="public" type="_ens7QOUTEd-P08Bciq_LqQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeXPw181EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeXPwl81EeGbQoflzrdx0g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IeXPxF81EeGbQoflzrdx0g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_IeXPxV81EeGbQoflzrdx0g" name="thread" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeXPx181EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeXPxl81EeGbQoflzrdx0g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_IeXPyF81EeGbQoflzrdx0g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_pTD04F81EeGbQoflzrdx0g" name="eclipseServer" visibility="public" type="_xELAwF81EeGbQoflzrdx0g" aggregation="shared">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rhbJ4F81EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rhpMUF81EeGbQoflzrdx0g" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_rhtdwF81EeGbQoflzrdx0g">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_IeXPyV81EeGbQoflzrdx0g" name="Connector-SM-Pool">
+ <end xmi:id="_IeXPyl81EeGbQoflzrdx0g" partWithPort="_IeXPwV81EeGbQoflzrdx0g" role="_u7pk4PRUEeCKVJwdD4MMsg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeXPzF81EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeXPy181EeGbQoflzrdx0g" value="1"/>
+ </end>
+ <end xmi:id="_IeXPzV81EeGbQoflzrdx0g" partWithPort="_IeWotV81EeGbQoflzrdx0g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeXPz181EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeXPzl81EeGbQoflzrdx0g" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_MzO8gPNAEeCovO8AYZymZQ"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_IeXP0F81EeGbQoflzrdx0g" name="connector-CallEvent-Pool">
+ <end xmi:id="_IeXP0V81EeGbQoflzrdx0g" partWithPort="_IeWosV81EeGbQoflzrdx0g" role="_a4NKMOuMEeCTfOY57pgE3w">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeXP0181EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeXP0l81EeGbQoflzrdx0g" value="1"/>
+ </end>
+ <end xmi:id="_IeXP1F81EeGbQoflzrdx0g" partWithPort="_IeWotV81EeGbQoflzrdx0g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeXP1l81EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeXP1V81EeGbQoflzrdx0g" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_MzO8gPNAEeCovO8AYZymZQ"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_IeXP1181EeGbQoflzrdx0g" name="connector-SM-thread">
+ <end xmi:id="_IeXP2F81EeGbQoflzrdx0g" partWithPort="_IeXPwV81EeGbQoflzrdx0g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeXP2l81EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeXP2V81EeGbQoflzrdx0g" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ </end>
+ <end xmi:id="_IeXP2181EeGbQoflzrdx0g" partWithPort="_IeXPxV81EeGbQoflzrdx0g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IeXP3V81EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IeXP3F81EeGbQoflzrdx0g" value="1"/>
+ <role xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_ZjdOAP-EEd6628OhKk_dpg"/>
+ </end>
+ </ownedConnector>
+ <ownedConnector xmi:id="_G9Gb4F82EeGbQoflzrdx0g" name="Connector1">
+ <end xmi:id="_G9HC8F82EeGbQoflzrdx0g" partWithPort="_IeXPwV81EeGbQoflzrdx0g" role="_xUE3QF8wEeGerN33d-RdRg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G9HC8l82EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G9HC8V82EeGbQoflzrdx0g" value="1"/>
+ </end>
+ <end xmi:id="_G9HqAF82EeGbQoflzrdx0g" partWithPort="_pTD04F81EeGbQoflzrdx0g" role="_z94Y0F81EeGbQoflzrdx0g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G9HqAl82EeGbQoflzrdx0g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G9HqAV82EeGbQoflzrdx0g" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_e8kikOUUEd-P08Bciq_LqQ">
+ <eAnnotations xmi:id="_fAD7cOUUEd-P08Bciq_LqQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_cnmBUBE1EeG3cfLoiI6G7g">
+ <eAnnotations xmi:id="_cz4J0BE1EeG3cfLoiI6G7g" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:InteractionComponent xmi:id="_hanSUOUUEd-P08Bciq_LqQ" base_Class="_u-qioOUTEd-P08Bciq_LqQ"/>
+ <FCM:Template xmi:id="_9E8EUOUUEd-P08Bciq_LqQ" base_Element="_2qJyMOUUEd-P08Bciq_LqQ" kind="LoopOperations"/>
+ <FCM:Port xmi:id="_a45twOuMEeCTfOY57pgE3w" base_Port="_a4NKMOuMEeCTfOY57pgE3w">
+ <kind href="pathmap://QML_CORE/core.uml#_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:ContainerRule xmi:id="_gsWFgOusEeCTfOY57pgE3w" base_Class="_b1zNUOusEeCTfOY57pgE3w" extensionKind="Aggregation" extension="_uC4BwOusEeCTfOY57pgE3w"/>
+ <FCM:ContainerRule xmi:id="_IDtioO68EeCZ9MjsZTV1zw" base_Class="_CV_x4O68EeCZ9MjsZTV1zw" extensionKind="InterceptAllPorts" interceptor="_hanSUOUUEd-P08Bciq_LqQ"/>
+ <FCM:Port xmi:id="_u7qzAPRUEeCKVJwdD4MMsg" base_Port="_u7pk4PRUEeCKVJwdD4MMsg">
+ <kind href="pathmap://QML_CORE/core.uml#_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:ContainerRule xmi:id="_RmD0YPTXEeCn1-FCrfecFg" base_Class="_18qdsO67EeCZ9MjsZTV1zw"/>
+ <FCM:InterceptionRule xmi:id="_Z5CnUPUQEeCn1-FCrfecFg" interceptionKind="InterceptAllIn" base_Property="_LyxAEPTXEeCn1-FCrfecFg"/>
+ <Cpp:CppInclude xmi:id="_eGpZQBE1EeG3cfLoiI6G7g" body="#include &lt;OS_AL/Tracing/Trace.h>&#xA;" base_class="_ens7QOUTEd-P08Bciq_LqQ"/>
+ <FCM:InstanceConfigurator xmi:id="_QQYfQCNYEeGj_4swHBbKwg" base_Class="_KEMp0CNYEeGj_4swHBbKwg"/>
+ <FCM:UseInstanceConfigurator xmi:id="_StgB8CNYEeGj_4swHBbKwg" base_Class="_u-qioOUTEd-P08Bciq_LqQ" configurator="_QQYfQCNYEeGj_4swHBbKwg"/>
+ <FCM:ConfigurationProperty xmi:id="_uhdD8CVvEeGaL60JjVj19Q" base_Property="_bL0sACVvEeGaL60JjVj19Q"/>
+ <FCM:DerivedElement xmi:id="_3GrfcCWSEeGB3KV6qwTHBw" base_Element="_3GbAwCWSEeGB3KV6qwTHBw">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_3G7-ICWSEeGB3KV6qwTHBw" base_Element="_3G6I8CWSEeGB3KV6qwTHBw">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:Template xmi:id="_nngKECaiEeGRo-gX9igNzw" base_Element="_b5mYgCaiEeGRo-gX9igNzw"/>
+ <FCM:Port xmi:id="_JZGWgF8xEeGerN33d-RdRg" base_Port="_xUE3QF8wEeGerN33d-RdRg">
+ <kind href="pathmap://QML_CORE/core.uml#_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:ContainerRule xmi:id="_IeZE8F81EeGbQoflzrdx0g" base_Class="_IeWosF81EeGbQoflzrdx0g"/>
+ <FCM:InterceptionRule xmi:id="_IeaTEF81EeGbQoflzrdx0g" interceptionKind="InterceptAllIn" base_Property="_IeWosV81EeGbQoflzrdx0g"/>
+ <FCM:Port xmi:id="_5cn5cF81EeGbQoflzrdx0g" base_Port="_z94Y0F81EeGbQoflzrdx0g">
+ <kind href="pathmap://QML_CORE/core.uml#_wySlkFRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Connector xmi:id="_RfomgF82EeGbQoflzrdx0g" base_Connector="_G9Gb4F82EeGbQoflzrdx0g">
+ <ic href="pathmap://QML_DISTRIBUTION/distribution.uml#_X9h_kNEBEd6acefdxFk2Lw"/>
+ </FCM:Connector>
+ <FCM:Singleton xmi:id="_uqa34F_1EeGbQoflzrdx0g" base_Class="_xELAwF81EeGbQoflzrdx0g"/>
+ <FCM:DerivedElement xmi:id="_bmnIYF_4EeGbQoflzrdx0g" base_Element="_bmbiMF_4EeGbQoflzrdx0g" source="_N3m-oF8wEeGerN33d-RdRg"/>
+ <FCM:DerivedElement xmi:id="_bmyukF_4EeGbQoflzrdx0g" base_Element="_bmo9kF_4EeGbQoflzrdx0g" source="_ZgY_oF8wEeGerN33d-RdRg"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.di
new file mode 100644
index 00000000000..b058f7ffb34
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.di
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmi:id="_dIWGYNVyEd-yf-a92HwCZA">
+ <pageList xmi:id="_dIWGYdVyEd-yf-a92HwCZA">
+ <availablePage xmi:id="_dIWGYtVyEd-yf-a92HwCZA">
+ <emfPageIdentifier href="sysinterfaces.notation#_e6WycG4rEd-0rs2VEGIwsA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="sysinterfaces.notation#_SNBrsPNAEeCovO8AYZymZQ"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_dIWGY9VyEd-yf-a92HwCZA" currentSelection="_dIWGZdVyEd-yf-a92HwCZA">
+ <windows xmi:id="_dIWGZNVyEd-yf-a92HwCZA">
+ <children xsi:type="di:TabFolder" xmi:id="_dIWGZdVyEd-yf-a92HwCZA">
+ <children>
+ <emfPageIdentifier href="sysinterfaces.notation#_SNBrsPNAEeCovO8AYZymZQ"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.notation
new file mode 100644
index 00000000000..7adc1f8b80c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.notation
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_e6WycG4rEd-0rs2VEGIwsA" type="CompositeStructure" name="NewDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_e6WycW4rEd-0rs2VEGIwsA"/>
+ <element xmi:type="uml:Model" href="sysinterfaces.uml#_yS1-UGo_Ed-39pfn3cZo5Q"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_SNBrsPNAEeCovO8AYZymZQ" type="PapyrusUMLClassDiagram" name="Interfaces" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_eKPEkPNAEeCovO8AYZymZQ" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKProPNAEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKProfNAEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKProvNAEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKPro_NAEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKQSsPNAEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKQSsfNAEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eKQSsvNAEeCovO8AYZymZQ" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKQSs_NAEeCovO8AYZymZQ" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKQStPNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKQStfNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKQStvNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKQSt_NAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKQSuPNAEeCovO8AYZymZQ" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_gt5UIPNAEeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="sysinterfaces.uml#_asFRoAweEd6it_RkGhz_AA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gt5UIfNAEeCovO8AYZymZQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKQSufNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKQSuvNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKQSu_NAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKQSvPNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKQSvfNAEeCovO8AYZymZQ" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKQSvvNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKQSv_NAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKQSwPNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKQSwfNAEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="sysinterfaces.uml#_Xb-y0AweEd6it_RkGhz_AA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKPEkfNAEeCovO8AYZymZQ" x="52" y="36" width="100" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eKRg0PNAEeCovO8AYZymZQ" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKRg0vNAEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKRg0_NAEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKRg1PNAEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKRg1fNAEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKSH4PNAEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKSH4fNAEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eKSH4vNAEeCovO8AYZymZQ" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKSH4_NAEeCovO8AYZymZQ" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKSH5PNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKSH5fNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKSH5vNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKSH5_NAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKSH6PNAEeCovO8AYZymZQ" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_gt57MPNAEeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="sysinterfaces.uml#__aGzICUUEd6YR-YzyVnLng"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gt57MfNAEeCovO8AYZymZQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKSH6fNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKSH6vNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKSH6_NAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKSH7PNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKSH7fNAEeCovO8AYZymZQ" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKSH7vNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKSH7_NAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKSH8PNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKSH8fNAEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="sysinterfaces.uml#_7TuzoCUUEd6YR-YzyVnLng"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKRg0fNAEeCovO8AYZymZQ" x="54" y="171" height="69"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eKSu8PNAEeCovO8AYZymZQ" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKSu8vNAEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKSu8_NAEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKSu9PNAEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKTWAPNAEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKTWAfNAEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKTWAvNAEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eKTWA_NAEeCovO8AYZymZQ" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKTWBPNAEeCovO8AYZymZQ" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKTWBfNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKTWBvNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKTWB_NAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKTWCPNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKTWCfNAEeCovO8AYZymZQ" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_gt6iQPNAEeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gt6iQfNAEeCovO8AYZymZQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKTWCvNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKTWC_NAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKTWDPNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKTWDfNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKTWDvNAEeCovO8AYZymZQ" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKTWD_NAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKTWEPNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKTWEfNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKTWEvNAEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="sysinterfaces.uml#_BHFPQJsqEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKSu8fNAEeCovO8AYZymZQ" x="486" y="36" width="100" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eKT9EPNAEeCovO8AYZymZQ" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKT9EvNAEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKT9E_NAEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKUkIPNAEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKUkIfNAEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKUkIvNAEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKUkI_NAEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eKUkJPNAEeCovO8AYZymZQ" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKUkJfNAEeCovO8AYZymZQ" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKUkJvNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKUkJ_NAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKUkKPNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKUkKfNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKUkKvNAEeCovO8AYZymZQ" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_wY_7EPNAEeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wY_7EfNAEeCovO8AYZymZQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKUkK_NAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKUkLPNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKUkLfNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKUkLvNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKUkL_NAEeCovO8AYZymZQ" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKUkMPNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKUkMfNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKUkMvNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKUkM_NAEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKT9EfNAEeCovO8AYZymZQ" x="198" y="36" width="100" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eKVLMPNAEeCovO8AYZymZQ" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKVLMvNAEeCovO8AYZymZQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKVyQPNAEeCovO8AYZymZQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKVyQfNAEeCovO8AYZymZQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKVyQvNAEeCovO8AYZymZQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eKVyQ_NAEeCovO8AYZymZQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eKVyRPNAEeCovO8AYZymZQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eKVyRfNAEeCovO8AYZymZQ" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKVyRvNAEeCovO8AYZymZQ" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKVyR_NAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKVySPNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKVySfNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKVySvNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKVyS_NAEeCovO8AYZymZQ" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_gt7wYPNAEeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gt7wYfNAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gt8XcPNAEeCovO8AYZymZQ" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_gt8XcfNAEeCovO8AYZymZQ"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKVyTPNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKVyTfNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKVyTvNAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKVyT_NAEeCovO8AYZymZQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_eKVyUPNAEeCovO8AYZymZQ" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_eKVyUfNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_eKVyUvNAEeCovO8AYZymZQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_eKVyU_NAEeCovO8AYZymZQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKVyVPNAEeCovO8AYZymZQ"/>
+ </children>
+ <element xmi:type="uml:Interface" href="sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKVLMfNAEeCovO8AYZymZQ" x="342" y="36" width="100" height="82"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_SNBrsfNAEeCovO8AYZymZQ"/>
+ <element xmi:type="uml:Model" href="sysinterfaces.uml#_RodVAAweEd6it_RkGhz_AA"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.uml
new file mode 100644
index 00000000000..8ea61dc5053
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/sysinterfaces.uml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_RodVAAweEd6it_RkGhz_AA" name="sysinterfaces">
+ <packageImport xmi:id="_RodVAQweEd6it_RkGhz_AA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_3gokYF_LEd6vU6EJjexEKQ">
+ <importedPackage xmi:type="uml:Model" href="corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packageImport xmi:id="_TUuxcPN-EeCovO8AYZymZQ">
+ <importedPackage xmi:type="uml:Model" href="pathmap://Papyrus_Alf_LIBRARIES/alflibrary.uml#_0bBI4Hy5EeCKy5kSqd4eVw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_Xb-y0AweEd6it_RkGhz_AA" name="ITick">
+ <ownedOperation xmi:id="_asFRoAweEd6it_RkGhz_AA" name="tick"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_7TuzoCUUEd6YR-YzyVnLng" name="Dispatch">
+ <ownedOperation xmi:id="__aGzICUUEd6YR-YzyVnLng" name="dispatch" isAbstract="true">
+ <ownedParameter xmi:id="_y4XwwC3vEd6OqY3qskOtLQ" name="buffer">
+ <type xmi:type="uml:PrimitiveType" href="corba.uml#_IYEXcB-VEd6nGq8wpI2tjg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_BHFPQJsqEd61Eo3nmu3JhQ" name="IRunnable">
+ <ownedOperation xmi:id="_C9IK4JsqEd61Eo3nmu3JhQ" name="run"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_PTWzwCS-Ed-A_I32T0fkaA" name="IStart">
+ <generalization xmi:id="_XpdjECS-Ed-A_I32T0fkaA" general="_BHFPQJsqEd61Eo3nmu3JhQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_T3li0Dz6Ed-v9PxuTj6Elw" name="ILifeCycle">
+ <ownedOperation xmi:id="_WHyq4Dz6Ed-v9PxuTj6Elw" name="activate" isAbstract="true"/>
+ <ownedOperation xmi:id="_W7YrADz6Ed-v9PxuTj6Elw" name="deactivate" isAbstract="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rWJlYFVsEd-K97FBeYjNGA" name="CppCompilationReq"/>
+ <packagedElement xmi:type="uml:DataType" xmi:id="_xLfoIFVsEd-K97FBeYjNGA" name="CppCompilationReq">
+ <ownedAttribute xmi:id="_zNjmgFVsEd-K97FBeYjNGA" name="include" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2NQR0FVsEd-K97FBeYjNGA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2NRf8FVsEd-K97FBeYjNGA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_2NSHAFVsEd-K97FBeYjNGA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zbKksFVsEd-K97FBeYjNGA" name="libPaths" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Y8xwFVsEd-K97FBeYjNGA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5ZGiwFVsEd-K97FBeYjNGA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_5ZPFoFVsEd-K97FBeYjNGA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_5uSIkFVsEd-K97FBeYjNGA" name="libs" visibility="public" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7rCJIFVsEd-K97FBeYjNGA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7rOWYFVsEd-K97FBeYjNGA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_7rZVgFVsEd-K97FBeYjNGA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_omxU4PNAEeCovO8AYZymZQ" name="PoolControl">
+ <ownedOperation xmi:id="_2-9icPNAEeCovO8AYZymZQ" name="addEvent" visibility="public">
+ <ownedComment xmi:id="_7lclYPNAEeCovO8AYZymZQ">
+ <body>&lt;&lt;TextualRepresentation>>public addEvent () { }</body>
+ </ownedComment>
+ </ownedOperation>
+ </packagedElement>
+ <profileApplication xmi:id="_RodVAgweEd6it_RkGhz_AA">
+ <eAnnotations xmi:id="_RodVAwweEd6it_RkGhz_AA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_-PJq0F_LEd6vU6EJjexEKQ">
+ <eAnnotations xmi:id="_-PN8QF_LEd6vU6EJjexEKQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ </uml:Model>
+ <Cpp:CppPtr xmi:id="__cCUsF_LEd6vU6EJjexEKQ" base_parameter="_y4XwwC3vEd6OqY3qskOtLQ"/>
+ <FCM:Port xmi:id="_PlNFsJsqEd61Eo3nmu3JhQ"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.di
new file mode 100644
index 00000000000..61f9c2fac17
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.di
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmi:id="_FvVgcPjQEd-QxdT_yarEKQ">
+ <pageList xmi:id="_FvVgcfjQEd-QxdT_yarEKQ">
+ <availablePage xmi:id="_FvVgcvjQEd-QxdT_yarEKQ">
+ <emfPageIdentifier href="QompassModel.notation#__buPcGmXEd-z7r5RKMpEpA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="QompassModel.notation#_nAvkcFM2EeGB_eR1RCgBpw"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_FvWHgPjQEd-QxdT_yarEKQ" currentSelection="_FvWHgvjQEd-QxdT_yarEKQ">
+ <windows xmi:id="_FvWHgfjQEd-QxdT_yarEKQ">
+ <children xsi:type="di:TabFolder" xmi:id="_FvWHgvjQEd-QxdT_yarEKQ">
+ <children xmi:id="_FvWHg_jQEd-QxdT_yarEKQ">
+ <emfPageIdentifier href="QompassModel.notation#__buPcGmXEd-z7r5RKMpEpA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="QompassModel.notation#_nAvkcFM2EeGB_eR1RCgBpw"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.notation
new file mode 100644
index 00000000000..989a0923956
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.notation
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="__buPcGmXEd-z7r5RKMpEpA" type="PapyrusUMLClassDiagram" name="Class diagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_z01l4GnZEd-Ptdbbm65sVA" type="2005" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z02M8GnZEd-Ptdbbm65sVA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z02M8WnZEd-Ptdbbm65sVA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z020AGnZEd-Ptdbbm65sVA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z020AWnZEd-Ptdbbm65sVA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z020AmnZEd-Ptdbbm65sVA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z020A2nZEd-Ptdbbm65sVA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z020BGnZEd-Ptdbbm65sVA" type="5020"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z020BWnZEd-Ptdbbm65sVA" type="7009">
+ <children xmi:type="notation:Shape" xmi:id="_Fd1c4GnaEd-Ptdbbm65sVA" type="3009" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fd2D8GnaEd-Ptdbbm65sVA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fd2D8WnaEd-Ptdbbm65sVA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fd2D8mnaEd-Ptdbbm65sVA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fd2D82naEd-Ptdbbm65sVA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Fd2D9GnaEd-Ptdbbm65sVA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Fd2D9WnaEd-Ptdbbm65sVA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Fd2D9mnaEd-Ptdbbm65sVA" type="5017"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Fd2D92naEd-Ptdbbm65sVA" type="7010">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Fd2D-GnaEd-Ptdbbm65sVA"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Fd1c4WnaEd-Ptdbbm65sVA"/>
+ <element xmi:type="uml:Package" href="QompassModel.uml#_FdsS8GnaEd-Ptdbbm65sVA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Fd1c4mnaEd-Ptdbbm65sVA" x="44" y="17"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JQ2bgGnaEd-Ptdbbm65sVA" type="3009" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JQ3CkGnaEd-Ptdbbm65sVA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JQ3CkWnaEd-Ptdbbm65sVA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JQ3CkmnaEd-Ptdbbm65sVA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JQ3Ck2naEd-Ptdbbm65sVA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JQ3ClGnaEd-Ptdbbm65sVA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JQ3ClWnaEd-Ptdbbm65sVA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JQ3ClmnaEd-Ptdbbm65sVA" type="5017"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JQ3Cl2naEd-Ptdbbm65sVA" type="7010">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JQ3CmGnaEd-Ptdbbm65sVA"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JQ2bgWnaEd-Ptdbbm65sVA"/>
+ <element xmi:type="uml:Package" href="QompassModel.uml#_JQvt0GnaEd-Ptdbbm65sVA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JQ2bgmnaEd-Ptdbbm65sVA" x="44" y="130"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_P1qMUGnaEd-Ptdbbm65sVA" type="3009" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P1qzYGnaEd-Ptdbbm65sVA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P1qzYWnaEd-Ptdbbm65sVA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P1qzYmnaEd-Ptdbbm65sVA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P1qzY2naEd-Ptdbbm65sVA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P1racGnaEd-Ptdbbm65sVA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P1racWnaEd-Ptdbbm65sVA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P1racmnaEd-Ptdbbm65sVA" type="5017"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P1rac2naEd-Ptdbbm65sVA" type="7010">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P1radGnaEd-Ptdbbm65sVA"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_P1qMUWnaEd-Ptdbbm65sVA"/>
+ <element xmi:type="uml:Package" href="QompassModel.uml#_P1nJAGnaEd-Ptdbbm65sVA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P1qMUmnaEd-Ptdbbm65sVA" x="44" y="247"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z020BmnZEd-Ptdbbm65sVA" x="-23" y="20" width="412" height="373"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_z01l4WnZEd-Ptdbbm65sVA"/>
+ <element xmi:type="uml:Model" href="QompassModel.uml#__brzMGmXEd-z7r5RKMpEpA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z01l4mnZEd-Ptdbbm65sVA" x="118" y="98" width="359" height="396"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="__buPcWmXEd-z7r5RKMpEpA"/>
+ <element xmi:type="uml:Model" href="QompassModel.uml#__brzMGmXEd-z7r5RKMpEpA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_nAvkcFM2EeGB_eR1RCgBpw" type="CompositeStructure" name="Platform" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_nkwQcFM2EeGB_eR1RCgBpw" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nkw3gFM2EeGB_eR1RCgBpw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nkw3gVM2EeGB_eR1RCgBpw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nkw3glM2EeGB_eR1RCgBpw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nkw3g1M2EeGB_eR1RCgBpw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nkw3hFM2EeGB_eR1RCgBpw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nkw3hVM2EeGB_eR1RCgBpw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nkw3hlM2EeGB_eR1RCgBpw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nkw3h1M2EeGB_eR1RCgBpw" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_pkGSAFM2EeGB_eR1RCgBpw" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pkG5EFM2EeGB_eR1RCgBpw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pkG5EVM2EeGB_eR1RCgBpw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pkG5ElM2EeGB_eR1RCgBpw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pkG5E1M2EeGB_eR1RCgBpw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pkG5FFM2EeGB_eR1RCgBpw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pkG5FVM2EeGB_eR1RCgBpw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pkG5FlM2EeGB_eR1RCgBpw" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pkG5F1M2EeGB_eR1RCgBpw" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pkG5GFM2EeGB_eR1RCgBpw" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pkG5GVM2EeGB_eR1RCgBpw"/>
+ </children>
+ <element xmi:type="uml:Property" href="QompassModel.uml#_pkDOsFM2EeGB_eR1RCgBpw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pkGSAVM2EeGB_eR1RCgBpw" x="26" y="9" width="125"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nkw3iFM2EeGB_eR1RCgBpw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nkw3iVM2EeGB_eR1RCgBpw"/>
+ </children>
+ <element xmi:type="uml:Class" href="QompassModel.uml#_l0_jAFM2EeGB_eR1RCgBpw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nkwQcVM2EeGB_eR1RCgBpw" x="97" y="92" width="273" height="143"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_nAvkcVM2EeGB_eR1RCgBpw"/>
+ <element xmi:type="uml:Package" href="QompassModel.uml#_JQvt0GnaEd-Ptdbbm65sVA"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.uml
new file mode 100644
index 00000000000..ca5d49c660e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassModel.uml
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="__brzMGmXEd-z7r5RKMpEpA" name="Qompassmodel">
+ <packageImport xmi:id="_8AZ5IGnZEd-Ptdbbm65sVA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_8AagMGnZEd-Ptdbbm65sVA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_MARTE/marte.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_0gF6ADehEeGPyrZ5I3hMlA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_FdsS8GnaEd-Ptdbbm65sVA" name="components"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_JQvt0GnaEd-Ptdbbm65sVA" name="Platform">
+ <packagedElement xmi:type="uml:Node" xmi:id="_Y0o9gCgcEeC4DoMvE4KnsQ" name="Node0"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_l0_jAFM2EeGB_eR1RCgBpw" name="HwArchitecture">
+ <ownedAttribute xmi:id="_pkDOsFM2EeGB_eR1RCgBpw" name="node0" visibility="public" type="_Y0o9gCgcEeC4DoMvE4KnsQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q63QoFM2EeGB_eR1RCgBpw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_q65F0FM2EeGB_eR1RCgBpw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_q7b4YFM2EeGB_eR1RCgBpw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_P1nJAGnaEd-Ptdbbm65sVA" name="deployment"/>
+ <profileApplication xmi:id="_8AagMWnZEd-Ptdbbm65sVA">
+ <eAnnotations xmi:id="_8AbHQGnZEd-Ptdbbm65sVA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_8AbHQWnZEd-Ptdbbm65sVA">
+ <eAnnotations xmi:id="_8AbHQmnZEd-Ptdbbm65sVA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//HLAM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_8AbuUGnZEd-Ptdbbm65sVA">
+ <eAnnotations xmi:id="_8AbuUWnZEd-Ptdbbm65sVA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//GCM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_98SbACgbEeC4DoMvE4KnsQ">
+ <eAnnotations xmi:id="_-ASxQCgbEeC4DoMvE4KnsQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_AqXK0CgcEeC4DoMvE4KnsQ">
+ <eAnnotations xmi:id="_AukVYCgcEeC4DoMvE4KnsQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_ippoYFM2EeGB_eR1RCgBpw">
+ <eAnnotations xmi:id="_jCEIYFM2EeGB_eR1RCgBpw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:Target xmi:id="_egftECgcEeC4DoMvE4KnsQ" base_Node="_Y0o9gCgcEeC4DoMvE4KnsQ"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.di
new file mode 100644
index 00000000000..9ff5520aae6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.di
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="QompassSimple.notation#_N-FYQFM2EeGB_eR1RCgBpw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="QompassSimple.notation#_Pl_KMFM2EeGB_eR1RCgBpw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="QompassSimple.notation#_Rot28FM2EeGB_eR1RCgBpw"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="QompassSimple.notation#_N-FYQFM2EeGB_eR1RCgBpw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="QompassSimple.notation#_Pl_KMFM2EeGB_eR1RCgBpw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="QompassSimple.notation#_Rot28FM2EeGB_eR1RCgBpw"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.notation
new file mode 100644
index 00000000000..57b432f3a65
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.notation
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_N-FYQFM2EeGB_eR1RCgBpw" type="CompositeStructure" name="Components" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_N-FYQVM2EeGB_eR1RCgBpw"/>
+ <element xmi:type="uml:Package" href="QompassSimple.uml#_FdsS8GnaEd-Ptdbbm65sVA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Pl_KMFM2EeGB_eR1RCgBpw" type="PapyrusUMLClassDiagram" name="Deployment" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Pl_KMVM2EeGB_eR1RCgBpw"/>
+ <element xmi:type="uml:Package" href="QompassSimple.uml#_P1nJAGnaEd-Ptdbbm65sVA"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Rot28FM2EeGB_eR1RCgBpw" type="CompositeStructure" name="Platform" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_U10sIFM2EeGB_eR1RCgBpw" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U10sIlM2EeGB_eR1RCgBpw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U10sI1M2EeGB_eR1RCgBpw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U11TMFM2EeGB_eR1RCgBpw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U11TMVM2EeGB_eR1RCgBpw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U11TMlM2EeGB_eR1RCgBpw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U11TM1M2EeGB_eR1RCgBpw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U11TNFM2EeGB_eR1RCgBpw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_U11TNVM2EeGB_eR1RCgBpw" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_Vn6QYFM2EeGB_eR1RCgBpw" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Vn63cFM2EeGB_eR1RCgBpw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vn63cVM2EeGB_eR1RCgBpw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Vn63clM2EeGB_eR1RCgBpw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vn63c1M2EeGB_eR1RCgBpw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Vn63dFM2EeGB_eR1RCgBpw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vn63dVM2EeGB_eR1RCgBpw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Vn63dlM2EeGB_eR1RCgBpw" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Vn63d1M2EeGB_eR1RCgBpw" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Vn63eFM2EeGB_eR1RCgBpw" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vn63eVM2EeGB_eR1RCgBpw"/>
+ </children>
+ <element xmi:type="uml:Property" href="QompassSimple.uml#_Vm8nEFM2EeGB_eR1RCgBpw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vn6QYVM2EeGB_eR1RCgBpw" x="35" y="21" width="123"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_U11TNlM2EeGB_eR1RCgBpw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U11TN1M2EeGB_eR1RCgBpw"/>
+ </children>
+ <element xmi:type="uml:Class" href="QompassSimple.uml#_TAfiMFM2EeGB_eR1RCgBpw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U10sIVM2EeGB_eR1RCgBpw" x="99" y="102" width="235" height="142"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Rot28VM2EeGB_eR1RCgBpw"/>
+ <element xmi:type="uml:Package" href="QompassSimple.uml#_JQvt0GnaEd-Ptdbbm65sVA"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.uml
new file mode 100644
index 00000000000..00e92fc4577
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/wizardTemplates/QompassSimple.uml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="__brzMGmXEd-z7r5RKMpEpA" name="Qompassmodel">
+ <packageImport xmi:id="_8AZ5IGnZEd-Ptdbbm65sVA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_9AGMMDehEeGPyrZ5I3hMlA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_FdsS8GnaEd-Ptdbbm65sVA" name="components"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_JQvt0GnaEd-Ptdbbm65sVA" name="Platform">
+ <packagedElement xmi:type="uml:Node" xmi:id="_ubZDgCgcEeC4DoMvE4KnsQ" name="Node0"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_TAfiMFM2EeGB_eR1RCgBpw" name="HwArchitecture">
+ <ownedAttribute xmi:id="_Vm8nEFM2EeGB_eR1RCgBpw" name="node0" visibility="public" type="_ubZDgCgcEeC4DoMvE4KnsQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WogKsFM2EeGB_eR1RCgBpw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WouNIFM2EeGB_eR1RCgBpw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_WpZikFM2EeGB_eR1RCgBpw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_P1nJAGnaEd-Ptdbbm65sVA" name="deployment"/>
+ <profileApplication xmi:id="_8AagMWnZEd-Ptdbbm65sVA">
+ <eAnnotations xmi:id="_8AbHQGnZEd-Ptdbbm65sVA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_pDULkCgcEeC4DoMvE4KnsQ">
+ <eAnnotations xmi:id="_pI-HoCgcEeC4DoMvE4KnsQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_sitqoCgcEeC4DoMvE4KnsQ">
+ <eAnnotations xmi:id="_sm5AACgcEeC4DoMvE4KnsQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_ctGKYFM2EeGB_eR1RCgBpw">
+ <eAnnotations xmi:id="_dA53MFM2EeGB_eR1RCgBpw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:Target xmi:id="_wgsjICgcEeC4DoMvE4KnsQ" base_Node="_ubZDgCgcEeC4DoMvE4KnsQ"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/plugin.properties
new file mode 100644
index 00000000000..2e655ccb549
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass core model library (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/plugin.xml
new file mode 100644
index 00000000000..d322e449580
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/plugin.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension id="ProvideInterface" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.ProvideInterface" portKindName="ProvideInterface">
+ class=&quot;org.eclipse.papyrus.qompass.designer.gentools.cpp.CppLanguageSupport&quot;
+ </client>
+ </extension>
+ <extension id="UseInterface" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.UseInterface" portKindName="UseInterface">
+ </client>
+ </extension>
+ <extension id="PullConsumer" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.PullConsumer" portKindName="PullConsumer">
+ </client>
+ </extension>
+ <extension id="PushConsumer" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.PushConsumer" portKindName="PushConsumer">
+ </client>
+ </extension>
+ <extension id="PushProducer" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.PushProducer" portKindName="PushProducer">
+ </client>
+ </extension>
+ <extension id="ExtendedPort" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.ExtendedPort" portKindName="ExtendedPort">
+ </client>
+ </extension>
+ <extension id="ExtendedPort2" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.ExtendedPort2" portKindName="ExtendedPort2">
+ </client>
+ </extension>
+ <extension id="UseConjIntf" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.UseConjIntf" portKindName="UseConjIntf">
+ </client>
+ </extension>
+ <extension id="PushProdPullCons" point="org.eclipse.papyrus.fcm.profile.fcmPortMappingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.mappingrules.PushProdPullCons" portKindName="PushProdPullCons">
+ </client>
+ </extension>
+ <extension point="org.eclipse.papyrus.fcm.profile.fcmEmbeddingRule">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.embeddingrules.AccordCall" portKindName="AccordCall">
+ </client>
+ </extension>
+ <extension id="QML_CORE" point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping source="pathmap://QML_CORE/" target="platform:/plugin/org.eclipse.papyrus.qompass.modellibs.core/models/library/">
+ </mapping>
+ </extension>
+ <extension name="CORBA basic types" point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library description="Qompass: CORBA basic types (long, wchar, ...)" iconpath="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif" name="Qompass model library: CORBA basic types" path="pathmap://QML_CORE/corba.uml" provider="CEA LIST">
+ </library>
+ </extension>
+ <extension name="Qompass core library" point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library description="Qompass core library" iconpath="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif" name="Qompass model library: basic" path="pathmap://QML_CORE/core.uml" provider="CEA LIST">
+ </library>
+ </extension>
+ <extension name="FIFO" point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library iconpath="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif" name="Qompass model library: FIFO" path="pathmap://QML_CORE/fifo.uml" provider="CEA LIST">
+ </library>
+ </extension>
+ <extension name="OS-AL" point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library iconpath="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif" name="Qompass model library: OS abstraction layer (OS-AL)" path="pathmap://QML_CORE/osal.uml" provider="CEA LIST">
+ </library>
+ </extension>
+ <extension name="StateMachine" point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library iconpath="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif" name="Qompass model library: State-machines" path="pathmap://QML_CORE/statemachine.uml" provider="CEA LIST">
+ </library>
+ </extension>
+ <extension point="org.eclipse.papyrus.uml.diagram.wizards.templates">
+ <template
+ id="org.eclipse.papyrus.qompass.designer.modelibs.core.wizardTemplates.QompassForMARTE"
+ language="uml"
+ name="Qompass for MARTE"
+ file="models/wizardTemplates/QompassModel.uml"
+ di_file="models/wizardTemplates/QompassModel.di"
+ notation_file="models/wizardTemplates/QompassModel.notation">
+ </template>
+ <template
+ id="org.eclipse.papyrus.qompass.designer.modelibs.core.wizardTemplates.QompassSimple"
+ language="uml"
+ name="Qompass without MARTE"
+ file="models/wizardTemplates/QompassSimple.uml"
+ di_file="models/wizardTemplates/QompassSimple.di"
+ notation_file="models/wizardTemplates/QompassSimple.notation">
+ </template>
+ </extension>
+ <extension point="org.eclipse.papyrus.qompass.designer.core.instanceConfig">
+ <client class="org.eclipse.papyrus.qompass.modellibs.core.CallEventConfigurator" configuratorID="CallEventConfigurator">
+ </client>
+ </extension>
+ <extension point="org.eclipse.ui.newWizards">
+ <category
+ id = "org.eclipse.papyrus.qompass.designer.examples"
+ parentCategory="org.eclipse.ui.Examples"
+ name="Qompass examples">
+ </category>
+ <wizard
+ category="org.eclipse.ui.Examples/org.eclipse.papyrus.qompass.designer.examples"
+ class="org.eclipse.papyrus.qompass.modellibs.core.HelloWorldModelWizard"
+ finalPerspective="org.eclipse.papyrus.infra.core.perspective"
+ icon="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif"
+ id="org.eclipse.papyrus.qompass.modellibs.core.new.HelloWorld"
+ name="Qompass hello world example">
+ <selection class="org.eclipse.core.resources.IResource"/>
+ </wizard>
+ <wizard
+ category="org.eclipse.ui.Examples/org.eclipse.papyrus.qompass.designer.examples"
+ class="org.eclipse.papyrus.qompass.modellibs.core.ProducerConsumerModelWizard"
+ finalPerspective="org.eclipse.papyrus.infra.core.perspective"
+ icon="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif"
+ id="org.eclipse.papyrus.qompass.modellibs.core.new.ProducerConsumer"
+ name="Qompass producer/comsumer example">
+ <selection class="org.eclipse.core.resources.IResource"/>
+ </wizard>
+ </extension>
+ <extension point="org.eclipse.help.toc">
+ <toc file="help/modellibs-core-examples.xml"/>
+ <toc file="help/modellibs-core-library.xml"/>
+ </extension>
+</plugin> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/Activator.java
new file mode 100644
index 00000000000..514ac7ffeb4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.papyrus.qompass.modellibs.core;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.designer.stdMappingRules"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/CallEventConfigurator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/CallEventConfigurator.java
new file mode 100644
index 00000000000..37962f0cf26
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/CallEventConfigurator.java
@@ -0,0 +1,49 @@
+package org.eclipse.papyrus.qompass.modellibs.core;
+
+import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.IInstanceConfigurator;
+import org.eclipse.papyrus.qompass.designer.core.transformations.ContainerContext;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Property;
+
+/**
+ * Configurator of a call event (for a state machine): it sets the
+ * portID attribute of the call event interceptor. The interceptor uses this
+ * attribute to initialize the portID attribute within the produced CallEvent
+ * data structure.
+ *
+ * @author ansgar
+ *
+ */
+public class CallEventConfigurator implements IInstanceConfigurator {
+
+ public final static String portAttribute = "portID";
+
+ /**
+ * Configure the instance of a CallEvent interceptor. The configuration parameter is the
+ * index of the port which gets intercepted. It is obtained via an enumeration
+ *
+ * @see org.eclipse.papyrus.qompass.designer.core.extensions.IInstanceConfigurator#configureInstance(org.eclipse.uml2.uml.InstanceSpecification,
+ * org.eclipse.uml2.uml.InstanceSpecification, org.eclipse.uml2.uml.Port)
+ *
+ * @param instance
+ * the instance that should be configured
+ * @param componentPart
+ * the part representing this instance
+ * @param context
+ * container context
+ */
+ public void configureInstance(InstanceSpecification instance, Property componentPart, ContainerContext context)
+ {
+ if(context != null) {
+ // make sure that there is an enum par port
+ String literalName = "port_" + UMLTool.varName(context.port);
+ literalName = "0";
+ // the associated enumeration is declared by the statemachine (which is included by the bootloader as well)
+
+ DepPlanUtils.configureProperty(instance, portAttribute, literalName);
+ }
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/HelloWorldModelWizard.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/HelloWorldModelWizard.java
new file mode 100644
index 00000000000..a5cc725f5b4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/HelloWorldModelWizard.java
@@ -0,0 +1,8 @@
+package org.eclipse.papyrus.qompass.modellibs.core;
+
+public class HelloWorldModelWizard extends ModelCopyWizard {
+
+ public HelloWorldModelWizard () {
+ modelName = "HelloWorld";
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/ModelCopyWizard.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/ModelCopyWizard.java
new file mode 100644
index 00000000000..ff2e7874aea
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/ModelCopyWizard.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright CEA-LIST 2009
+ * available under EPL 1.0 licence
+ *
+ * This file is part of the Qompass tool chain (www.ec3m.net)
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * $Id$
+ * Initial developer - Ansgar Radermacher
+ */
+
+package org.eclipse.papyrus.qompass.modellibs.core;
+
+import java.io.InputStream;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
+
+abstract public class ModelCopyWizard extends Wizard implements INewWizard {
+
+ private IStructuredSelection selection;
+
+ protected String modelName;
+
+ WizardNewFileCreationPage selectionPage;
+
+ public static final String modelLocation = "/models/examples/";
+
+ @Override
+ public boolean performFinish() {
+ // String fileName = diagramModelFilePage.getFileName();
+ IFile model = copyModel(modelName);
+
+ if(model == null) {
+ return false;
+ }
+
+ IWorkbench wb = PlatformUI.getWorkbench();
+ IWorkbenchPage page = wb.getActiveWorkbenchWindow().getActivePage();
+ try {
+ IEditorDescriptor desc = wb.getEditorRegistry().getDefaultEditor(modelName + ".di");
+ IEditorInput input = new FileEditorInput(model);
+ page.openEditor(input, desc.getId(), false);
+ } catch (PartInitException e) {
+ // log.error(e);
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Copy a model (.di/.notation/.uml) into the selected destination folder
+ *
+ * @param sourceModelName
+ */
+ public IFile copyModel(String sourceModelName) {
+ try {
+ IFile model = copyFile(sourceModelName + ".di");
+ copyFile(sourceModelName + ".notation");
+ copyFile(sourceModelName + ".uml");
+
+ return model;
+ } catch (CoreException e) {
+ Shell shell = new Shell();
+ String reason = e.getMessage();
+ if(reason.endsWith("already exists.")) {
+ reason += "\nChoose another parent folder or delete existing model first.";
+ }
+ MessageDialog.openError(shell, "Cannot create copy", reason);
+ return null;
+ }
+ }
+
+ /**
+ * copy a source file into the selected destination folder
+ *
+ * @param sourceFileName
+ */
+ public IFile copyFile(String sourceFileName) throws CoreException {
+ IPath destPath = selectionPage.getContainerFullPath();
+ InputStream is = getClass().getResourceAsStream(modelLocation + sourceFileName);
+ if(is != null) {
+ destPath = destPath.append(sourceFileName);
+ IFile destFile = ResourcesPlugin.getWorkspace().getRoot().getFile(destPath);
+ destFile.create(is, false, null);
+ return destFile;
+ }
+ else {
+ throw new CoreException(new Status(0, Activator.PLUGIN_ID, "Cannot open file <" + modelLocation + sourceFileName + ">"));
+ }
+ }
+
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ // this.workbench = workbench;
+ this.selection = selection;
+ setWindowTitle("Create Qompass example");
+ setNeedsProgressMonitor(true);
+ }
+
+
+ /**
+ * @generated
+ */
+ @Override
+ public void addPages() {
+ selectionPage = new WizardNewFileCreationPage("Copy model", selection);
+ selectionPage.setTitle("Select parent folder for example " + modelName);
+ selectionPage.setDescription("Do not change file name (will be ignored)");
+ selectionPage.setFileName(modelName);
+ addPage(selectionPage);
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/ProducerConsumerModelWizard.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/ProducerConsumerModelWizard.java
new file mode 100644
index 00000000000..7d3a4f8364e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/ProducerConsumerModelWizard.java
@@ -0,0 +1,8 @@
+package org.eclipse.papyrus.qompass.modellibs.core;
+
+public class ProducerConsumerModelWizard extends ModelCopyWizard {
+
+ public ProducerConsumerModelWizard () {
+ modelName = "ProducerConsumer";
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/Marshalling.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/Marshalling.mtl
new file mode 100644
index 00000000000..abccef12b44
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/Marshalling.mtl
@@ -0,0 +1,70 @@
+[module Marshalling('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool /]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp /]
+
+[comment
+ All marshalling mechanisms produce an Event, since we need a common data type.
+ An advantage of the Event data type is that ID and kind can be used to
+ identify data without having to unmarshall.
+ (what about target instance?) [=> as long as an event is within the pool of an object, this information is
+ not required on each event. But it needs to be added in the moment, an event is transferred.
+
+Also: two different tasks: Call => CallEvent
+ CallEvent => buffer
+ Call => buffer
+
+ CallEvent => Call
+ buffer => CallEvent
+ operations marshall all,
+
+ An alternative option would be to produce a buffer only
+ In case of OO marshalling, there is no need to produce an event via
+ an out port, but to pass the buffer in the call
+
+ Better(?): Marshalling returns CallEvent or buffer
+ marshall
+/]
+[template public marshallStruct(operation : Operation)]
+struct ParamData {
+[for (parameter : Parameter | parametersInInout(operation))]
+ [cppType(type) /] [name/];
+[/for]
+};
+Event event;
+event.ID = [operation.name/];
+event.kind = CallEvent;
+ParamData * data = &event.params;
+[for (parameter : Parameter | parametersInInout(operation))]
+ data->[parameter.name/] = [parameter.name/];
+[/for]
+out->dispatch(event);
+[/template]
+
+[template public marshallASN(operation : Operation)]
+Event event;
+event.ID = [operation.name/];
+event.kind = CallEvent;
+// create buffer for ASN.1 data types
+char * pBuffer = &event.params + sizeof(event.params); // grows backwards
+int encodedSize = 0; // total size of encoded buffer
+AsnLen itemSize; // size of an encoded item
+int operationID = ID_[operation.name/];
+
+// now marshall in and inout parameters via ASN.1
+[for (parameter : Parameter | operation.parametersInInout())]
+{
+ [parameter.type.cppType()/] varName_ASN = [parameter.name/];
+ itemSize = BEncAsnContent (&pBuffer, &varName_ASN);
+ encodedSize += itemSize;
+}
+[/for]
+
+itemSize = BEncAsnContent (&pBuffer, &operationID);
+itemSize += BEncAsnContent (&pBuffer, &m_serverID);
+encodedSize += itemSize;
+
+encodedSize += BEncDefLen (&pBuffer, encodedSize);
+
+out->dispatch(event);
+[/template] \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachine.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachine.mtl
new file mode 100644
index 00000000000..4dd53ec0045
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachine.mtl
@@ -0,0 +1,53 @@
+[comment encoding = UTF-8 /]
+[module StateMachine('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::EnumService/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::modellibs::core::acceleo::acceptableEvents/]
+
+[template public StateMachine(clazz : Class)]
+
+// processEvents body - generated by Qompass
+//
+// supports ports [for (port : Port | clazz.ownedPort)] [literal('PortEnum_'+clazz.name, 'port_'+port.name)/] [/for]
+TRACEpr (AO);
+PR ("IN [clazz.name/]::checkPreCond()" << showI);
+
+[for (sm : StateMachine | ownedBehavior->select(oclIsKindOf(StateMachine)))]
+core::ContainerServices::CallEvent_ event;
+int timeout;
+int newState;
+int newSubSate;
+
+switch(m_currentState)
+{
+ [for (state : State | sm.region.subvertex->select(oclIsKindOf(State)))]
+ case [literal('LStateIDs_'+clazz.name, 'STATE_'+state.name)/]:
+ // -------- treatment of accepted events
+[state.acceptableEvents()/]
+[comment // -------- treatment of ignored events /]
+[comment [state.ignoredEvents()/]
+[comment // -------- treatment of rejected events /]
+[comment [state.rejectedEvent()/]
+[comment // -------- not accepted nor ignored neither rejected
+ // else not acceptable event
+/]
+ break;
+ [/for]
+
+ default:
+ OSAL_ERROR ("Inconsistent state");
+ break;
+}
+if (animOut != 0) {
+ animOut->enterState(newState, [clazz.fragment()/]);
+}
+
+[/for]
+[/template]
+
+
+[query public boundPackageRef(actual : Type) : Package =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool',
+ 'boundPackageRef(org.eclipse.uml2.uml.Type)',
+ Sequence{actual}) /] \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachineUtil.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachineUtil.java
new file mode 100644
index 00000000000..2985bb255ec
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachineUtil.java
@@ -0,0 +1,48 @@
+package org.eclipse.papyrus.qompass.modellibs.core.acceleo;
+
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Type;
+
+
+public class StateMachineUtil {
+
+ /**
+ * Return the bound package in the context of template instantiation for a given actual.
+ *
+ * This is required by the state machine template which needs to access operation IDs
+ * provided by the call interceptor.
+ *
+ * TODO: seems not very clean: why hardcoded operationIDs? precondition: package with suitable
+ * postfix must have been created
+ *
+ * @param actual
+ * @return
+ */
+ public static Package boundPackageRef(Type actual) {
+ String suffix = "_" + actual.getName();
+ for(Package nestedPkg : Utils.getTop(actual).getNestedPackages()) {
+ if(nestedPkg.getName().endsWith(suffix)) {
+ return nestedPkg;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Declares a dependency from the current classifier which is produced by template instantiation
+ * to the element "OperationIDs, if found within the passed package.
+ *
+ * @param pkg
+ * @return
+ */
+ public static void declareDependencyToOperationIDs(Package pkg) {
+ PackageableElement type = pkg.getPackagedElement("OperationIDs");
+ if(type instanceof Type) {
+ UMLTool.declareDependency(TransformationContext.classifier, (Type)type);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachineUtil.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachineUtil.mtl
new file mode 100644
index 00000000000..b61f5800ab7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/StateMachineUtil.mtl
@@ -0,0 +1,12 @@
+[comment encoding = UTF-8 /]
+[module StateMachineUtil('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[query public boundPackageRef(actual : Type) : Package =
+ invoke('org.eclipse.papyrus.qompass.modellibs.core.acceleo.StateMachineUtil',
+ 'boundPackageRef(org.eclipse.uml2.uml.Type)',
+ Sequence{actual}) /]
+
+[query public declareDependencyToOperationIDs(pkg : Package) : OclVoid =
+ invoke('org.eclipse.papyrus.qompass.modellibs.core.acceleo.StateMachineUtil',
+ 'declareDependencyToOperationIDs(org.eclipse.uml2.uml.Package)',
+ Sequence{pkg}) /]
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/TransitionService.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/TransitionService.java
new file mode 100644
index 00000000000..b24d8661bed
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/TransitionService.java
@@ -0,0 +1,50 @@
+/*******************************************************************************
+ * Copyright (c) 2006 CEA List.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * CEA List - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.papyrus.qompass.modellibs.core.acceleo;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.Region;
+import org.eclipse.uml2.uml.StateMachine;
+import org.eclipse.uml2.uml.Transition;
+
+
+/**
+ * This class encapsulates an <code>org.eclipse.uml2.uml.Transition</code><BR>
+ *
+ * @author Remi SCHNEKENBURGER
+ */
+public class TransitionService {
+
+ /**
+ * Get the transition number within the state machine
+ * BEWARE: this method works only with Accord|UML compliant State Machines,
+ * with no parallel processing, i.e. a single region
+ *
+ * @return Returns the transition number, returns 0 if pb
+ */
+ public int getNumber(Transition transition) {
+ int nb = 0;
+ StateMachine stateMachine = transition.containingStateMachine();
+ EList<Region> SMRegions = stateMachine.getRegions();
+ if(SMRegions.size() >= 2) {
+ // TODO error message
+ } else {
+ Region theRegion = SMRegions.get(0);
+ for(Transition currentTrans : theRegion.getTransitions()) {
+ nb = nb + 1;
+ if(currentTrans == transition) {
+ break;
+ }
+ }
+ }
+ return nb;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/TransitionService.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/TransitionService.mtl
new file mode 100644
index 00000000000..1a728a94007
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/TransitionService.mtl
@@ -0,0 +1,8 @@
+[module TransitionService('http://www.eclipse.org/uml2/3.0.0/UML')/]
+
+[comment Copyright (c) 2012 CEA List./]
+
+[query public getNumber(transition : Transition) : Integer =
+ invoke('org.eclipse.papyrus.qompass.designer.core.acceleo.TransitionService',
+ 'getNumber(org.eclipse.uml2.uml.Transition)',
+ Sequence{transition}) /]
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/acceptableEvents.mtl b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/acceptableEvents.mtl
new file mode 100644
index 00000000000..3cfe740f28d
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/acceleo/acceptableEvents.mtl
@@ -0,0 +1,106 @@
+[module acceptableEvents('http://www.eclipse.org/uml2/4.0.0/UML')/]
+[import org::eclipse::papyrus::qompass::modellibs::core::acceleo::TransitionService /]
+[import org::eclipse::papyrus::qompass::modellibs::core::acceleo::StateMachineUtil /]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool /]
+[import org::eclipse::papyrus::qompass::designer::vsl::ParseVSL /]
+
+[comment produce a call event trigger label (TODO) /]
+
+[template public cetrigger(operation: Operation) post(trim())]
+ [boundPackageRef(operation.implementsInterface()).qualifiedName/]::ID_[name/]
+ [comment declare dependency to OperationIDs enumeration /]
+ [boundPackageRef(operation.implementsInterface()).declareDependencyToOperationIDs() /]
+[/template]
+
+
+[template public acceptableEvents(state: State)]
+
+ // loop on state
+ // execute action ...
+ timeout = -1; // no timeout by default
+[for (transition : Transition | state.outgoing)]
+ [if (transition.trigger->asSequence()->first().event.oclIsKindOf(TimeEvent))]
+ // transition [name/] - trigger: TimeEvent, expression [transition.trigger->asSequence()->first().event.oclAsType(TimeEvent).when.expr.oclAsType(OpaqueExpression)._body->asSequence()->first()/].
+ timeout = [getDurationFromVSL(trigger.event.oclAsType(TimeEvent).when.expr.oclAsType(OpaqueExpression)._body->asSequence()->first())/]/1000;
+ [/if]
+[/for]
+ // upcoming support for nested state machines
+ // timeout = setTimeoutInSubState (timeout);
+
+ // get an event from the pool.
+ event = ep->readEvent(timeout);
+
+ // process event in sub-state
+ // need variable for current sub-state, better array of variables? (graph, if we accept parallel states)
+[if (state.region->size() > 0)]
+ [comment sub states /]
+[for (substate : State | state.region.subvertex->select(oclIsKindOf(State)))]
+ [substate.acceptableSubEvents()/]
+[/for]
+[/if]
+ // processEventInSubState (event);
+
+[for (transition : Transition | state.outgoing)]
+ [comment big restriction: will only analyse first of possibly multiple triggers/]
+ [if (transition.trigger->asSequence()->first().event.oclIsKindOf(TimeEvent))]
+ // transition [transition.name/] - trigger: TimeEvent (there should be at most one outgoing timed transition per state).
+ if (event.operationID == core::ContainerServices::EventPool::ID_TIMEOUT) {
+ newState = STATE_[transition.target.name/];
+[if not (transition.effect = null)] executor->[state.containingStateMachine().name/]_[transition.name/]_[transition.effect.name/]();
+[/if]
+ }
+ [/if]
+ [if (transition.trigger->asSequence()->first().event.oclIsKindOf(CallEvent))]
+ // transition [name/] - trigger: CallEvent, operation [transition.trigger.event.oclAsType(CallEvent).operation.name/]
+ if (event.operationID == [cetrigger(transition.trigger->asSequence()->first().event.oclAsType(CallEvent).operation)/]) {
+ newState = STATE_[transition.target.name/];
+[if not (transition.effect = null)] executor->[state.containingStateMachine().name/]_[transition.name/]_[transition.effect.name/]();
+[/if]
+ }
+ [/if]
+ [if (transition.trigger->asSequence()->first().event.oclIsKindOf(SignalEvent))]
+ // transition [name/] - trigger: SignalEvent, signal [transition.trigger.event.oclAsType(SignalEvent).signal.name/]
+ if (event.operationID == SIG_[transition.trigger.event.oclAsType(SignalEvent).signal.name/]) {
+ newState = STATE_[transition.target.name/]) ;
+[if not (transition.effect = null)] executor->[state.containingStateMachine().name/]_[transition.name/]_[transition.effect.name/]();
+[/if]
+ // ok = EvQUEUE ;
+ }
+ [/if]
+[/for]
+ if (newState != m_currentState) {
+ m_currentState = newState;
+ }
+[/template]
+
+[template public acceptableSubEvents(state: State)]
+// handle substates
+[for (transition : Transition | state.outgoing)]
+ [comment big restriction: will only analyse first of possibly multiple triggers/]
+ [if (transition.trigger->asSequence()->first().event.oclIsKindOf(TimeEvent))]
+ // transition [transition.name/] - trigger: TimeEvent (there should be at most one outgoing timed transition per state).
+ if (event.operationID == core::ContainerServices::EventPool::ID_TIMEOUT) {
+ newSubState = STATE_[transition.target.name/];
+[if not (transition.effect = null)] executor->[state.containingStateMachine().name/]_[transition.name/]_[transition.effect.name/]();
+[/if]
+ }
+ [/if]
+ [if (transition.trigger->asSequence()->first().event.oclIsKindOf(CallEvent))]
+ // transition [name/] - trigger: CallEvent, operation [transition.trigger.event.oclAsType(CallEvent).operation.name/]
+ if (event.operationID == [cetrigger(transition.trigger->asSequence()->first().event.oclAsType(CallEvent).operation)/]) {
+ newSubState = STATE_[transition.target.name/];
+[if not (transition.effect = null)] executor->[state.containingStateMachine().name/]_[transition.name/]_[transition.effect.name/]();
+[/if]
+ }
+ [/if]
+ [if (transition.trigger->asSequence()->first().event.oclIsKindOf(SignalEvent))]
+ // transition [name/] - trigger: SignalEvent, signal [transition.trigger.event.oclAsType(SignalEvent).signal.name/]
+ if (event.operationID == SIG_[transition.trigger.event.oclAsType(SignalEvent).signal.name/]) {
+ newSubState = STATE_[transition.target.name/]) ;
+[if not (transition.effect = null)] executor->[state.containingStateMachine().name/]_[transition.name/]_[transition.effect.name/]();
+[/if]
+ // ok = EvQUEUE ;
+ }
+ [/if]
+[/for]
+[/template]
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/embeddingrules/AccordCall.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/embeddingrules/AccordCall.java
new file mode 100644
index 00000000000..30c9a9500b6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/embeddingrules/AccordCall.java
@@ -0,0 +1,81 @@
+package org.eclipse.papyrus.qompass.modellibs.core.embeddingrules;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.NamedElement;
+
+import FCM.Connector;
+import FCM.util.ConnectorTypeUtil;
+import FCM.util.FCMUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+
+/**
+ * Embedding rule
+ * @author ansgar
+ *
+ */
+// @unused
+public class AccordCall extends ConnectorTypeUtil {
+
+ private ConnectableElement clientRole = null ;
+ private ConnectableElement serverRole = null ;
+ private ConnectableElement rtuRole = null ;
+ private ConnectableElement connectorRole = null ;
+
+ public FCMUtil.RoleBindingTable getRoleBindings(Connector connector) {
+ super.getRoleBindings(connector) ;
+
+ clientRole = bindingTable.getRoleKeyByName("client") ;
+ serverRole = bindingTable.getRoleKeyByName("server") ;
+ rtuRole = bindingTable.getRoleKeyByName("rtu") ;
+ connectorRole = bindingTable.getRoleKeyByName("connector") ;
+
+ for (org.eclipse.uml2.uml.ConnectorEnd end : connector.getBase_Connector().getEnds()) {
+ if (end.getRole() instanceof org.eclipse.uml2.uml.Port) {
+ org.eclipse.uml2.uml.Port port = (org.eclipse.uml2.uml.Port)end.getRole() ;
+ org.eclipse.uml2.uml.Property part = end.getPartWithPort() ;
+ if (StUtils.isApplied(port, FCM.Port.class)) {
+ FCM.Port fcmPort = StUtils.getApplication(port, FCM.Port.class);
+ if (fcmPort.getKind().getBase_Class().getName().equals("UseInterfaceWithRtf")) {
+ // => elements associated with the connector end play the client role
+ List<NamedElement> clientActors = new ArrayList<NamedElement>() ;
+ clientActors.add(port) ;
+ clientActors.add(part) ;
+ bindingTable.addEntry(clientRole, clientActors) ;
+ }
+ else if (fcmPort.getKind().getBase_Class().getName().equals("ProvideInterface")) {
+ // => elements associated with the connector end play the server role
+ List<NamedElement> serverActors = new ArrayList<NamedElement>() ;
+ serverActors.add(port) ;
+ serverActors.add(part) ;
+ bindingTable.addEntry(serverRole, serverActors) ;
+ // the property playing the server role must also play the rtu role
+ port = ((org.eclipse.uml2.uml.Class)part.getType()).getOwnedPort("rtu", null) ;
+ if (port == null) {
+ if (((org.eclipse.uml2.uml.Class)part.getType()).getInheritedMember("rtu") != null &&
+ ((org.eclipse.uml2.uml.Class)part.getType()).getInheritedMember("rtu") instanceof org.eclipse.uml2.uml.Port) {
+ port = (org.eclipse.uml2.uml.Port)((org.eclipse.uml2.uml.Class)part.getType()).getInheritedMember("rtu") ;
+ }
+ else {
+ System.out.println("Could not find a port rtu on part " + part.getName() + " : " + part.getType()) ;
+ }
+ }
+ if (port != null) {
+ List<NamedElement> rtuActors = new ArrayList<NamedElement>() ;
+ rtuActors.add(port) ;
+ rtuActors.add(part) ;
+ bindingTable.addEntry(rtuRole, rtuActors) ;
+ }
+ }
+ }
+ }
+ }
+ List<NamedElement> connectorActors = new ArrayList<NamedElement>() ;
+ connectorActors.add(connector.getBase_Connector()) ;
+ bindingTable.addEntry(connectorRole, connectorActors) ;
+ return bindingTable ;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ExtendedPort.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ExtendedPort.java
new file mode 100644
index 00000000000..40e40bb9a6b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ExtendedPort.java
@@ -0,0 +1,107 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation;
+import org.eclipse.papyrus.qompass.designer.core.templates.TemplateUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.Copy;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.TemplateBinding;
+import org.eclipse.uml2.uml.TemplateSignature;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.util.IMappingRule;
+import FCM.util.MapUtil;
+
+
+/**
+ * An extended Port in the sense of the DDS4CCM standard: a port typed with a component
+ * type. Since the component typing the port can have multiple provided and required
+ * ports, the ports are implicitly owned by the port. Conjugation on the level of an extended
+ * port level will conjugate all ports of the component typing the port.
+ *
+ * The derived interface that is provided will concatenate provided port names within the
+ * extended port with the port name and provided a "big" interface.
+ * The derived interface that is required is identical, except for a conjugation on the
+ * extended port level.
+ *
+ * Creates a fixed template binding that binds T (of the extended Port) to the used data type
+ *
+ * @author ansgar
+ *
+ */
+public class ExtendedPort implements IMappingRule {
+
+ public int needsTransaction() {
+ return IMappingRule.BOTH;
+ }
+
+ public Interface getProvided(FCM.Port p, InstanceSpecification config)
+ {
+ return getDerived(p, p.isConjugated(), config);
+ }
+
+ public Interface getRequired(FCM.Port p, InstanceSpecification config)
+ {
+ return getDerived(p, !p.isConjugated(), config);
+ }
+
+ public Interface getDerived(FCM.Port extPort, boolean isConjugated, InstanceSpecification config)
+ {
+ Type type = extPort.getBase_Port().getType();
+ if(!(type instanceof Classifier)) {
+ return null;
+ }
+ Class extendedPort = extPort.getKind().getBase_Class();
+
+ TemplateSignature signature = TemplateUtils.getSignature(type.getNearestPackage());
+ String prefix = isConjugated ? "C_" : "N_";
+ Interface derivedInterface = MapUtil.getOrCreateDerivedInterfaceFP(extPort, prefix, type);
+ if(derivedInterface == null) {
+ return null;
+ }
+ if(signature != null) {
+ Package model = Utils.getTop(derivedInterface);
+ try {
+ TemplateBinding binding =
+ TemplateUtils.fixedBinding(model, extendedPort, (Classifier)type);
+ Copy sat = new Copy(model, model, false);
+ System.err.println(model.getQualifiedName());
+ TemplateInstantiation ti = new TemplateInstantiation(sat, binding);
+ // create a bound element of the extended port. Add bound class to derived interface class
+ Class boundClass = ti.bindNamedElement(extendedPort);
+ derivedInterface.getNearestPackage().getPackagedElements().add(boundClass);
+ } catch (TransformationException e) {
+ return null;
+ }
+ }
+ // obtain first template parameter = port type
+ // kind.getBase_Class().getNearestPackage().getTemplateParameter();
+
+ for(Port port : extendedPort.getOwnedPorts()) {
+ Interface provIntf = (isConjugated) ?
+ PortUtils.getRequired(port) :
+ PortUtils.getProvided(port);
+
+ if(provIntf != null) {
+ for(Operation op : provIntf.getOperations()) {
+ String name = port.getName() + "_" + op.getName();
+
+ // check whether operation already exists. Create, if not
+ Operation derivedOperation = derivedInterface.getOperation(name, null, null);
+ if(derivedOperation == null) {
+ derivedOperation = derivedInterface.createOwnedOperation(name, null, null);
+ }
+ }
+ }
+ }
+ return derivedInterface;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ExtendedPort2.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ExtendedPort2.java
new file mode 100644
index 00000000000..f0f596b8445
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ExtendedPort2.java
@@ -0,0 +1,80 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.util.IMappingRule;
+import FCM.util.MapUtil;
+
+
+/**
+ * An extended Port in the sense of the DDS4CCM standard: a port typed with a component
+ * type. Since the component typing the port can have multiple provided and required
+ * ports, the ports are implicitly owned by the port. Conjugation on the level of an extended
+ * port level will conjugate all ports of the component typing the port.
+ *
+ * The derived interface that is provided will allow a caller to access individual ports. It
+ * is therefore a reference to the interfaces get_<portName> operations provided by a
+ * component.
+ * The derived interface that is required is identical, except for a conjugation on the
+ * extended port level.
+ *
+ * What is the difference to ExtendedPort?
+ *
+ * @author ansgar
+ *
+ */
+public class ExtendedPort2 implements IMappingRule {
+
+ public int needsTransaction() {
+ return IMappingRule.BOTH;
+ }
+
+ public Interface getProvided(FCM.Port p, InstanceSpecification config)
+ {
+ return getDerived(p, p.isConjugated(), config);
+ }
+
+ public Interface getRequired(FCM.Port p, InstanceSpecification config)
+ {
+ return getDerived(p, !p.isConjugated(), config);
+ }
+
+ public Interface getDerived(FCM.Port extPort, boolean isConjugated, InstanceSpecification config)
+ {
+ Type type = extPort.getBase_Port().getType();
+ if(!(type instanceof Class))
+ return null;
+
+ Class extendedPort = (Class)type;
+ String prefix = isConjugated ? "C2_" : "N2_";
+ Interface derivedInterface = MapUtil.getOrCreateDerivedInterfaceFP(extPort, prefix, type);
+ if(derivedInterface == null) {
+ return null;
+ }
+ for(Port port : extendedPort.getOwnedPorts()) {
+ // if the extended port is conjugated, each of the provided/required are (implicitly)
+ // conjugated [TODO: is PortUtils aware of it? - probably yes]
+ Interface provIntf = (isConjugated) ?
+ PortUtils.getRequired(port) :
+ PortUtils.getProvided(port);
+
+ if(provIntf != null) {
+ String name = PrefixConstants.getP_Prefix + port.getName();
+
+ // check whether operation already exists. Create, if not
+ Operation derivedOperation = derivedInterface.getOperation(name, null, null);
+ if(derivedOperation == null) {
+ derivedOperation = derivedInterface.createOwnedOperation(name, null, null);
+ }
+ }
+ }
+ return derivedInterface;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ProvideInterface.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ProvideInterface.java
new file mode 100644
index 00000000000..db2959b74a6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/ProvideInterface.java
@@ -0,0 +1,29 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.Port;
+import FCM.util.IMappingRule;
+
+public class ProvideInterface implements IMappingRule
+{
+ public int needsTransaction () {
+ return IMappingRule.NONE;
+ }
+
+ public Interface getProvided (Port p, InstanceSpecification config)
+ {
+ Type type = p.getBase_Port ().getType ();
+ if (type instanceof Interface) {
+ return ((Interface) type);
+ }
+ return null;
+ }
+
+ public Interface getRequired (Port p, InstanceSpecification config)
+ {
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PullConsumer.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PullConsumer.java
new file mode 100644
index 00000000000..6221819d3be
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PullConsumer.java
@@ -0,0 +1,111 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Signal;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.Port;
+import FCM.util.IMappingRule;
+import FCM.util.MapUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+
+/**
+ * Will generate a suitable callable interface pulling consumer. The port is typed with a primitive type
+ * or data type. The generated interface has a "<Type> pull as well as a "boolean hasData ()" operation).
+ *
+ * @author ansgar
+ */
+public class PullConsumer implements IMappingRule {
+
+ public Interface getProvided(Port p, InstanceSpecification config) {
+ return null;
+ }
+
+ public int needsTransaction() {
+ return IMappingRule.REQUIRED;
+ }
+
+ public static PullConsumer getInstance() {
+ if(instance == null) {
+ instance = new PullConsumer();
+ }
+ return instance;
+ }
+
+ public Interface getRequired(Port p, InstanceSpecification config) {
+ org.eclipse.uml2.uml.Port umlPort = p.getBase_Port();
+ Element owner = umlPort.getOwner();
+ String ownerStr = "";
+ if(owner instanceof NamedElement) {
+ ownerStr = " of class " + ((NamedElement)owner).getQualifiedName();
+ }
+ Log.log(Log.INFO_MSG, Log.CALC_PORTKIND,
+ p.getKind().getBase_Class().getName() + " => GetRequired on " + umlPort.getName() + ownerStr);
+ Type type = umlPort.getType();
+
+ if((type instanceof PrimitiveType) || (type instanceof DataType) || (type instanceof Signal)) {
+
+ Interface derivedInterface = MapUtil.getOrCreateDerivedInterfaceFP(p, "PullConsumer_", type);
+ if(derivedInterface == null) {
+ return null;
+ }
+
+ // check whether operation already exists. Create, if not
+ Operation derivedOperationPull = derivedInterface.getOperation("pull", null, null);
+ if(derivedOperationPull == null) {
+ derivedOperationPull = derivedInterface.createOwnedOperation("pull", null, null, type);
+ }
+ EList<Parameter> parameters = derivedOperationPull.getOwnedParameters();
+ if(parameters.size() > 0) {
+ Parameter parameter = parameters.get(0);
+ if((parameter.getName() == null) || (!parameter.getName().equals("ret"))) {
+ parameter.setName("ret");
+ }
+ if(parameter.getType() != type) {
+ parameter.setType(type);
+ }
+ }
+ Package model = Utils.getTop(umlPort);
+ Element element = Utils.getQualifiedElement(model, "corba::Boolean");
+ Type booleanType = null;
+ if(element instanceof Type) {
+ booleanType = (Type)element;
+ }
+
+ // check whether operation already exists. Create, if not
+ Operation derivedOperationHasData = derivedInterface.getOperation("hasData", null, null);
+ if(derivedOperationHasData == null) {
+ derivedOperationHasData = derivedInterface.createOwnedOperation("hasData", null, null, booleanType);
+ }
+
+ parameters = derivedOperationHasData.getOwnedParameters();
+ if(parameters.size() > 0) {
+ Parameter parameter = parameters.get(0);
+ if((parameter.getName() == null) || (!parameter.getName().equals("ret"))) {
+ parameter.setName("ret");
+ }
+ if((booleanType != null) && (parameter.getType() != booleanType)) {
+ // added != null check
+ parameter.setType(booleanType);
+ }
+ }
+
+ return derivedInterface;
+ } else {
+ return null;
+ }
+ }
+
+ protected static PullConsumer instance;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushConsumer.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushConsumer.java
new file mode 100644
index 00000000000..0cee30beeea
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushConsumer.java
@@ -0,0 +1,67 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Signal;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.Port;
+import FCM.util.IMappingRule;
+import FCM.util.MapUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+
+/**
+ * Will generate a suitable called interface push consumer. The port is typed with a primitive type
+ * or data type. The generated interface has a "push (data <Type>)" operation ).
+ *
+ * The interface is identical to that of a PushProducer (and will be shared).
+ *
+ * @author ansgar
+ */
+public class PushConsumer implements IMappingRule {
+
+ public int needsTransaction() {
+ return IMappingRule.PROVIDED;
+ }
+
+ public Interface getProvided(Port p, InstanceSpecification config) {
+ Log.log(Log.INFO_MSG, Log.CALC_PORTKIND,
+ p.getKind().getBase_Class().getName() + " => GetProvided on " + p.getBase_Port().getName());
+ Type type = p.getBase_Port().getType();
+
+ if((type instanceof PrimitiveType) || (type instanceof DataType) || (type instanceof Signal)) {
+
+ Interface derivedInterface = MapUtil.getOrCreateDerivedInterfaceFP(p, "Push_", type);
+ if(derivedInterface == null) {
+ // may happen, if within template (do not want creation of derived interfaces in template)
+ return null;
+ }
+
+ // check whether operation already exists. Create, if not
+ Operation derivedOperation = derivedInterface.getOperation("push", null, null);
+ if(derivedOperation == null) {
+ derivedOperation = derivedInterface.createOwnedOperation("push", null, null);
+ }
+ EList<Parameter> parameters = derivedOperation.getOwnedParameters();
+ if(parameters.size() == 0) {
+ derivedOperation.createOwnedParameter("data", type);
+ } else {
+ parameters.get(0).setName("data");
+ parameters.get(0).setType(type);
+ }
+ return derivedInterface;
+ } else {
+ return null;
+ }
+ }
+
+ public Interface getRequired(Port p, InstanceSpecification config) {
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushProdPullCons.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushProdPullCons.java
new file mode 100644
index 00000000000..79596e274e7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushProdPullCons.java
@@ -0,0 +1,70 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Signal;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.Port;
+import FCM.util.IMappingRule;
+import FCM.util.MapUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+
+/**
+ * Will generate a suitable callable interface pulling consumer. The port is typed with a primitive type
+ * or data type. The generated interface has a "<Type> pull as well as a "boolean hasData ()" operation).
+ *
+ * @author ansgar
+ */
+public class PushProdPullCons implements IMappingRule {
+
+ public Interface getProvided(Port p, InstanceSpecification config) {
+ return null;
+ }
+
+ public int needsTransaction() {
+ return IMappingRule.REQUIRED;
+ }
+
+ public Interface getRequired(Port p, InstanceSpecification config) {
+ org.eclipse.uml2.uml.Port umlPort = p.getBase_Port();
+ Element owner = umlPort.getOwner();
+ String ownerStr = "";
+ if(owner instanceof NamedElement) {
+ ownerStr = " of class " + ((NamedElement)owner).getQualifiedName();
+ }
+ Log.log(Log.INFO_MSG, Log.CALC_PORTKIND,
+ p.getKind().getBase_Class().getName() + " => GetRequired on " + umlPort.getName() + ownerStr);
+ Type type = umlPort.getType();
+
+ if((type instanceof PrimitiveType) || (type instanceof DataType) || (type instanceof Signal)) {
+
+ Interface derivedInterface = MapUtil.getOrCreateDerivedInterface(p, "_", type);
+
+ // obtain derived interface for other port kind (Caveat: some rules get the prefix from the
+ // name of the port kind attached to port "p" which would produce wrong results.
+ Interface derivedInterfacePushProd = PushProducer.getInstance().getRequired(p, config);
+ Interface derivedInterfacePullCons = PullConsumer.getInstance().getRequired(p, config);
+ if(derivedInterface == null) {
+ return null;
+ }
+
+ if(!derivedInterface.getGenerals().contains(derivedInterfacePushProd)) {
+ derivedInterface.createGeneralization(derivedInterfacePushProd);
+ }
+ if(!derivedInterface.getGenerals().contains(derivedInterfacePullCons)) {
+ derivedInterface.createGeneralization(derivedInterfacePullCons);
+ }
+
+
+ return derivedInterface;
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushProducer.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushProducer.java
new file mode 100644
index 00000000000..b893b0076b9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/PushProducer.java
@@ -0,0 +1,80 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.uml2.uml.DataType;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Signal;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.Port;
+import FCM.util.IMappingRule;
+import FCM.util.MapUtil;
+
+import org.eclipse.papyrus.qompass.designer.core.Log;
+
+/**
+ * Will generate a suitable callable interface push provider. The port is typed with a primitive type
+ * or data type. The generated interface has a "push (data <Type>)" operation
+ *
+ * The interface is identical to that of a PushConsumer (and will be shared).
+ *
+ * @author ansgar
+ */
+public class PushProducer implements IMappingRule {
+
+ public Interface getProvided(Port p, InstanceSpecification config) {
+ return null;
+ }
+
+ public int needsTransaction() {
+ return IMappingRule.REQUIRED;
+ }
+
+ public static PushProducer getInstance() {
+ if(instance == null) {
+ instance = new PushProducer();
+ }
+ return instance;
+ }
+
+ public Interface getRequired(Port p, InstanceSpecification config) {
+ Log.log(Log.INFO_MSG, Log.CALC_PORTKIND, p.getKind().getBase_Class().getName() + " => GetRequired on " + p.getBase_Port().getName());
+ Type type = p.getBase_Port().getType();
+
+ if((type instanceof PrimitiveType) || (type instanceof DataType) || (type instanceof Signal)) {
+
+ Interface derivedInterface = MapUtil.getOrCreateDerivedInterfaceFP(p, "Push_", type);
+ if(derivedInterface == null) {
+ // may happen, if within template (do not want creation of derived interfaces in template)
+ return null;
+ }
+
+ // check whether operation already exists. Create, if not
+ Operation derivedOperation = derivedInterface.getOperation("push", null, null);
+ if(derivedOperation == null) {
+ derivedOperation = derivedInterface.createOwnedOperation("push", null, null);
+ }
+ EList<Parameter> parameters = derivedOperation.getOwnedParameters();
+ if(parameters.size() == 0) {
+ derivedOperation.createOwnedParameter("data", type);
+ } else {
+ Parameter parameter = parameters.get(0);
+ if(!parameter.getName().equals("data")) {
+ parameter.setName("data");
+ }
+ if(parameter.getType() != type) {
+ parameter.setType(type);
+ }
+ }
+ return derivedInterface;
+ } else {
+ return null;
+ }
+ }
+
+ protected static PushProducer instance;
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/UseConjIntf.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/UseConjIntf.java
new file mode 100644
index 00000000000..19856ee0e78
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/UseConjIntf.java
@@ -0,0 +1,111 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import java.util.Iterator;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.ParameterDirectionKind;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.Port;
+import FCM.util.IMappingRule;
+import FCM.util.MapUtil;
+
+
+/**
+ * Use a conjugated interface (!= conjugated port), i.e. an interface in which the roles "in" and "out"
+ * of each parameter of an operation are inversed. This transformation is useful in the context of transforming
+ * a "push" interface into a "pull" interface, i.e. instead of calling and providing values values to the
+ * called component via "in", the called components queries us and obtains these values as out parameters.
+ * TODO: This rules is currently not used, since data flow operation are currently either based on a datatype
+ * or a MARTE FlowPort
+ *
+ * @author ansgar
+ *
+ */
+public class UseConjIntf implements IMappingRule {
+
+ public int needsTransaction () {
+ return IMappingRule.REQUIRED;
+ }
+
+ public Interface getProvided (Port p, InstanceSpecification config) {
+ return null;
+ }
+
+ public Interface getRequired (Port p, InstanceSpecification config) {
+ Type type = p.getBase_Port ().getType ();
+ if (!(type instanceof Interface)) return null;
+
+ Interface typingInterface = (Interface) type;
+ Interface derivedInterface = MapUtil.getOrCreateDerivedInterface (p, "_", type);
+ if (derivedInterface == null) {
+ return null;
+ }
+ for (Operation operation : typingInterface.getOwnedOperations ()) {
+ String name = operation.getName ();
+
+ // check whether operation already exists. Create, if not
+ Operation derivedOperation = derivedInterface.getOperation (name, null, null);
+ if (derivedOperation == null) {
+ derivedOperation = derivedInterface.createOwnedOperation (name, null, null);
+ }
+
+ // TODO: move to Copy (factor code, ensure that these values are handled in case of model copies ...)
+ derivedOperation.setIsAbstract (operation.isAbstract ());
+ derivedOperation.setIsStatic (operation.isStatic ()); // (does not make sense for an interface, if true)
+ derivedOperation.setIsUnique (operation.isUnique ());
+ derivedOperation.setIsQuery (operation.isQuery ());
+
+ for (Parameter parameter : operation.getOwnedParameters ()) {
+ String paramName = parameter.getName ();
+ Type paramType = parameter.getType ();
+ if (derivedOperation.getOwnedParameter (paramName, paramType) == null) {
+ Parameter newParameter =
+ derivedOperation.createOwnedParameter(parameter.getName (), parameter.getType ());
+ ParameterDirectionKind direction = parameter.getDirection ();
+ if (direction == ParameterDirectionKind.IN_LITERAL) {
+ newParameter.setDirection (ParameterDirectionKind.OUT_LITERAL);
+ }
+ else if (direction == ParameterDirectionKind.OUT_LITERAL) {
+ newParameter.setDirection (ParameterDirectionKind.IN_LITERAL);
+ }
+ else {
+ newParameter.setDirection (direction);
+ }
+ newParameter.setLower (parameter.getLower ());
+ newParameter.setUpper (parameter.getUpper ());
+ }
+ }
+ // remove those parameters that exist in derived, but not original interface.
+ Iterator <Parameter> derivedParameters = derivedOperation.getOwnedParameters ().iterator ();
+ while (derivedParameters.hasNext ()) {
+ Parameter parameter = derivedParameters.next ();
+ String paramName = parameter.getName ();
+ Type paramType = parameter.getType ();
+ if (operation.getOwnedParameter (paramName, paramType) == null) {
+ // not on in original interface, remove from derived as well
+ derivedParameters.remove ();
+ }
+ }
+ }
+
+ // check whether operations in derived interface exist in original interface
+ // (remove, if not)
+ Iterator<Operation> derivedOperations = derivedInterface.getOwnedOperations ().iterator ();
+ while (derivedOperations.hasNext ()) {
+ Operation derivedOperation = derivedOperations.next ();
+ String name = derivedOperation.getName ();
+ if (typingInterface.getOperation (name, null, null) == null) {
+ // not in typing interface, remove
+ if (derivedInterface.getOperations ().remove (derivedOperation)) {
+ derivedOperations = derivedInterface.getOwnedOperations ().iterator ();
+ }
+ }
+ }
+
+ return derivedInterface;
+ }
+} \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/UseInterface.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/UseInterface.java
new file mode 100644
index 00000000000..3750ae12d41
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/src/org/eclipse/papyrus/qompass/modellibs/core/mappingrules/UseInterface.java
@@ -0,0 +1,30 @@
+package org.eclipse.papyrus.qompass.modellibs.core.mappingrules;
+
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Type;
+
+import FCM.Port;
+import FCM.util.IMappingRule;
+
+
+public class UseInterface implements IMappingRule
+{
+ public int needsTransaction () {
+ return IMappingRule.NONE;
+ }
+
+ public Interface getProvided(Port p, InstanceSpecification config)
+ {
+ return null ;
+ }
+
+ public Interface getRequired(Port p, InstanceSpecification config)
+ {
+ Type type = p.getBase_Port ().getType ();
+ if (type instanceof Interface) {
+ return ((Interface) type);
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/tmpModel/HelloWorldTmp.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/tmpModel/HelloWorldTmp.uml
new file mode 100644
index 00000000000..7bfb232603c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/tmpModel/HelloWorldTmp.uml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/Alloc/1 http://www.eclipse.org/papyrus/MARTE/1#//Alloc">
+ <uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="HelloWorld">
+ <packageImport xmi:id="_OQbHElWgEeKdxoQIVxFNNg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_OQbHE1WgEeKdxoQIVxFNNg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_OQbuIFWgEeKdxoQIVxFNNg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_OQbuIVWgEeKdxoQIVxFNNg" name="globalenums"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_OQcVMFWgEeKdxoQIVxFNNg" name="deployment">
+ <packagedElement xmi:type="uml:Package" xmi:id="_OQcVMVWgEeKdxoQIVxFNNg" name="SystemDepPlan">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_OQcVMlWgEeKdxoQIVxFNNg" clientDependency="_OQ5oMFWgEeKdxoQIVxFNNg" name="mainInstance" classifier="_bYJagDLiEd2RVeNawwNNzg">
+ <slot xmi:id="_OQ8rglWgEeKdxoQIVxFNNg" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_OQ8rg1WgEeKdxoQIVxFNNg" instance="_OQ8EcVWgEeKdxoQIVxFNNg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_OQ5oMFWgEeKdxoQIVxFNNg" name="allocate mainInstance to monoNode" client="_OQcVMlWgEeKdxoQIVxFNNg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_OQ8EcVWgEeKdxoQIVxFNNg" name="mainInstance.hello" classifier="_tyiqsc__Ed-TP80eVS-2Rg">
+ <slot xmi:id="_OQ8rgFWgEeKdxoQIVxFNNg" definingFeature="_8pupUFTzEeKvFeqt5Q_lqw">
+ <value xmi:type="uml:LiteralString" xmi:id="_OQ8rgVWgEeKdxoQIVxFNNg" name="value for message" value="&quot;NaSowas&quot;">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </slot>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_OQcVM1WgEeKdxoQIVxFNNg" name="components">
+ <packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="System">
+ <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="hello" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCT24G6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCUd8G6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dCWTIG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tyiqsc__Ed-TP80eVS-2Rg" clientDependency="_Us15gFTzEeKvFeqt5Q_lqw" name="HelloWorld">
+ <generalization xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ </generalization>
+ <ownedAttribute xmi:id="_8pupUFTzEeKvFeqt5Q_lqw" name="message" visibility="public" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__HwK8FTzEeKvFeqt5Q_lqw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__HwyAFTzEeKvFeqt5Q_lqw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__HynMFTzEeKvFeqt5Q_lqw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_Us15gFTzEeKvFeqt5Q_lqw" name="derived realization of IStart" client="_tyiqsc__Ed-TP80eVS-2Rg">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tyjRwc__Ed-TP80eVS-2Rg" name="run" specification="_UtCt0FTzEeKvFeqt5Q_lqw">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;Hello world&quot; &lt;&lt; endl;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_UtCt0FTzEeKvFeqt5Q_lqw" name="run" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_OQ190lWgEeKdxoQIVxFNNg" name="platform">
+ <packagedElement xmi:type="uml:Package" xmi:id="_OQ1901WgEeKdxoQIVxFNNg" name="HWArchitecturePlatform">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_GQ1ekKwHEeCQX8uv_p0Q4A" name="monoNode" classifier="_zY9vMDLiEd2RVeNawwNNzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Node" xmi:id="_zY9vMDLiEd2RVeNawwNNzg" name="MonoNode"/>
+ </packagedElement>
+ <profileApplication xmi:id="_OQVAcFWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQVAcVWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQVngFWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQVngVWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQVnglWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQVng1WgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQWOkFWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQWOkVWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//GCM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQW1oFWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQXcsFWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_b9oZ5rG3Ed-tmN4hwNCxXQ"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_3VS0wAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQXcsVWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQYDwFWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_ResourceCore"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_-1fcUBJdEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQYq0FWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQYq0VWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQZR4FWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQZR4VWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//HLAM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQZ48FWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQZ48VWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Brokering"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_Cf874BJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQagAFWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQagAVWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Interaction"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_EIfnABJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_OQbHEFWgEeKdxoQIVxFNNg">
+ <eAnnotations xmi:id="_OQbHEVWgEeKdxoQIVxFNNg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ </uml:Model>
+ <Cpp:CppInclude xmi:id="_OQfYgFWgEeKdxoQIVxFNNg" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <FCM:ConfigurationProperty xmi:id="_OQn7YFWgEeKdxoQIVxFNNg" base_Property="_8pupUFTzEeKvFeqt5Q_lqw"/>
+ <FCM:Target xmi:id="_OQ4aEFWgEeKdxoQIVxFNNg" base_Node="_zY9vMDLiEd2RVeNawwNNzg">
+ <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ </FCM:Target>
+ <Alloc:Allocate xmi:id="_OQ8EcFWgEeKdxoQIVxFNNg" base_Abstraction="_OQ5oMFWgEeKdxoQIVxFNNg"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath
new file mode 100644
index 00000000000..9d5026e8ffd
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.project b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.project
new file mode 100644
index 00000000000..07350fea43f
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.infra.services.tracepoints</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ee75c7c3f8c
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF
@@ -0,0 +1,29 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.emf.ecore;bundle-version="2.6.1",
+ org.eclipse.core.resources;bundle-version="3.6.0",
+ org.apache.commons.lang;bundle-version="2.3.0",
+ org.eclipse.emf.edit.ui;bundle-version="2.6.0",
+ org.eclipse.gmf.runtime.emf.commands.core;bundle-version="1.0.100",
+ org.eclipse.emf.facet.infra.browser.uicore;bundle-version="0.1.0",
+ org.eclipse.papyrus.infra.core;bundle-version="0.9.2",
+ org.eclipse.papyrus.infra.widgets;bundle-version="0.9.2",
+ org.eclipse.papyrus.infra.services.decoration;bundle-version="0.9.2",
+ org.eclipse.gef;bundle-version="3.8.1",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
+ org.eclipse.uml2.uml;bundle-version="4.0.0"
+Export-Package: org.eclipse.papyrus.infra.services.tracepoints,
+ org.eclipse.papyrus.infra.services.tracepoints.commands,
+ org.eclipse.papyrus.infra.services.tracepoints.dialogs,
+ org.eclipse.papyrus.infra.services.tracepoints.preferences
+Bundle-Vendor: %pluginProvider
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 0.9.2.qualifier
+Bundle-Name: %pluginName
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.infra.services.tracepoints.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.infra.services.tracepoints;singleton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Localization: plugin
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/about.html b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/build.properties b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/build.properties
new file mode 100644
index 00000000000..8e1f07ccf86
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/build.properties
@@ -0,0 +1,13 @@
+#
+#Mon Sep 12 09:30:24 CEST 2011
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties,\
+ plugin.xml,\
+ icons/,\
+ schema/
+output..=bin/
+src.includes = about.html
+source..=src/
+bin..=bin/
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_16x16.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_16x16.gif
new file mode 100644
index 00000000000..a831fe72782
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_16x16.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_9x9.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_9x9.gif
new file mode 100644
index 00000000000..3678b09c6bf
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_9x9.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_grp.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_grp.gif
new file mode 100644
index 00000000000..173661c5df7
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_grp.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_grp_disabled.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_grp_disabled.gif
new file mode 100644
index 00000000000..5ea466bcb2a
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkp_grp_disabled.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkpd_16x16.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkpd_16x16.gif
new file mode 100644
index 00000000000..74b26c31a4d
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkpd_16x16.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkpd_9x9.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkpd_9x9.gif
new file mode 100644
index 00000000000..d6d8d31b06f
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/brkpd_9x9.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/debug.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/debug.gif
new file mode 100644
index 00000000000..d90a29fead8
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/debug.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/properties.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/properties.gif
new file mode 100644
index 00000000000..1dc19a31a0f
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/properties.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcp_11x12.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcp_11x12.gif
new file mode 100644
index 00000000000..c04edf8e83e
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcp_11x12.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcp_16x16.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcp_16x16.gif
new file mode 100644
index 00000000000..29ec606076f
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcp_16x16.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcpd_11x12.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcpd_11x12.gif
new file mode 100644
index 00000000000..f3e7b3d6791
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcpd_11x12.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcpd_16x16.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcpd_16x16.gif
new file mode 100644
index 00000000000..76c65b6196f
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/icons/etool16/trcpd_16x16.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/plugin.properties b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/plugin.properties
new file mode 100644
index 00000000000..3cabfa42274
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2010 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus Tracepoint Integration (Incubation)
+pluginProvider=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/plugin.xml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/plugin.xml
new file mode 100644
index 00000000000..80dceda93de
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/plugin.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+
+<plugin>
+ <extension-point id="traceMechanism" name="traceMechanism" schema="schema/traceMechanism.exsd"/>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="true"
+ locationURI="popup:org.eclipse.papyrus.views.modelexplorer.modelexplorer.popup">
+ <menu
+ icon="icons/etool16/debug.gif"
+ id="org.eclipse.papyrus.views.modelexplorer.popup.tracing"
+ label="Tracing">
+ </menu>
+ </menuContribution>
+ <menuContribution
+ allPopups="true"
+ locationURI="popup:org.eclipse.papyrus.views.modelexplorer.popup.tracing">
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.togglebreakpoint"
+ icon="icons/etool16/brkp_16x16.gif"
+ id="org.eclipse.papyrus.tracepoints.togglebreakpoint"
+ label="Toggle breakpoint">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.togglebreakpointactivation"
+ icon="icons/etool16/brkpd_16x16.gif"
+ id="org.eclipse.papyrus.tracepoints.togglebreakpointactivation"
+ label="Toggle breakpoint activation">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.toggletracepoint"
+ icon="icons/etool16/trcp_16x16.gif"
+ id="org.eclipse.papyrus.tracepoints.toggletracepoint"
+ label="Toggle tracepoint">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.toggletracepointactivation"
+ icon="icons/etool16/trcpd_16x16.gif"
+ id="org.eclipse.papyrus.tracepoints.toggletracepointactivation"
+ label="Toggle tracepoint activation">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.tracepointproperties"
+ icon="icons/etool16/properties.gif"
+ id="org.eclipse.papyrus.tracepoints.tracepointproperties"
+ label="Tracepoint properties">
+ </command>
+ </menuContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ allPopups="true"
+ locationURI="popup:org.eclipse.gmf.runtime.diagram.ui.DiagramEditorContextMenu?after=filtersMenu">
+ <menu
+ icon="icons/etool16/debug.gif"
+ id="org.eclipse.papyrus.views.gmf.popup.tracing"
+ label="Tracing">
+ </menu>
+ </menuContribution>
+ <menuContribution
+ allPopups="true"
+ locationURI="popup:org.eclipse.papyrus.views.gmf.popup.tracing">
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.togglebreakpoint"
+ icon="icons/etool16/brkp_16x16.gif"
+ id="org.eclipse.papyrus.tracepoints.toggletracepoint"
+ label="Toggle breakpoint">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.togglebreakpointactivation"
+ icon="icons/etool16/brkpd_16x16.gif"
+ id="org.eclipse.papyrus.tracepoints.togglebreakpointactivation"
+ label="Toggle breakpoint activation">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.toggletracepoint"
+ icon="icons/etool16/trcp_16x16.gif"
+ id="org.eclipse.papyrus.tracepoints.toggletracepoint"
+ label="Toggle tracepoint">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.toggletracepointactivation"
+ icon="icons/etool16/trcpd_16x16.gif"
+ id="org.eclipse.papyrus.tracepoints.toggletracepointactivation"
+ label="Toggle tracepoint activation">
+ </command>
+ <command
+ commandId="org.eclipse.papyrus.tracepoints.tracepointproperties"
+ icon="icons/etool16/properties.gif"
+ id="org.eclipse.papyrus.tracepoints.tracepointproperties"
+ label="Tracepoint properties">
+ </command>
+ </menuContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.infra.services.tracepoints.handler.ToggleBreakpointHandler"
+ description="ToggleBreakpoint"
+ id="org.eclipse.papyrus.tracepoints.togglebreakpoint"
+ name="ToggleBreakpoint">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.infra.services.tracepoints.handler.ToggleBreakpointActivationHandler"
+ description="ToggleBreakpointActivation"
+ id="org.eclipse.papyrus.tracepoints.togglebreakpointactivation"
+ name="ToggleBreakpointActivation">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.infra.services.tracepoints.handler.ToggleTracepointHandler"
+ description="ToggleTracepoint"
+ id="org.eclipse.papyrus.tracepoints.toggletracepoint"
+ name="ToggleTracepoint">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.infra.services.tracepoints.handler.ToggleTracepointActivationHandler"
+ description="ToggleTracepointActivation"
+ id="org.eclipse.papyrus.tracepoints.toggletracepointactivation"
+ name="ToggleTracepointActivation">
+ </command>
+ <command
+ categoryId="org.eclipse.papyrus.editor.category"
+ defaultHandler="org.eclipse.papyrus.infra.services.tracepoints.handler.TracepointPropertiesHandler"
+ description="TracepointPropertoes"
+ id="org.eclipse.papyrus.tracepoints.tracepointproperties"
+ name="TracepointProperties">
+ </command>
+ </extension>
+
+ <extension
+ point="org.eclipse.papyrus.infra.services.decoration.decorationSpecificFunctions">
+ <client
+ class="org.eclipse.papyrus.infra.services.tracepoints.TraceFunctions"
+ decorationType="org.eclipse.papyrus.tporbpmarker">
+ </client>
+ </extension>
+
+ <extension
+ id="org.eclipse.papyrus.tporbpmarker"
+ name="tracepoint or breakpoint marker"
+ point="org.eclipse.core.resources.markers">
+ <super
+ type="org.eclipse.papyrus.modelmarker">
+ </super>
+ <attribute
+ name="isActive">
+ </attribute>
+ <attribute
+ name="isTracepoint">
+ </attribute>
+ <persistent
+ value="true">
+ </persistent>
+ </extension>
+
+ <extension
+ id="org.eclipse.papyrus.tpmarker"
+ name="tracepoint marker"
+ point="org.eclipse.core.resources.markers">
+ <super
+ type="org.eclipse.papyrus.tporbpmarker">
+ </super>
+ <attribute
+ name="traceAction">
+ </attribute>
+ <attribute
+ name="traceMechanism">
+ </attribute>
+ <persistent
+ value="true">
+ </persistent>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ category="org.eclipse.papyrus.infra.core.sasheditor.preferences.generalcategory"
+ class="org.eclipse.papyrus.infra.services.tracepoints.preferences.TPPreferencePage"
+ id="org.eclipse.papyrus.infra.services.tracepoints.preferences.TPPreferencePage_ID"
+ name="Tracepoint preferences">
+ </page>
+ </extension>
+</plugin>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/schema/traceMechanism.exsd b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/schema/traceMechanism.exsd
new file mode 100644
index 00000000000..ba8ed1aca6d
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/schema/traceMechanism.exsd
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.infra.services.tracepoints" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.papyrus.infra.services.tracepoints" id="traceMechanism" name="traceMechanism"/>
+ </appinfo>
+ <documentation>
+ Possibility to add implementations of a trace mechanism
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="client"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="client">
+ <complexType>
+ <attribute name="traceMechID" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.infra.services.tracepoints.ITraceMechanism"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/Activator.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/Activator.java
new file mode 100644
index 00000000000..9cba95d5b41
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/Activator.java
@@ -0,0 +1,90 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The activator class controls the plug-in life cycle.
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ /** The Constant PLUGIN_ID. */
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.infra.services.tracepoints"; //$NON-NLS-1$
+
+ // The shared instance
+ /** The plugin. */
+ private static Activator plugin;
+
+ /** The log service. */
+ public static LogHelper log;
+
+ /**
+ * The constructor.
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ /**
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ *
+ * @param context
+ * @throws Exception
+ */
+
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(plugin);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ /**
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ *
+ * @param context
+ * @throws Exception
+ */
+
+ @Override
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ log = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance.
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/ITraceMechanism.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/ITraceMechanism.java
new file mode 100644
index 00000000000..0bfdb027b35
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/ITraceMechanism.java
@@ -0,0 +1,74 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+
+
+/**
+ * The trace mechanism itself is not specific for specific implementations such
+ * as instrumenting code generators. Thus, the following interface may be defined
+ * by extensions that provide an implementation of a trace point.
+ * The first operation gets a set of available trace implementations that are supplied
+ * by the extension (in conjunction with other mechanisms).
+ * This interface is used for mechanisms that have a way of implementing trace point
+ *
+ * @author ansgar
+ *
+ */
+public interface ITraceMechanism {
+
+ /**
+ * @param eObj
+ * the element on which tracing is applied. It is passed, since the
+ * list of available trace mechanisms may depend on this object
+ * @return a list of IDs corresponding to available trace mechanisms
+ */
+ EList<String> getTraceMechanismIDs(EObject eObj);
+
+ /**
+ * Provide a description of the trace mechanism
+ *
+ * @param id
+ * the id of the trace mechanism
+ * @return its description
+ */
+ String getTraceMechanismDescription(EObject eObj, String id);
+
+ /**
+ * Apply the tracing. This usually means that an implementation specific
+ * mechanism will add additional information to the EObject, for instance
+ * in form of additional markings or stereotypes (there is no assumption
+ * how this is actually done). The idea is that these markings will be
+ * evaluated during code generation to produce the right result.
+ *
+ * @param id
+ * the ID of a trace mechanism
+ * @param element
+ * the element that should be trace
+ * @param traceOption
+ * an encoded trace option. e.g. that only the called operation
+ * should be trace and not the values of the passed parameters.
+ */
+ boolean applyTraceMechanism(EObject eObj, String id, int traceOption);
+
+ /**
+ * Configure the trace mechanisms for runtime, in particular evaluate activate/inactive
+ * tracepoint settings to obtain a suitable runtime configuration.
+ *
+ * @return
+ */
+ boolean configureTraceMechanisms();
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/MarkerUtils.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/MarkerUtils.java
new file mode 100644
index 00000000000..536728ff1ff
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/MarkerUtils.java
@@ -0,0 +1,84 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints;
+
+import java.util.MissingResourceException;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.papyrus.infra.core.markers.MarkerConstants;
+
+/**
+ * Utilities for Markers (TODO: some of these are generic marker services (move to infra core markers) and not specific to tracepoints).
+ *
+ * @author ansgar
+ *
+ */
+public class MarkerUtils {
+
+ public static URI getURI(IMarker marker) {
+ String uriOfMarkerStr = marker.getAttribute(MarkerConstants.uri, null);
+ if(uriOfMarkerStr != null) {
+ return URI.createURI(uriOfMarkerStr);
+ }
+ return null;
+ }
+
+ /**
+ * return the EObject of a marker (provided that it is a marker with a URI)
+ *
+ * @param marker
+ * @return the associated EObject
+ */
+ public static EObject getEObjectOfMarker(IMarker marker) {
+ return getEObjectOfMarker(resourceSet, marker);
+ }
+
+ /**
+ * return the EObject of a marker (provided that it is a marker with a URI)
+ *
+ * @param pResourceSet
+ * : the resourceSet into which the model associated with the eObject should
+ * be loaded
+ * @param marker
+ * @return the associated EObject
+ */
+ public static EObject getEObjectOfMarker(ResourceSet pResourceSet, IMarker marker) {
+ URI uriOfMarker = getURI(marker);
+ if(uriOfMarker != null) {
+ try {
+ pResourceSet.getResource(uriOfMarker.trimFragment(), true);
+ return pResourceSet.getEObject(uriOfMarker, true);
+ } catch (MissingResourceException e) {
+ System.err.println("Missing resource");
+ }
+ }
+ return null;
+ }
+
+ public static boolean isActive(IMarker marker) {
+ return marker.getAttribute(TracepointConstants.isActive, false);
+ }
+
+ /**
+ * our own copy of resource set
+ * we do not use the Papyrus resourceSet, since every editor keeps his own copy of the resource set (which is probably
+ * quite bad) and thus no resourceSet would be available, if Papyrus is not open.
+ */
+ public static ResourceSet resourceSet = new ResourceSetImpl();
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceActions.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceActions.java
new file mode 100644
index 00000000000..6eaf7a25518
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceActions.java
@@ -0,0 +1,206 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.infra.services.tracepoints.preferences.TPPreferenceConstants;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.State;
+
+/**
+ * Set of enumerations that indicates what we want to trace.
+ *
+ * @author ansgar
+ *
+ */
+public class TraceActions {
+
+ public enum TraceScope {
+ clazz,
+ operation,
+ state,
+ activity,
+ };
+
+ /**
+ * Options for tracing a class. Note that some options need additional information, e.g. "all operations"
+ * needs additional information how operations are traced
+ */
+ public enum TAClass {
+ Creation,
+ Destruction,
+ AllOperations,
+ AllPorts,
+ AllStates
+ // +(?) all properties/all operations
+ // +(all ports?)
+ // +all state changes? (hierarchical propagation?)
+
+ };
+
+ /**
+ * Different ways to trace operations: put only the call itself or the values of the parameters into
+ * a trace event.
+ */
+ public enum TAOperation {
+ OnlyCall,
+ ParameterValues, // here exclusive (parameter values and OnlyCall may not be selected at the same time)
+ };
+
+ /**
+ * Not used for the moment
+ */
+ public enum TAAttribute {
+ PropertyRead,
+ PropertyWrite; // write old and new value
+ };
+
+ /**
+ * Options to trace state
+ */
+ public enum TAState {
+ StateEnter, // add incoming transition to trace?
+ StateLeave, // add outgoing transition to trace?
+ Transition // nothing (?) (triggers are known? - no, could be one out of many triggers)
+ };
+
+ /**
+ * Not used for the moment
+ */
+ public enum TAActivity {
+ activity // (i.e. call operation action) explicit choice of (named attribute?)
+ };
+
+ public static String[][] getStringFields(Enum<?>[] enumValues) {
+ int i = 0;
+ String[][] taOptions = new String[enumValues.length][2];
+ for(Enum<?> tLiteral : enumValues) {
+ taOptions[i][1] = tLiteral.name();
+ taOptions[i][0] = tLiteral.name();
+ i++;
+ }
+ return taOptions;
+ }
+
+ public enum TraceFeature {
+ Class,
+ Port,
+ State,
+ Operation
+ };
+
+ /**
+ * Obtain the definition of a trace option in case of traces on classes
+ *
+ * @param traceAction
+ * @param subFeature
+ * the trace feature which we want to obtain, i.e. class, state or operation
+ * from a composite action string in case of class trace points
+ * @return
+ */
+ public static String getOptions(String traceAction, TraceFeature subFeature) {
+ String prefix = getStringPrefix(subFeature);
+ int pos = traceAction.indexOf(prefix);
+ if(pos == -1)
+ return null;
+ else {
+ // comma is used as separation character.
+ pos += prefix.length();
+ int endPos = traceAction.indexOf(',', pos);
+ if(endPos == -1) {
+ return traceAction.substring(pos);
+ }
+ return traceAction.substring(pos, endPos);
+ }
+ }
+
+ /**
+ * Get the prefix that is used in each case of a class action to distinguish class, state and operation actions.
+ *
+ * @param feature
+ * The trace feature for which we set an action
+ * @return
+ */
+ public static String getStringPrefix(TraceFeature feature) {
+ if(feature == TraceFeature.Class) {
+ return "C:";
+ }
+ if(feature == TraceFeature.Port) {
+ return "P:";
+ }
+ else if(feature == TraceFeature.State) {
+ return "S:";
+ }
+ else if(feature == TraceFeature.Operation) {
+ return "O:";
+ }
+ return null;
+ }
+
+ /**
+ * Initialize an action string that will be stored in the trace marker from the configured actions
+ * in the preferences. In case of a class, the value is a combination of different options
+ * that are prefixed to enable a unique classification
+ *
+ * @param feature
+ * The trace feature for which we set an action
+ * @return
+ */
+ public static String actionFromPreferences(TraceFeature feature) {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ if(feature == TraceFeature.Class) {
+ return compositeClassOption(store.getInt(TPPreferenceConstants.P_TRACE_OPTION_CLASS),
+ store.getInt(TPPreferenceConstants.P_TRACE_OPTION_STATE),
+ store.getInt(TPPreferenceConstants.P_TRACE_OPTION_OP));
+ }
+ else if(feature == TraceFeature.State) {
+ return store.getString(TPPreferenceConstants.P_TRACE_OPTION_STATE);
+ }
+ else if(feature == TraceFeature.Operation) {
+ return store.getString(TPPreferenceConstants.P_TRACE_OPTION_OP);
+ }
+ return "";
+ }
+
+ public static String compositeClassOption(int classOption, int stateOption, int operationOption) {
+ return getStringPrefix(TraceFeature.Class) + classOption + "," +
+ getStringPrefix(TraceFeature.State) + stateOption + "," +
+ getStringPrefix(TraceFeature.Operation) + operationOption;
+ }
+
+ /**
+ * Convenience function, return the action defined in the preferences in function of the model element
+ *
+ * @param element
+ * @return
+ */
+ public static String actionFromPreferences(EObject element) {
+ return actionFromPreferences(getTraceFeature(element));
+ }
+
+
+ public static TraceFeature getTraceFeature(EObject element) {
+ if(element instanceof State) {
+ return TraceFeature.State;
+ }
+ else if(element instanceof Operation) {
+ return TraceFeature.Operation;
+ }
+ else if(element instanceof org.eclipse.uml2.uml.Class) {
+ return TraceFeature.Class;
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceFunctions.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceFunctions.java
new file mode 100644
index 00000000000..e18394590f3
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceFunctions.java
@@ -0,0 +1,112 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.papyrus.infra.services.decoration.IDecorationSpecificFunctions;
+import org.eclipse.papyrus.infra.services.decoration.util.Decoration.PreferedPosition;
+import org.eclipse.papyrus.infra.services.decoration.util.IPapyrusDecoration;
+
+
+public class TraceFunctions implements IDecorationSpecificFunctions {
+
+ public static final String activeBreakpoint16 = "icons/etool16/brkp_16x16.gif";
+
+ public static final String inActiveBreakpoint16 = "icons/etool16/brkpd_16x16.gif";
+
+ public static final String activeTracepoint16 = "icons/etool16/trcp_16x16.gif";
+
+ public static final String inActiveTracepoint16 = "icons/etool16/trcpd_16x16.gif";
+
+ public static final String activeBreakpoint9 = "icons/etool16/brkp_9x9.gif";
+
+ public static final String inActiveBreakpoint9 = "icons/etool16/brkpd_9x9.gif";
+
+ public static final String activeTracepoint11 = "icons/etool16/trcp_11x12.gif";
+
+ public static final String inActiveTracepoint11 = "icons/etool16/trcp_11x12.gif";
+
+ /**
+ * Return the image descriptor associated with a trace or breakpoint marker
+ */
+ public ImageDescriptor getImageDescriptorForGE(IMarker marker) {
+
+
+ org.eclipse.papyrus.infra.widgets.Activator widgetsActivator =
+ org.eclipse.papyrus.infra.widgets.Activator.getDefault();
+ ImageDescriptor overlay = null;
+ boolean isActive = marker.getAttribute(TracepointConstants.isActive, false);
+ boolean isTracepoint = marker.getAttribute(TracepointConstants.isTracepoint, false);
+ if(isTracepoint) {
+ overlay = isActive ?
+ widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, activeTracepoint16) :
+ widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, inActiveTracepoint16);
+ }
+ else {
+ overlay = isActive ?
+ widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, activeBreakpoint16) :
+ widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, inActiveBreakpoint16);
+ }
+
+ return overlay;
+ }
+
+ /**
+ * Return the image descriptor associated with a trace or breakpoint marker
+ */
+ public ImageDescriptor getImageDescriptorForME(IMarker marker) {
+ org.eclipse.papyrus.infra.widgets.Activator widgetsActivator =
+ org.eclipse.papyrus.infra.widgets.Activator.getDefault();
+ ImageDescriptor overlay = null;
+ boolean isActive = marker.getAttribute(TracepointConstants.isActive, false);
+ boolean isTracepoint = marker.getAttribute(TracepointConstants.isTracepoint, false);
+ if(isTracepoint) {
+ overlay = isActive ?
+ widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, activeTracepoint11) :
+ widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, inActiveTracepoint11);
+ }
+ else {
+ overlay = isActive ?
+ widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, activeBreakpoint9) :
+ widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, inActiveBreakpoint9);
+ }
+
+ return overlay;
+ }
+
+ public PreferedPosition getPreferedPosition(IMarker marker) {
+ return PreferedPosition.SOUTH_EAST;
+ }
+
+ public String getMessage(IMarker marker) {
+ boolean isActive = marker.getAttribute(TracepointConstants.isActive, false);
+ boolean isTracepoint = marker.getAttribute(TracepointConstants.isTracepoint, false);
+ return (isActive ? "active" : "inactive") + " " +
+ (isTracepoint ? "trace point" : "break point");
+ }
+
+ public int getPriority(IMarker marker) {
+ return 0; // all markers have same priority (and we should not have multiple markers on the same model element).
+ }
+
+ public IPapyrusDecoration markerPropagation(EList<IPapyrusDecoration> childDecorations) {
+ return null;
+ }
+
+ public MarkChildren supportsMarkerPropagation() {
+ return MarkChildren.NO;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceMechanism.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceMechanism.java
new file mode 100644
index 00000000000..3edea4d3717
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceMechanism.java
@@ -0,0 +1,88 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TraceFeature;
+import org.eclipse.papyrus.infra.services.tracepoints.preferences.TPPreferenceConstants;
+
+
+/**
+ * Support for multiple trace mechanisms via the Eclipse extension mechanism
+ */
+
+public class TraceMechanism {
+
+ public static final String ITRACE_MECHANISM_ID = Activator.PLUGIN_ID + ".traceMechanism";
+
+ public static EList<ITraceMechanism> getTraceMechanisms()
+ {
+ EList<ITraceMechanism> mechanisms = new BasicEList<ITraceMechanism>();
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] configElements = reg.getConfigurationElementsFor(ITRACE_MECHANISM_ID);
+ for(IConfigurationElement configElement : configElements) {
+ try {
+ // TODO: cache returned instance (avoid creating a new instance each time => more efficient, no need for static attributes)
+ final Object obj = configElement.createExecutableExtension("class");
+ if(obj instanceof ITraceMechanism) {
+ mechanisms.add((ITraceMechanism)obj);
+ }
+ } catch (CoreException exception) {
+ exception.printStackTrace();
+ }
+ }
+ return mechanisms;
+ }
+
+ /**
+ * get the ID of the default realization mechanism. In case of classes, need to store multiple mechanisms (how to trace states, how to trace
+ * operations)
+ *
+ * @return
+ */
+ public static String getMechanismFromPreferences(TraceFeature feature) {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ if(store != null) {
+ if(feature == TraceFeature.Class) {
+ return TraceActions.getStringPrefix(TraceFeature.Port) + store.getInt(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_PORT) + "," +
+ TraceActions.getStringPrefix(TraceFeature.State) + store.getInt(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_SM) + "," +
+ TraceActions.getStringPrefix(TraceFeature.Operation) + store.getInt(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_OP);
+ }
+ else if(feature == TraceFeature.State) {
+ return store.getString(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_SM);
+ }
+ else if(feature == TraceFeature.Operation) {
+ return store.getString(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_OP);
+ }
+ }
+ return "";
+ }
+
+ /**
+ * Convenience function. Return defaultTraceMechanisms in function of the element being traced.
+ *
+ * @param element
+ * @return
+ */
+ public static String getDefaultMechanism(EObject element) {
+ return getMechanismFromPreferences(TraceActions.getTraceFeature(element));
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceState.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceState.java
new file mode 100644
index 00000000000..275d277cd68
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TraceState.java
@@ -0,0 +1,20 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints;
+
+
+public class TraceState {
+
+ public static boolean skipAllTracepoints = false;
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TracepointConstants.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TracepointConstants.java
new file mode 100644
index 00000000000..f4d617c6e7c
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/TracepointConstants.java
@@ -0,0 +1,32 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints;
+
+
+
+public class TracepointConstants {
+
+ /**
+ * The id of the marker used for tracepoints and breakpoints
+ */
+ public static final String tpOrbpMarker = "org.eclipse.papyrus.tporbpmarker";
+
+ public static final String isActive = "isActive";
+
+ public static final String isTracepoint = "isTracepoint";
+
+ public static final String traceAction = "traceAction";
+
+ public static final String traceMechanism = "traceMechanism";
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/AbstractTracepointCommand.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/AbstractTracepointCommand.java
new file mode 100644
index 00000000000..1aaf94e276c
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/AbstractTracepointCommand.java
@@ -0,0 +1,168 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermarcher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints.commands;
+
+import java.util.Collections;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
+import org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.infra.core.markers.MarkerConstants;
+import org.eclipse.papyrus.infra.services.tracepoints.Activator;
+import org.eclipse.papyrus.infra.services.tracepoints.ITraceMechanism;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceMechanism;
+import org.eclipse.papyrus.infra.services.tracepoints.TracepointConstants;
+import org.eclipse.papyrus.infra.services.tracepoints.preferences.TPPreferenceConstants;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.State;
+
+/**
+ * Action used for pasting either a model element or a shape (i.e. the model element represented
+ * by the shape). Delegates to PasteShapeOrElementCommand
+ *
+ * @author Ansgar Radermacher (CEA LIST)
+ */
+abstract public class AbstractTracepointCommand extends AbstractTransactionalCommand {
+
+ protected TransactionalEditingDomain domain;
+
+ protected EObject selectedElement;
+
+ /**
+ * Creates a new ImportLibraryFromRepositoryCommand
+ *
+ * @param editingDomain
+ * editing domain that manages the changed objects
+ * @param runnable
+ * process that executes the modifications
+ * @param label
+ * the label of the command
+ * @param description
+ * description of the command
+ */
+
+ public AbstractTracepointCommand(String label, TransactionalEditingDomain domain, EObject selectedElement) {
+ super(domain, label, Collections.EMPTY_LIST);
+ this.domain = domain;
+ this.selectedElement = selectedElement;
+ }
+
+ protected void updateResourceAndURI() {
+ resource = selectedElement.eResource();
+ uri = resource.getURI() + "#" + resource.getURIFragment(selectedElement);
+ iresource = WorkspaceSynchronizer.getFile(selectedElement.eResource());
+ }
+
+ protected IMarker findMarker(String type) {
+
+ if(iresource != null) {
+ try {
+ for(IMarker marker : iresource.findMarkers(type, false, IResource.DEPTH_INFINITE)) {
+ String markerURI = marker.getAttribute(MarkerConstants.uri, "");
+ if((markerURI != null) && markerURI.equals(uri)) {
+ return marker;
+ }
+ }
+ } catch (CoreException ce) {
+ }
+ }
+ return null;
+ }
+
+ protected IMarker toggleMarker() {
+ try {
+ if(iresource != null) {
+ IMarker marker = findMarker(TracepointConstants.tpOrbpMarker);
+ if(marker == null) { // marker does not exist => create
+ marker = iresource.createMarker(TracepointConstants.tpOrbpMarker);
+ marker.setAttribute(MarkerConstants.uri, uri);
+ marker.setAttribute(TracepointConstants.isActive, true);
+ return marker;
+ }
+ else {
+ // marker exists => delete
+ marker.delete();
+ }
+ }
+ } catch (CoreException ce) {
+ }
+ return null;
+ }
+
+ protected void toggleMarkerActivation() {
+ try {
+ if(iresource != null) {
+ IMarker marker = findMarker(TracepointConstants.tpOrbpMarker);
+ if(marker == null) { // marker does not exist => create
+ marker = iresource.createMarker(TracepointConstants.tpOrbpMarker);
+ marker.setAttribute(MarkerConstants.uri, uri);
+ marker.setAttribute(TracepointConstants.isActive, true);
+
+ // apply trace mechanism according to default in preferences
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ String id = null;
+ if(selectedElement instanceof Operation) {
+ id = store.getDefaultString(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_OP);
+ }
+ else if(selectedElement instanceof Port) {
+ id = store.getDefaultString(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_OP);
+ }
+ else if(selectedElement instanceof State) {
+ id = store.getDefaultString(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_SM);
+ }
+ if(id != null) {
+ EList<ITraceMechanism> mechanisms = TraceMechanism.getTraceMechanisms();
+ for(ITraceMechanism mechanism : mechanisms) {
+ for(String providedID : mechanism.getTraceMechanismIDs(selectedElement)) {
+ if(id.equals(providedID)) {
+ mechanism.applyTraceMechanism(selectedElement, id, 0);
+ }
+ }
+ }
+ }
+ }
+ else {
+ // marker exists => change activation status
+ boolean isSet = marker.getAttribute(TracepointConstants.isActive, false);
+ marker.setAttribute(TracepointConstants.isActive, !isSet);
+ }
+ }
+ } catch (CoreException ce) {
+ System.err.println(ce);
+ }
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean canExecute() {
+ return (selectedElement != null);
+ }
+
+ protected Resource resource;
+
+ protected IResource iresource;
+
+ protected String uri;
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleBreakpointActivationCommand.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleBreakpointActivationCommand.java
new file mode 100644
index 00000000000..aac91107a20
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleBreakpointActivationCommand.java
@@ -0,0 +1,40 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+
+
+public class ToggleBreakpointActivationCommand extends AbstractTracepointCommand {
+
+ public ToggleBreakpointActivationCommand(EObject selectedElement) {
+ super("Toggle Breakpoint activation", TransactionUtil.getEditingDomain(selectedElement), selectedElement);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ updateResourceAndURI();
+ toggleMarkerActivation();
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleBreakpointCommand.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleBreakpointCommand.java
new file mode 100644
index 00000000000..2a3dcc3d415
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleBreakpointCommand.java
@@ -0,0 +1,41 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+
+
+public class ToggleBreakpointCommand extends AbstractTracepointCommand {
+
+ public ToggleBreakpointCommand(EObject selectedElement) {
+ super("Toggle Breakpoint", TransactionUtil.getEditingDomain(selectedElement), selectedElement);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
+ {
+ updateResourceAndURI();
+ toggleMarker();
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleTracepointActivationCommand.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleTracepointActivationCommand.java
new file mode 100644
index 00000000000..0b636e0b2cc
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleTracepointActivationCommand.java
@@ -0,0 +1,41 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+
+
+public class ToggleTracepointActivationCommand extends AbstractTracepointCommand {
+
+ public ToggleTracepointActivationCommand(EObject selectedElement) {
+ super("Toggle tracepoint activation", TransactionUtil.getEditingDomain(selectedElement), selectedElement);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+
+ updateResourceAndURI();
+ toggleMarkerActivation();
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleTracepointCommand.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleTracepointCommand.java
new file mode 100644
index 00000000000..143ab6d7a50
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/ToggleTracepointCommand.java
@@ -0,0 +1,52 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceMechanism;
+import org.eclipse.papyrus.infra.services.tracepoints.TracepointConstants;
+
+
+public class ToggleTracepointCommand extends AbstractTracepointCommand {
+
+ public ToggleTracepointCommand(EObject selectedElement) {
+ super("Toggle tracepoint", TransactionUtil.getEditingDomain(selectedElement), selectedElement);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ updateResourceAndURI();
+ try {
+ IMarker marker = toggleMarker();
+ marker.setAttribute(TracepointConstants.isTracepoint, true);
+ // set default options from preferences
+ marker.setAttribute(TracepointConstants.traceAction, TraceActions.actionFromPreferences(selectedElement));
+ marker.setAttribute(TracepointConstants.traceMechanism, TraceMechanism.getDefaultMechanism(selectedElement));
+ } catch (CoreException e) {
+
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/TracepointPropertiesCommand.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/TracepointPropertiesCommand.java
new file mode 100644
index 00000000000..c082c2a4c30
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/commands/TracepointPropertiesCommand.java
@@ -0,0 +1,81 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.commands;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.gmf.runtime.common.core.command.CommandResult;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.papyrus.infra.services.tracepoints.TracepointConstants;
+import org.eclipse.papyrus.infra.services.tracepoints.dialogs.TraceActionSelection;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.uml2.uml.Element;
+
+
+public class TracepointPropertiesCommand extends AbstractTracepointCommand {
+
+ public TracepointPropertiesCommand(EObject selectedElement) {
+ super("Tracepoint properties", TransactionUtil.getEditingDomain(selectedElement), selectedElement);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException
+ {
+ updateResourceAndURI();
+ selectTraceActions();
+ return null;
+ }
+
+ protected void selectTraceActions() {
+ IMarker marker = findMarker(TracepointConstants.tpOrbpMarker);
+ if(marker != null) {
+ // should normally always hold, since this is checked in canExecute
+ TraceActionSelection tad = new TraceActionSelection(new Shell(), marker, (Element)selectedElement);
+ tad.open();
+ if(tad.getReturnCode() == IDialogConstants.OK_ID) {
+ Object[] result = tad.getResult();
+ String traceAction = (String)result[0];
+ String traceMechanism = (String)result[1];
+ try {
+ marker.setAttribute(TracepointConstants.traceAction, traceAction);
+ marker.setAttribute(TracepointConstants.traceMechanism, traceMechanism);
+ } catch (CoreException e) {
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean canExecute() {
+ if(selectedElement != null) {
+ updateResourceAndURI();
+ IMarker marker = findMarker(TracepointConstants.tpOrbpMarker);
+ System.err.println("Hallo: " + marker);
+ return marker.getAttribute(TracepointConstants.isTracepoint, false);
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/dialogs/TraceActionSelection.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/dialogs/TraceActionSelection.java
new file mode 100644
index 00000000000..b1258f9f19e
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/dialogs/TraceActionSelection.java
@@ -0,0 +1,293 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.dialogs;
+
+import java.util.Arrays;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.infra.services.tracepoints.ITraceMechanism;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TAClass;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TAOperation;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TAState;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TraceFeature;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceMechanism;
+import org.eclipse.papyrus.infra.services.tracepoints.TracepointConstants;
+import org.eclipse.papyrus.infra.services.tracepoints.preferences.BinaryEncodedMChoiceFieldEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.swt.widgets.TreeItem;
+import org.eclipse.ui.dialogs.SelectionStatusDialog;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.State;
+
+public class TraceActionSelection extends SelectionStatusDialog {
+
+ protected CheckboxTableViewer fTraceImplementations;
+
+ protected Text fDescription;
+
+ IMarker m_marker;
+
+ BinaryEncodedMChoiceFieldEditor classOptions;
+
+ BinaryEncodedMChoiceFieldEditor operationOptions;
+
+ BinaryEncodedMChoiceFieldEditor stateOptions;
+
+ /**
+ * The model element that has a trace marker
+ */
+ private Element m_me;
+
+ public TraceActionSelection(Shell parent, IMarker marker, Element me) {
+ super(parent);
+ m_me = me;
+ m_marker = marker;
+ // int traceAction = marker.getAttribute(TracepointConstants.traceAction, 0);
+ }
+
+
+ /**
+ * @see SelectionStatusDialog#computeResult()
+ * need to return two values: trace action & mechanism
+ */
+ protected void computeResult() {
+ // nothing to do
+ String traceActionValue = null;
+ if(m_me instanceof State) {
+ traceActionValue = stateOptions.getResult();
+ }
+ else if(m_me instanceof Class) {
+ traceActionValue = TraceActions.compositeClassOption(
+ classOptions.getIntResult(),
+ stateOptions.getIntResult(),
+ operationOptions.getIntResult());
+ }
+ else if(m_me instanceof State) {
+ traceActionValue = stateOptions.getResult();
+ }
+ else if(m_me instanceof Operation) {
+ traceActionValue = operationOptions.getResult();
+ }
+ String traceMechanism = "";
+ for(Object tableElement : fTraceImplementations.getCheckedElements()) {
+ traceMechanism = (String)tableElement;
+ };
+
+ Object[] result = new Object[]{
+ traceActionValue,
+ traceMechanism
+ };
+ setResult(Arrays.asList(result));
+ }
+
+ class EnumLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ public String getColumnText(Object obj, int index) {
+ if(obj instanceof Enum) {
+ return ((Enum<?>)obj).name();
+ }
+ return obj.toString();
+ }
+
+ public Image getColumnImage(Object obj, int index) {
+ return null;
+ }
+ }
+
+ class TraceMechanismsCP implements IStructuredContentProvider {
+
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ }
+
+ public void dispose() {
+ }
+
+ public Object[] getElements(Object parent) {
+ Object items[] = null;
+ //
+ // Implementations of a tracing mechanism are depending on the injection mechanism and (likely) on the
+ // programming language. Therefore, they are not part of this plugin shipped with Papyrus, but use an
+ // extension mechanism.
+
+ EList<ITraceMechanism> mechanisms = TraceMechanism.getTraceMechanisms();
+ if(mechanisms.size() == 0) {
+ items = new String[]{ "no plugins provide trace extension mechanism" };
+ }
+ else {
+ EList<String> idList = new BasicEList<String>();
+ for(ITraceMechanism mechanism : mechanisms) {
+ for(String id : mechanism.getTraceMechanismIDs(m_me)) {
+ idList.add(id);
+ }
+ }
+ items = idList.toArray(new String[0]);
+ }
+ return items;
+ }
+ }
+
+ public Control createDialogArea(Composite parent) {
+ Composite contents = (Composite)super.createDialogArea(parent);
+
+ Label label = new Label(contents, SWT.NONE);
+ label.setText("Select trace action for this element");
+
+ // need context dependent dialogs on options
+ // we may need more than one options (e.g. AllOperations + OperationsWithParameters + (begin/end or both?))
+ // clean way: accumulate all options, distribute them automatically accordingly. Better (even if less efficient, if strings)
+
+ String[][] taClassOptions = TraceActions.getStringFields(TAClass.values());
+ String[][] taStateOptions = TraceActions.getStringFields(TAState.values());
+ String[][] taOperationOptions = TraceActions.getStringFields(TAOperation.values());
+ String actionString = m_marker.getAttribute(TracepointConstants.traceAction, "");
+ String mechanismID = m_marker.getAttribute(TracepointConstants.traceMechanism, "");
+
+ if(m_me instanceof State) {
+ stateOptions = new BinaryEncodedMChoiceFieldEditor("State options", 3, taStateOptions, contents, true);
+ stateOptions.setupViaString(actionString);
+ }
+ else if(m_me instanceof Class) {
+ classOptions = new BinaryEncodedMChoiceFieldEditor("Class options", 3, taClassOptions, contents, true);
+ stateOptions = new BinaryEncodedMChoiceFieldEditor("State options", 3, taStateOptions, contents, true);
+ operationOptions = new BinaryEncodedMChoiceFieldEditor("Operation options", 3, taOperationOptions, contents, true);
+ classOptions.setupViaString(TraceActions.getOptions(actionString, TraceFeature.Class));
+ stateOptions.setupViaString(TraceActions.getOptions(actionString, TraceFeature.State));
+ operationOptions.setupViaString(TraceActions.getOptions(actionString, TraceFeature.Operation));
+ }
+ else if(m_me instanceof Operation) {
+ operationOptions = new BinaryEncodedMChoiceFieldEditor("Operation options", 3, taOperationOptions, contents, true);
+ operationOptions.setupViaString(actionString);
+ }
+
+ Group implementationGroup = new Group(parent, SWT.NONE);
+ implementationGroup.setText("Implementation options");
+
+ // need additional item how the trace mechanism should be realized, i.e. available tracing mechanisms
+ fTraceImplementations = CheckboxTableViewer.newCheckList(implementationGroup, SWT.H_SCROLL | SWT.V_SCROLL);
+
+ fTraceImplementations.setContentProvider(new TraceMechanismsCP());
+ fTraceImplementations.setInput(this);
+ fTraceImplementations.setChecked(mechanismID, true); // TODO: likely not to work
+
+ fTraceImplementations.addCheckStateListener(new ICheckStateListener() {
+
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ Object element = event.getElement();
+ boolean isChecked = event.getChecked();
+ // assure radio button functionality
+ if(isChecked) {
+ for(Object checkedElement : fTraceImplementations.getCheckedElements()) {
+ if(checkedElement != element) {
+ fTraceImplementations.setChecked(checkedElement, false);
+ }
+ }
+ }
+ }
+ });
+
+ fTraceImplementations.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection selection = event.getSelection();
+ if(selection instanceof IStructuredSelection) {
+ Object first = ((IStructuredSelection)selection).getFirstElement();
+ if(first instanceof String) {
+ EList<ITraceMechanism> mechanisms = TraceMechanism.getTraceMechanisms();
+ boolean noDesc = true;
+ for(ITraceMechanism mechanism : mechanisms) {
+ String description = mechanism.getTraceMechanismDescription(m_me, (String)first);
+ if(description != null) {
+ fDescription.setText(description);
+ noDesc = false;
+ break;
+ }
+ }
+ if(noDesc) {
+ fDescription.setText("<not available>");
+ }
+ }
+ }
+ }
+ });
+
+ fDescription = new Text(implementationGroup, SWT.WRAP | SWT.V_SCROLL | SWT.READ_ONLY);
+
+ GridData span = new GridData();
+ span.horizontalAlignment = GridData.FILL;
+ span.grabExcessHorizontalSpace = true;
+ span.grabExcessVerticalSpace = true;
+ span.verticalAlignment = GridData.FILL;
+ span.heightHint = 250;
+
+ // fTraceActions.getTable().setLayoutData(span);
+ implementationGroup.setLayout(new GridLayout());
+ implementationGroup.setLayoutData(span);
+
+ GridData span2 = new GridData();
+ span2.horizontalAlignment = GridData.FILL;
+ span2.grabExcessHorizontalSpace = true;
+ span2.grabExcessVerticalSpace = true;
+ span2.verticalAlignment = GridData.FILL;
+ span2.heightHint = 80;
+ fDescription.setLayoutData(span2);
+ fTraceImplementations.getTable().setLayoutData(span2);
+
+ // ruleGroup.setLayout(new RowLayout (SWT.VERTICAL));
+ parent.setLayout(new GridLayout(1, false));
+ // parent.setLayoutData(groupGridData);
+ return contents;
+ }
+
+ // obtain name and explicit/implicit node Allocation
+ protected void setTextFromData(TreeItem ti) {
+ Object data = ti.getData();
+ if(data instanceof InstanceSpecification) {
+ // ti.setText(new String[]{ name, nodeName, "[" + list + "]" });
+ }
+ }
+
+ protected void refreshTree(TreeItem ti) {
+ setTextFromData(ti);
+ for(TreeItem subItem : ti.getItems()) {
+ refreshTree(subItem);
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/AbstractCommandHandler.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/AbstractCommandHandler.java
new file mode 100644
index 00000000000..83b15f4686c
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/AbstractCommandHandler.java
@@ -0,0 +1,165 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints.handler;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.utils.BusinessModelResolver;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtilsForActionHandlers;
+import org.eclipse.papyrus.infra.services.tracepoints.Activator;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * <pre>
+ *
+ * This abstract command handler manages:
+ * - current selection in order to build a list of the selected {@link EObject}
+ * - execute the command (returned by children) in Papyrus {@link TransactionalEditingDomain}
+ * - calculate the command enablement and visibility regarding the command executability
+ * (the command is now shown in menu if not executable).
+ *
+ * </pre>
+ */
+public abstract class AbstractCommandHandler extends AbstractHandler {
+
+ /**
+ * <pre>
+ *
+ * Returns the command to execute (to be implemented
+ * in children implementing this class)
+ *
+ * @return the command to execute
+ *
+ * </pre>
+ */
+ protected abstract Command getCommand();
+
+ /**
+ * <pre>
+ * Get the selected element, the first selected element if several are selected or null
+ * if no selection or the selection is not an {@link EObject}.
+ *
+ * @return selected {@link EObject} or null
+ * </pre>
+ *
+ */
+ protected EObject getSelectedElement() {
+ EObject eObject = null;
+ Object selection = null;
+
+ // Get current selection
+ selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
+
+ // Get first element if the selection is an IStructuredSelection
+ if(selection instanceof IStructuredSelection) {
+ IStructuredSelection structuredSelection = (IStructuredSelection)selection;
+ selection = structuredSelection.getFirstElement();
+ }
+
+ // Treat non-null selected object (try to adapt and return EObject)
+ if(selection != null) {
+ Object businessObject = BusinessModelResolver.getInstance().getBusinessModel(selection);
+ if(businessObject instanceof EObject) {
+ eObject = (EObject)businessObject;
+ }
+ }
+ return eObject;
+ }
+
+ /**
+ * <pre>
+ * Parse current selection and extract the list of {@link EObject} from
+ * this selection.
+ *
+ * This also tries to adapt selected element into {@link EObject}
+ * (for example to get the {@link EObject} from a selection in the ModelExplorer).
+ *
+ * @return a list of currently selected {@link EObject}
+ * </pre>
+ *
+ */
+ protected List<EObject> getSelectedElements() {
+
+ List<EObject> selectedEObjects = new ArrayList<EObject>();
+
+ // Parse current selection
+ ISelection selection = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
+ if(selection instanceof IStructuredSelection) {
+ IStructuredSelection structuredSelection = (IStructuredSelection)selection;
+ for(Object current : structuredSelection.toArray()) {
+ // Adapt current selection to EObject
+ if(current instanceof IAdaptable) {
+ selectedEObjects.add((EObject)((IAdaptable)current).getAdapter(EObject.class));
+ }
+ }
+ } else { // Not a IStructuredSelection
+ if(selection != null) {
+ // Adapt current selection to EObject
+ if(selection instanceof IAdaptable) {
+ selectedEObjects.add((EObject)((IAdaptable)selection).getAdapter(EObject.class));
+ }
+ }
+ }
+
+ return selectedEObjects;
+ }
+
+ /**
+ *
+ * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
+ *
+ * @param event
+ * @return null
+ * @throws ExecutionException
+ */
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ try {
+ ServiceUtilsForActionHandlers util = new ServiceUtilsForActionHandlers();
+ util.getTransactionalEditingDomain().getCommandStack().execute(getCommand());
+ } catch (ServiceException e) {
+ Activator.log.error("Unexpected error while executing command.", e); //$NON-NLS-1$
+ }
+
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isEnabled() {
+ return getCommand().canExecute();
+ }
+
+ /**
+ *
+ * @return true (visible) when the command can be executed.
+ */
+ public boolean isVisible() {
+ return getCommand().canExecute();
+ }
+
+
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleBreakpointActivationHandler.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleBreakpointActivationHandler.java
new file mode 100644
index 00000000000..e2d03274ea0
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleBreakpointActivationHandler.java
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.handler;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.tracepoints.commands.ToggleBreakpointActivationCommand;
+
+/**
+ * Handler for toggling breakpoint activation. Delegates to associated command
+ *
+ * @author Ansgar Radermacher (CEA LIST)
+ */
+public class ToggleBreakpointActivationHandler extends AbstractCommandHandler {
+
+ @Override
+ protected Command getCommand() {
+ // not useful to cache command, since selected element may change
+ return new GMFtoEMFCommandWrapper(new ToggleBreakpointActivationCommand(getSelectedElement()));
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleBreakpointHandler.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleBreakpointHandler.java
new file mode 100644
index 00000000000..2e840dcb595
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleBreakpointHandler.java
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.handler;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.tracepoints.commands.ToggleBreakpointCommand;
+
+/**
+ * Handler for toggling a break point. Delegates to associated command
+ *
+ * @author Ansgar Radermacher (CEA LIST)
+ */
+public class ToggleBreakpointHandler extends AbstractCommandHandler {
+
+ @Override
+ protected Command getCommand() {
+ // not useful to cache command, since selected element may change
+ return new GMFtoEMFCommandWrapper(new ToggleBreakpointCommand(getSelectedElement()));
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleTracepointActivationHandler.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleTracepointActivationHandler.java
new file mode 100644
index 00000000000..cd131c93831
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleTracepointActivationHandler.java
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.handler;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.tracepoints.commands.ToggleTracepointActivationCommand;
+
+/**
+ * Handler for toggling tracepoint activation. Delegates to associated command
+ *
+ * @author Ansgar Radermacher (CEA LIST)
+ */
+public class ToggleTracepointActivationHandler extends AbstractCommandHandler {
+
+ @Override
+ protected Command getCommand() {
+ // not useful to cache command, since selected element may change
+ return new GMFtoEMFCommandWrapper(new ToggleTracepointActivationCommand(getSelectedElement()));
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleTracepointHandler.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleTracepointHandler.java
new file mode 100644
index 00000000000..8045157a878
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/ToggleTracepointHandler.java
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.handler;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.tracepoints.commands.ToggleTracepointCommand;
+
+/**
+ * Handler for toggling a tracepoint. Delegates to associated command
+ *
+ * @author Ansgar Radermacher (CEA LIST)
+ */
+public class ToggleTracepointHandler extends AbstractCommandHandler {
+
+ @Override
+ protected Command getCommand() {
+ // not useful to cache command, since selected element may change
+ return new GMFtoEMFCommandWrapper(new ToggleTracepointCommand(getSelectedElement()));
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/TracepointPropertiesHandler.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/TracepointPropertiesHandler.java
new file mode 100644
index 00000000000..c1565dc9bea
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/handler/TracepointPropertiesHandler.java
@@ -0,0 +1,33 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.handler;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.papyrus.commands.wrappers.GMFtoEMFCommandWrapper;
+import org.eclipse.papyrus.infra.services.tracepoints.commands.TracepointPropertiesCommand;
+
+/**
+ * Handler for changing the properties of a tracepoint. Delegates to associated command
+ *
+ * @author Ansgar Radermacher (CEA LIST)
+ */
+public class TracepointPropertiesHandler extends AbstractCommandHandler {
+
+ @Override
+ protected Command getCommand() {
+ // not useful to cache command, since selected element may change
+ return new GMFtoEMFCommandWrapper(new TracepointPropertiesCommand(getSelectedElement()));
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/BinaryEncodedMChoiceFieldEditor.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/BinaryEncodedMChoiceFieldEditor.java
new file mode 100644
index 00000000000..b8db97671e8
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/BinaryEncodedMChoiceFieldEditor.java
@@ -0,0 +1,132 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.infra.services.tracepoints.preferences;
+
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * A class derived from the MultipleChoiceFieldEditor.
+ * It encodes a multiple choice value in a binary way, i.e. bit I is set in the result, if the i-th choice is active.
+ * This class can also be used outside a preference page
+ *
+ * @author ansgar
+ *
+ */
+public class BinaryEncodedMChoiceFieldEditor extends MultipleChoiceFieldEditor {
+
+ /**
+ * @param name
+ * The preference ID
+ * @param labeltext
+ * the label text
+ * @param numColumns
+ * the number of columns
+ * @param labelsAndValues
+ * a two dimensional array containing the labels and values
+ * @param parent
+ * the parent SWT composite (field editor parent)
+ * @param useGroup
+ * display contents within a group
+ */
+ public BinaryEncodedMChoiceFieldEditor(String name, String labeltext, int numColumns, String[][] labelsAndValues, Composite parent, boolean useGroup) {
+ super(name, labeltext, numColumns, labelsAndValues, parent, useGroup);
+ }
+
+
+ /**
+ * Convenience constructor, if used outside a preference page
+ *
+ * @param labeltext
+ * the label text
+ * @param numColumns
+ * the number of columns
+ * @param labelsAndValues
+ * a two dimensional array containing the labels and values
+ * @param parent
+ * the parent SWT composite (field editor parent)
+ * @param useGroup
+ * display contents within a group
+ */
+ public BinaryEncodedMChoiceFieldEditor(String labeltext, int numColumns, String[][] labelsAndValues, Composite parent, boolean useGroup) {
+ super("", labeltext, numColumns, labelsAndValues, parent, useGroup);
+ }
+
+ /**
+ * Use this function to initialize the set/non-set flags within the dialog from a binary encoded value,
+ * if you use the dialog outside a preference page
+ *
+ * @param currentValue
+ */
+ public void setupViaString(String currentValue) {
+ setupControls(currentValue);
+ }
+
+ /**
+ * Use this function to get the results,
+ * if you use the dialog outside a preference page
+ *
+ * @return the result
+ */
+ public String getResult() {
+ result = gatherSettings();
+ return result;
+ }
+
+ /**
+ * Convenience function returning an integer result instead of a String result
+ * (requires double conversion that is difficult to avoid, since calculateResults needs to return
+ * a string);
+ *
+ * @return
+ */
+ public int getIntResult() {
+ if(getResult() == null) {
+ return 0;
+ }
+ return Integer.parseInt(getResult());
+ }
+
+ @Override
+ protected String calculateResult(String[][] settings) {
+ int traceActionValue = 0;
+ int index = 0;
+ for(String setting[] : settings) {
+ // [0] = name, [1] = value [2] = checked
+ if(setting[2].equals("true")) {
+ traceActionValue += 1 << index;
+ }
+ index++;
+ };
+ return String.valueOf(traceActionValue);
+ }
+
+ @Override
+ protected boolean isSelected(String fieldName, String valueToSet) {
+ try {
+ int value = new Integer(valueToSet);
+ int index = 0;
+ for(String setting[] : labelsAndValues) {
+ // [0] = name, [1] = value [2] = checked
+ if(setting[0].equals(fieldName)) {
+ return (value & (1 << index)) > 0;
+ }
+ index++;
+ };
+ } catch (NumberFormatException e) {
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/MultipleChoiceFieldEditor.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/MultipleChoiceFieldEditor.java
new file mode 100644
index 00000000000..0ef922e2b9e
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/MultipleChoiceFieldEditor.java
@@ -0,0 +1,234 @@
+/*******************************************************************************
+ * Copyright (c) 2008 itemis AG (http://www.itemis.eu) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ *******************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints.preferences;
+
+import org.eclipse.jface.preference.FieldEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+
+
+/**
+ * @author Dennis Hübner - Initial contribution and API
+ * [used within Papyrus to avoid dependency to Xtext, minor visibility modification]
+ *
+ */
+public abstract class MultipleChoiceFieldEditor extends FieldEditor {
+
+ private Composite checkBoxBox;
+
+ private final boolean useGroup;
+
+ protected final String[][] labelsAndValues;
+
+ private final int numColumns;
+
+ private Button[] checkBoxButtons;
+
+ protected String result;
+
+ public MultipleChoiceFieldEditor(String name, String labeltext, int numColumns, String[][] labelsAndValues,
+ Composite fieldEditorParent, boolean useGroup) {
+ init(name, labeltext);
+ this.numColumns = numColumns;
+ this.labelsAndValues = labelsAndValues.clone();
+ this.useGroup = useGroup;
+ createControl(fieldEditorParent);
+ }
+
+ /**
+ * @param settings
+ * String[][fieldName,fieldValue,isChecked]
+ * @return value as String
+ */
+ protected abstract String calculateResult(String[][] settings);
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.preference.FieldEditor#adjustForNumColumns(int)
+ */
+ @Override
+ protected void adjustForNumColumns(int numColumns) {
+ Control control = getLabelControl();
+ if(control != null) {
+ ((GridData)control.getLayoutData()).horizontalSpan = numColumns;
+ }
+ ((GridData)checkBoxBox.getLayoutData()).horizontalSpan = numColumns;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt
+ * .widgets.Composite, int)
+ */
+ @Override
+ protected void doFillIntoGrid(Composite parent, int numColumns) {
+ if(useGroup) {
+ Control control = getCheckBoxControl(parent);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ control.setLayoutData(gd);
+ }
+ else {
+ Control control = getLabelControl(parent);
+ GridData gd = new GridData();
+ gd.horizontalSpan = numColumns;
+ control.setLayoutData(gd);
+ control = getCheckBoxControl(parent);
+ gd = new GridData();
+ gd.horizontalSpan = numColumns;
+ control.setLayoutData(gd);
+ }
+ }
+
+ private Control getCheckBoxControl(Composite parent) {
+ if(checkBoxBox == null) {
+ Font font = parent.getFont();
+ if(useGroup) {
+ Group group = new Group(parent, SWT.NONE);
+ group.setFont(font);
+ String text = getLabelText();
+ if(text != null) {
+ group.setText(text);
+ }
+ checkBoxBox = group;
+ GridLayout layout = new GridLayout();
+ layout.horizontalSpacing = HORIZONTAL_GAP;
+ layout.numColumns = numColumns;
+ checkBoxBox.setLayout(layout);
+ }
+ else {
+ checkBoxBox = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ layout.horizontalSpacing = HORIZONTAL_GAP;
+ layout.numColumns = numColumns;
+ checkBoxBox.setLayout(layout);
+ checkBoxBox.setFont(font);
+ }
+
+ checkBoxButtons = new Button[labelsAndValues.length];
+ for(int i = 0; i < labelsAndValues.length; i++) {
+ Button checkBox = new Button(checkBoxBox, SWT.CHECK | SWT.LEFT);
+ checkBoxButtons[i] = checkBox;
+ String[] labelAndValue = labelsAndValues[i];
+ checkBox.setText(labelAndValue[0]);
+ checkBox.setData(labelAndValue[1]);
+ checkBox.setFont(font);
+ checkBox.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent event) {
+ setPresentsDefaultValue(false);
+ String oldResult = result;
+ result = gatherSettings();
+ fireValueChanged(VALUE, oldResult, result);
+ }
+ });
+ }
+ checkBoxBox.addDisposeListener(new DisposeListener() {
+
+ public void widgetDisposed(DisposeEvent event) {
+ checkBoxBox = null;
+ checkBoxButtons = null;
+ }
+ });
+ }
+ else {
+ checkParent(checkBoxBox, parent);
+ }
+ return checkBoxBox;
+ }
+
+ protected String gatherSettings() {
+ String[][] settings = new String[checkBoxButtons.length][3];
+ for(int i = 0; i < checkBoxButtons.length; i++) {
+ Button currentCheckBox = checkBoxButtons[i];
+ String name = currentCheckBox.getText();
+ String value = (String)currentCheckBox.getData();
+ String checked = String.valueOf(currentCheckBox.getSelection());
+ settings[i] = new String[]{ name, value, checked };
+ }
+ return calculateResult(settings);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.preference.FieldEditor#doLoad()
+ */
+ @Override
+ public void doLoad() {
+ setupControls(getPreferenceStore().getString(getPreferenceName()));
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.preference.FieldEditor#doLoadDefault()
+ */
+ @Override
+ protected void doLoadDefault() {
+ setupControls(getPreferenceStore().getDefaultString(getPreferenceName()));
+ }
+
+ protected void setupControls(String valueToSet) {
+ for(int i = 0; i < checkBoxButtons.length; i++) {
+ Button currentCheckBox = checkBoxButtons[i];
+ currentCheckBox.setSelection(isSelected(currentCheckBox.getText(), valueToSet));
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.preference.FieldEditor#doStore()
+ */
+ @Override
+ protected void doStore() {
+ if(result == null) {
+ return;
+ }
+ getPreferenceStore().setValue(getPreferenceName(), result);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.preference.FieldEditor#getNumberOfControls()
+ */
+ @Override
+ public int getNumberOfControls() {
+ return 1;
+ }
+
+ @Override
+ public void setEnabled(boolean enabled, Composite parent) {
+ if(!useGroup) {
+ super.setEnabled(enabled, parent);
+ }
+ for(Button button : checkBoxButtons) {
+ button.setEnabled(enabled);
+ }
+ }
+
+ abstract protected boolean isSelected(String fieldName, String valueToSet);
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferenceConstants.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferenceConstants.java
new file mode 100644
index 00000000000..2a0845bb849
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferenceConstants.java
@@ -0,0 +1,51 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints.preferences;
+
+/**
+ * Constant definitions for plug-in preferences
+ */
+public class TPPreferenceConstants {
+
+ /**
+ * The trace mechanism that should be used by default
+ */
+ public static final String P_TRACE_IMPLEMENTATION_PORT = "papyrus.trace.implementation.port";
+
+ /**
+ * The trace mechanism that should be used by default
+ */
+ public static final String P_TRACE_IMPLEMENTATION_OP = "papyrus.trace.implementation.op";
+
+ /**
+ * The trace mechanism that should be used by default
+ */
+ public static final String P_TRACE_IMPLEMENTATION_SM = "papyrus.trace.implementation.sm";
+
+
+ /**
+ * Options for trace implementation via state machines
+ */
+ public static final String P_TRACE_OPTION_CLASS = "papyrus.trace.option.class";
+
+ /**
+ * Options for trace implementation for operations
+ */
+ public static final String P_TRACE_OPTION_STATE = "papyrus.trace.option.state";
+
+ /**
+ * Options for trace implementation via state machines
+ */
+ public static final String P_TRACE_OPTION_OP = "papyrus.trace.option.op";
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferenceInitializer.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferenceInitializer.java
new file mode 100644
index 00000000000..096d661169d
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferenceInitializer.java
@@ -0,0 +1,53 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.papyrus.infra.services.tracepoints.Activator;
+import org.eclipse.papyrus.infra.services.tracepoints.ITraceMechanism;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceMechanism;
+
+/**
+ * Class used to initialize default preference values.
+ */
+public class TPPreferenceInitializer extends AbstractPreferenceInitializer {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+ */
+ public void initializeDefaultPreferences() {
+ IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+ EList<ITraceMechanism> mechanisms = TraceMechanism.getTraceMechanisms();
+ String mechanismID = "";
+ if(mechanisms.size() > 0) {
+ ITraceMechanism mechanism = mechanisms.get(0);
+ // TODO: function need to support null object
+ EList<String> mechanismIDs = mechanism.getTraceMechanismIDs(null);
+ if(mechanismIDs.size() > 0) {
+ mechanismID = mechanismIDs.get(0);
+ }
+ }
+ store.setDefault(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_PORT, mechanismID);
+ store.setDefault(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_OP, mechanismID);
+ store.setDefault(TPPreferenceConstants.P_TRACE_IMPLEMENTATION_SM, mechanismID);
+
+ store.setDefault(TPPreferenceConstants.P_TRACE_OPTION_CLASS, 3);
+ store.setDefault(TPPreferenceConstants.P_TRACE_OPTION_STATE, 0);
+ store.setDefault(TPPreferenceConstants.P_TRACE_OPTION_OP, 0);
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferencePage.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferencePage.java
new file mode 100644
index 00000000000..773c30a6ee1
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/src/org/eclipse/papyrus/infra/services/tracepoints/preferences/TPPreferencePage.java
@@ -0,0 +1,106 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.infra.services.tracepoints.preferences;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.preference.ComboFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.RadioGroupFieldEditor;
+import org.eclipse.papyrus.infra.services.tracepoints.Activator;
+import org.eclipse.papyrus.infra.services.tracepoints.ITraceMechanism;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TAClass;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TAOperation;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TAState;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceMechanism;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * This class represents the TracePoint preference page
+ * <p>
+ * This page is used to modify preferences only. They are stored in the preference store that belongs to the main plug-in class. That way, preferences
+ * can be accessed directly via the preference store.
+ */
+
+public class TPPreferencePage
+ extends FieldEditorPreferencePage
+ implements IWorkbenchPreferencePage {
+
+ public TPPreferencePage() {
+ super(GRID);
+ setPreferenceStore(Activator.getDefault().getPreferenceStore());
+ setDescription("Trace options");
+ }
+
+ /**
+ * Creates the field editors. Field editors are abstractions of
+ * the common GUI blocks needed to manipulate various types
+ * of preferences. Each field editor knows how to save and
+ * restore itself.
+ */
+ public void createFieldEditors() {
+ EList<ITraceMechanism> mechanisms = TraceMechanism.getTraceMechanisms();
+ int elements = 0;
+ for(ITraceMechanism mechanism : mechanisms) {
+ // TODO: function need to support null object
+ EList<String> mechanismIDs = mechanism.getTraceMechanismIDs(null);
+ elements += mechanismIDs.size();
+ }
+ String[][] mechList = new String[elements][2];
+ elements = 0;
+ for(ITraceMechanism mechanism : mechanisms) {
+ // TODO: function need to support null object
+ EList<String> mechanismIDs = mechanism.getTraceMechanismIDs(null);
+ for(String id : mechanismIDs) {
+ mechList[elements][1] = id;
+ mechList[elements][0] = mechanism.getTraceMechanismDescription(null, id);
+ elements++;
+ }
+ }
+
+ String[][] taClassOptions = TraceActions.getStringFields(TAClass.values());
+ String[][] taStateOptions = TraceActions.getStringFields(TAState.values());
+ String[][] taOperationOptions = TraceActions.getStringFields(TAOperation.values());
+
+ addField(new BinaryEncodedMChoiceFieldEditor(TPPreferenceConstants.P_TRACE_OPTION_CLASS, "Class options", 3, taClassOptions, getFieldEditorParent(), true));
+
+ addField(new BinaryEncodedMChoiceFieldEditor(TPPreferenceConstants.P_TRACE_OPTION_STATE, "State options", 3, taStateOptions, getFieldEditorParent(), true));
+
+ addField(new RadioGroupFieldEditor(
+ TPPreferenceConstants.P_TRACE_OPTION_OP,
+ "Operations options", 3, taOperationOptions, getFieldEditorParent(), true));
+
+ addField(new ComboFieldEditor(
+ TPPreferenceConstants.P_TRACE_IMPLEMENTATION_PORT,
+ "Trace Mechanism for ports", mechList, getFieldEditorParent()));
+
+ addField(new ComboFieldEditor(
+ TPPreferenceConstants.P_TRACE_IMPLEMENTATION_OP,
+ "Trace Mechanism for operations (+construction/destruction)", mechList, getFieldEditorParent()));
+
+ addField(new ComboFieldEditor(
+ TPPreferenceConstants.P_TRACE_IMPLEMENTATION_SM,
+ "Trace Mechanism for state machines", mechList, getFieldEditorParent()));
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+ */
+ public void init(IWorkbench workbench) {
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.project b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.project
new file mode 100644
index 00000000000..7de3375ec19
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.modellibs.tracing</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.acceleo.ide.ui.acceleoBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.acceleo.ide.ui.acceleoNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..796cbadf16f
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.modellibs.tracing;singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.modellibs.tracing.Activator
+Bundle-Vendor: %providerName
+Require-Bundle: org.eclipse.papyrus.fcm.profile;bundle-version="0.9.2",
+ org.eclipse.papyrus.qompass.modellibs.core;bundle-version="0.9.2",
+ org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.qompass.designer.core;bundle-version="0.9.2",
+ org.eclipse.papyrus.infra.services.tracepoints;bundle-version="0.9.2",
+ org.eclipse.papyrus.infra.core;bundle-version="0.9.2",
+ org.eclipse.emf.workspace;bundle-version="1.5.0",
+ org.eclipse.uml2.uml;bundle-version="4.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
+Bundle-Localization: plugin
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/about.html b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/build.acceleo b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/build.acceleo
new file mode 100644
index 00000000000..67c8b63b209
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/build.acceleo
@@ -0,0 +1,26 @@
+<!-- ===================================================================== -->
+<!-- Custom targets. -->
+<!-- Set customBuildCallbacks = build.acceleo in your build.properties. -->
+<!-- ===================================================================== -->
+<project name="Build Acceleo Module" default="noDefault">
+ <!-- ================================================================= -->
+ <!-- Default target -->
+ <!-- ================================================================= -->
+ <target name="noDefault">
+ <echo message="This file must be called with explicit targets" />
+ </target>
+
+ <!-- ================================================================= -->
+ <!-- This will be called automatically after the compilation of each -->
+ <!-- Bundle... in dependency order. -->
+ <!-- ================================================================= -->
+ <target name="post.compile.@dot">
+ <acceleoCompiler
+ sourceFolder="${target.folder}"
+ outputFolder="${target.folder}"
+ dependencies="${target.folder}/../../org.eclipse.papyrus.fcm.profile;${target.folder}/../../org.eclipse.uml2.uml;${target.folder}/../../org.eclipse.papyrus.qompass.modellibs.core;${target.folder}/../../org.eclipse.papyrus.qompass.designer.core;${target.folder}/../../org.eclipse.papyrus.qompass.designer.vsl;${target.folder}/../../org.eclipse.papyrus.marte.vsl;${target.folder}/../../org.eclipse.papyrus.cpp.profile;${target.folder}/../../org.eclipse.papyrus.infra.services.tracepoints;"
+ binaryResource="false"
+ packagesToRegister="">
+ </acceleoCompiler>
+ </target>
+</project>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/build.properties b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/build.properties
new file mode 100644
index 00000000000..2ff04c5cff9
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/build.properties
@@ -0,0 +1,13 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ models/,\
+ build.properties,\
+ help/,\
+ html/,\
+ about.html,\
+ plugin.properties
+customBuildCallbacks = build.acceleo
+src.includes = about.html
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/help/tocconcepts.xml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/help/tocconcepts.xml
new file mode 100644
index 00000000000..0344ca208f3
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/help/tocconcepts.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Concepts" link_to="../org.eclipse.papyrus.qompass.designer.doc/toc.xml#modellibs">
+ <topic label="Qompass trace support" href="html/userguide.htm">
+ </topic>
+</toc>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image001.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image001.gif
new file mode 100755
index 00000000000..5271b605b82
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image001.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image002.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image002.gif
new file mode 100755
index 00000000000..d82c319e550
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image002.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image003.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image003.gif
new file mode 100755
index 00000000000..fae2ca8952f
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image003.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image004.jpg b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image004.jpg
new file mode 100755
index 00000000000..864120f480a
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image004.jpg
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image005.jpg b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image005.jpg
new file mode 100755
index 00000000000..9c9d1935d00
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image005.jpg
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image006.jpg b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image006.jpg
new file mode 100755
index 00000000000..d732917a0fc
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image006.jpg
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image007.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image007.gif
new file mode 100755
index 00000000000..2a26c4ddaa7
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image007.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image008.jpg b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image008.jpg
new file mode 100755
index 00000000000..a332638c7e5
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image008.jpg
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image009.jpg b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image009.jpg
new file mode 100755
index 00000000000..bb1eed8a3b3
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/images/image009.jpg
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/userguide.htm b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/userguide.htm
new file mode 100644
index 00000000000..b2f52da6ea1
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/html/userguide.htm
@@ -0,0 +1,213 @@
+<html>
+<head>
+<title>Model-Based Tracing of UML models in Papyrus</title>
+</head>
+<body>
+<h1>Model-Based Tracing of UML models in Papyrus</h1>
+<p></p>
+<div class=WordSection3>
+<h1>1. Introduction</h1>
+<p>
+The Papyrus Trace Framework allows
+annotating UML model elements with a trace annotation. Different kind of model
+elements can be annotated, such as operations or ports. These annotations are
+shown by means of a decoration icon. When the code of the application is
+generated, the trace declaration must lead to an instrumentation of the
+generated code for a specific trace implementation, in our case primarily
+LTTng.</p>
+<h1>2. Annotating Model elements</h1>
+<p >Several model elements can be annotated
+with trace information. In the sequel, we list these and outline the different
+trace options.</p>
+<p >1. Class/component itself. When a class is annotated, by default its
+creation and destruction is traced. In addition, a class has several features
+(such as operations and attributes). These can be traced without having to
+place a tracepoint on the feature itself. The user can choose whether he wants
+to trace in addition all attributes, all operations or all states. This choice
+is available in the tracing context menu, after the tracepoint has been
+applied.</p>
+<p>2. Port of a component</p>
+<p>
+If a port of a component is traced, an interceptor is placed within the components container. The
+interceptor traces the operations that are associated with a port. For
+instance, a data-flow port is associated with push or pull operations that take
+the concerned data type as parameter.</p>
+<p align=center ><img
+width=216 height=101 id="Objet 1"
+src="images/image001.gif"></p>
+<p >3. Operation of a class</p>
+<p >A tracepoint may
+be placed on an operation of a class. This means that an interceptor (on class
+level) will create a trace event before and/or after the operation has been
+called. In addition, there is the option to add the operation name and the
+model reference into the trace point, or ' in addition ' all of the operations
+parameters. If the trace event is produced before the application invocation,
+out parameters and return values are not part of the trace event.</p>
+<p align=center ><img
+width=137 height=106 id="Objet 2"
+src="images/image002.gif"></p>
+<p >4. Property of a class</p>
+<p >Properties
+(attributes) of a class can be traced, if the attribute's type is itself a
+class. In this case, the tracepoint is interpreted as a trace on the instance.
+It implies activating tracing on the attributes type, but restricting the
+production of a trace to the role (instance) that the type plays within the class
+declaring the attribute. This mechanism can be realized within the framework,
+but is not implemented at the moment.</p>
+<p >5.
+Trace
+an instance specification</p>
+<p >Putting a trace
+point on an instance specification is quite similar to putting a trace point to
+an attribute: the classifier referenced by the instance specification will have
+trace support but actual tracing is restricted to concrete instance. Not implemented (planned for 2013)</p>
+<p ><img width=185 height=61
+id="Objet 4" src="images/image003.gif"></p>
+<p >6.
+State
+(within a statechart)</p>
+<p >If a class defines a state-chart, the
+states can be annotated with a trace marker. A trace event is produced, if the
+state is entered and/or left (configurable via option). Not implemented
+(planned for 2013)</p>
+<p >7.
+Transition:
+A transition can be annotated. A trace event is produced, when the transition
+is fired. </p>
+<p ><img width=290 height=85
+id="Image 10" src="images/image004.jpg"></p>
+<p ></p>
+<h1 >Code produced for a trace
+annotation</h1>
+<h2>2.1
+Trace declaration</h2>
+<p >In LTTng, a trace events need to have a
+declaration. We distinguish events that have a generic declaration and those
+requiring a specific declaration. For instance, a call event for an operation
+has a generic declaration, if parameters are not included: all that is needed
+is the operation name (or identifier). Although we could always use a generic
+declaration with the operation name as parameter, we declare the name (and URI
+reference) in the events declaration, i.e. in its meta-data. Thus, an event
+instance does not include the model URI and is therefore quite lcompact on the
+expense of a potentially large number of different events.</p>
+<p >In general, the event declaration includes
+a model reference, e.g. ref. to port or operation and event data. In case of an
+operation call, the event data corresponds to the values of parameter and an
+identification of the associated instance. The following code fragment shows,
+how a tracepoint is declared in case of a port interception. Here, the port 'p',
+typed with interface ICompute is traced, these are the actual of a package
+template with the two formal parameters interface and port.</p>
+<p >We use a canonical name for the event type
+which is composed of the model name, the name of a package template and the
+actual variables for the template. In our example, the model is called
+ClientServerTraceTest, the package methodCall_port_ICompute_p (the underlying package
+template is called methodCall_port, the actual for the two formals Interface
+and port are 'ICompute' and 'p', respectively). The second parameter for the
+event declaration is the elements name, e.g. the operation name ('add' in the
+example) in case of a traced operation.</p>
+<div >
+<p >TRACEPOINT_EVENT(ClientServerTraceTest_methodCall_port_ICompute_p,
+add,</p>
+<p >
+TP_ARGS(const char *, instanceName, int, a, int, b),</p>
+<p >
+TP_FIELDS(</p>
+<p >
+ctf_string(instanceName, instanceName)</p>
+<p >
+ctf_integer(int, a, a)</p>
+<p >
+ctf_integer(int, b, b)</p>
+<p > )</p>
+<p >)</p>
+<p >TRACEPOINT_MODEL_EMF_URI(ClientServerTraceTest_methodCall_port_ICompute_p,
+add, &quot;platform:/resource/org.eclipse.papyrus.qompass.designer.examples/model/ClientServerTraceTest.uml#_4KiE8DLbEd2qeKRLMdIx_A&quot;)</p>
+</div>
+<p ></p>
+<p >For each trace event, the added
+instrumentation code with invoke the tracepoint, in case of the example above
+by</p>
+<div >
+<p >tracepoint(ClientServerTraceTest_methodCall_port_ICompute_p, add, <span
+style='color:#0000C0'>instanceName, a, b);</p>
+</div>
+<p >Note that instanceName is an attribute of the interception
+class, i.e. not a fixed string, a and b are the actual parameters of an
+operation.</p>
+<h1>3. Example</h1>
+<p >This section demonstrates the use of the trace
+mechanism by means of a very simple application, called client/server trace
+test. The model is available via the 'new example' menu. Select the example
+from the 'Qompass examples' folder. </p>
+<p align=center ><img width=567 height=314 id="Image 15"
+src="images/image005.jpg" alt=trace4.png></p>
+<p align=center ><a
+name="_Ref343641256">Figure </a>1: Tracepoint on operation, shown in model
+explorer, diagram and trace view</p>
+<p >Figure 1 shows a
+small test application. A tracepoint is placed on an operation testOp. The
+tracepoint is also visible in the tracepoint view (first selected entry) and in
+the model explorer and the left. The tracepoint view is an additional view that
+can be shown via the Eclipse standard 'show view' dialog, appearing in the
+Papyrus category.</p>
+<p ></p>
+<p ></p>
+<p align=center ><img width=593 height=71 id="Image 9"
+src="images/image006.jpg" alt=trace9.png></p>
+<p align=center ><a
+name="_Ref343721358">Figure </a>2: Set trace points via context menu</p>
+<p >Figure 2 shows a
+part of the context menu of a model element in the model explorer or a diagram.
+It contains a sub-menu called 'Tracing' that contains trace related functions.
+In particular, it is possible to toggle a tracepoint, i.e. add or remove a
+tracepoint. A tracepoint can be active or inactive. While the instrumentation
+is always added, i.e. also when the tracepoint is inactive, trace events should
+only be produced for an active tracepoint. This sould be done via the LTTng
+runtime control mechanisms.</p>
+<p ></p>
+<p ><img width=590 height=342
+id="Image 13" src="images/image007.gif"
+alt=trace8.png></p>
+<p align=center ><a
+name="_Ref343721365">Figure </a>4: Preference dialog for tracing</p>
+<p >Figure 4 shows the
+preference dialog for tracing within the Papyrus category. The dialog captures
+the different options how a tracepoint of a class, a state and on an operation
+should be interpreted, e.g. whether an operation is be trace with or without
+parameter values.</p>
+<p >In addition to these options, the
+instrumentation has a modular realization mechanism and the default
+implementation among available implementations can be chosen. The Qompass model
+library contains for instance not only an LTTng based trace implementation, but
+also one based on OTF (open trace format).</p>
+<p ></p>
+<p ></p>
+<p align=center ><b><img width=609 height=263 id="Image 16"
+src="images/image008.jpg"
+alt=trace7-events.png></b></p>
+<p align=center ><a
+name="_Ref343723153">Figure </a>5: Trace event view via TMF</p>
+<p >Once the tracepoints are set, an
+application can be compiled and executed. Currently, the runtime trace options
+must be set manually (e.g. enable all events). The generated trace can be
+imported by means of the TMF (trace monitoring framework) which is part of the
+LTTng linux-tools. Figure 5
+shows the event view of this framework (note that the view will be replaced by
+an editor from version 2.0 on) displaying the trace of the client/server trace
+test model. The screenshot shows the event timestamp, type and content. It
+depicts that the type corresponds to a qualified name in the model element and
+that the contents contains parameter values.</p>
+<p align=center ><b></b></p>
+<p align=center ><b><img width=609 height=280 id="Image 17"
+src="images/image009.jpg"
+alt=trace5-events-filtered.png></b></p>
+<p align=center ><a
+name="_Ref343723478">Figure </a>6: Trace event view, filtered (only 'testOp'
+is shown)</p>
+<p >In Figure 6, the event view has been restricted
+to the operation 'testOp' by means of a context operation of an element in the
+model explorer or diagram. In this case, only events for the operation testOp
+are shown.</p>
+</div>
+</body>
+</html>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.di b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.di
new file mode 100644
index 00000000000..3e57bb9a61b
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.di
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmlns:history="http://www.eclipse.org/papyrus/0.7.0/controlmode">
+ <di:SashWindowsMngr>
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_XSHWMF36Ed-UvNEDwY5GNg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_wOG5sF36Ed-UvNEDwY5GNg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_aeSh0F37Ed-UvNEDwY5GNg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_q-Wa0F37Ed-UvNEDwY5GNg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_6FvnwGONEd-seu3qyZgHfg"/>
+ </availablePage>
+ <availablePage/>
+ <availablePage/>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_HoscYMniEeCMCo5Ox2CNmg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_rbZ3IDeFEeGPyrZ5I3hMlA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_Rk2pgDVlEeKoYLVLZgpRiw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_57mwQDclEeKAhIrFXfR8zQ"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="/0/@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_XSHWMF36Ed-UvNEDwY5GNg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_wOG5sF36Ed-UvNEDwY5GNg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_aeSh0F37Ed-UvNEDwY5GNg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_q-Wa0F37Ed-UvNEDwY5GNg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_6FvnwGONEd-seu3qyZgHfg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_HoscYMniEeCMCo5Ox2CNmg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_rbZ3IDeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_Rk2pgDVlEeKoYLVLZgpRiw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ClientServerTraceTest.notation#_57mwQDclEeKAhIrFXfR8zQ"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+ </di:SashWindowsMngr>
+ <history:ControledResource/>
+ <history:ControledResource/>
+ <history:ControledResource/>
+ <history:ControledResource/>
+ <history:ControledResource/>
+ <history:ControledResource/>
+ <history:ControledResource/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation
new file mode 100644
index 00000000000..50b938b975e
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation
@@ -0,0 +1,1315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_XSHWMF36Ed-UvNEDwY5GNg" type="PapyrusUMLClassDiagram" name="Interfaces" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Pj6oUDeEEeGPyrZ5I3hMlA" type="2004" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Pj6oUjeEEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pj7PYDeEEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Pj7PYTeEEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pj7PYjeEEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Pj7PYzeEEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pj7PZDeEEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Pj7PZTeEEeGPyrZ5I3hMlA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Pj7PZjeEEeGPyrZ5I3hMlA" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Pj7PZzeEEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Pj7PaDeEEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Pj7PaTeEEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Pj7PajeEEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Pj7PazeEEeGPyrZ5I3hMlA" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_R8Rm0DeEEeGPyrZ5I3hMlA" type="3007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1B21kCwNEeK0G9oarbCn5Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1I5RsCwNEeK0G9oarbCn5Q" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_DGs6wDLgEd28fJKJJnUaeQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R8Rm0TeEEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_R8SN4DeEEeGPyrZ5I3hMlA" type="3007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2ZBc0CwNEeK0G9oarbCn5Q" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2dz2MCwNEeK0G9oarbCn5Q" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_L8EY8DLgEd28fJKJJnUaeQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_R8SN4TeEEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rsWQcDVdEeKoYLVLZgpRiw" type="3007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8MrPMDVdEeKoYLVLZgpRiw" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8ftf8DVdEeKoYLVLZgpRiw" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_rrbqcDVdEeKoYLVLZgpRiw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_rsWQcTVdEeKoYLVLZgpRiw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6E33wDW2EeKyT6LlKoWJIA" type="3007" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JvVlgDW3EeKyT6LlKoWJIA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J0pjUDW3EeKyT6LlKoWJIA" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_6DewoDW2EeKyT6LlKoWJIA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6E33wTW2EeKyT6LlKoWJIA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Pj7PbDeEEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Pj7PbTeEEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Pj7PbjeEEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Pj7PbzeEEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Pj7PcDeEEeGPyrZ5I3hMlA" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Pj7PcTeEEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Pj7PcjeEEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Pj7PczeEEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Pj7PdDeEEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="ClientServerTraceTest.uml#_cn-H0DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Pj6oUTeEEeGPyrZ5I3hMlA" x="108" y="81" width="321"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TP_4gDeEEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TQAfkDeEEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TQAfkTeEEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TQAfkjeEEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TQAfkzeEEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TQAflDeEEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TQAflTeEEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TQAfljeEEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_TDDBoDeEEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TP_4gTeEEeGPyrZ5I3hMlA" x="513" y="108" width="203"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ktdOQDW2EeKyT6LlKoWJIA" type="2010" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ktd1UDW2EeKyT6LlKoWJIA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ktd1UTW2EeKyT6LlKoWJIA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ktd1UjW2EeKyT6LlKoWJIA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ktd1UzW2EeKyT6LlKoWJIA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ktd1VDW2EeKyT6LlKoWJIA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ktd1VTW2EeKyT6LlKoWJIA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ktd1VjW2EeKyT6LlKoWJIA" type="5035"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ktd1VzW2EeKyT6LlKoWJIA" type="7020">
+ <children xmi:type="notation:Shape" xmi:id="_m0rZcDW2EeKyT6LlKoWJIA" type="3018" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="ClientServerTraceTest.uml#_m0WCQDW2EeKyT6LlKoWJIA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_m0rZcTW2EeKyT6LlKoWJIA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yJR6MDW2EeKyT6LlKoWJIA" type="3018" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="ClientServerTraceTest.uml#_yJIJMDW2EeKyT6LlKoWJIA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_yJR6MTW2EeKyT6LlKoWJIA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ktd1WDW2EeKyT6LlKoWJIA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ktd1WTW2EeKyT6LlKoWJIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ktd1WjW2EeKyT6LlKoWJIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ktd1WzW2EeKyT6LlKoWJIA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ktecYDW2EeKyT6LlKoWJIA" visible="false" type="7021">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ktecYTW2EeKyT6LlKoWJIA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ktecYjW2EeKyT6LlKoWJIA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ktecYzW2EeKyT6LlKoWJIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ktecZDW2EeKyT6LlKoWJIA"/>
+ </children>
+ <element xmi:type="uml:DataType" href="ClientServerTraceTest.uml#_krMkcDW2EeKyT6LlKoWJIA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ktdOQTW2EeKyT6LlKoWJIA" x="121" y="262" width="141" height="90"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_XSHWMV36Ed-UvNEDwY5GNg"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_Tp4n8DLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Y-hhkDeEEeGPyrZ5I3hMlA" type="4013" source="_TP_4gDeEEeGPyrZ5I3hMlA" target="_Pj6oUDeEEeGPyrZ5I3hMlA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Y-hhkTeEEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Y-hhkjeEEeGPyrZ5I3hMlA" points="[-29, -1, 113, 0]$[-113, -1, 29, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y_9sADeEEeGPyrZ5I3hMlA" id="(0.14285714285714285,0.5166666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Y_9sATeEEeGPyrZ5I3hMlA" id="(0.9096573208722741,0.5377358490566038)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_wOG5sF36Ed-UvNEDwY5GNg" type="CompositeStructure" name="CompositeDiagram Client" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_xxFIUF36Ed-UvNEDwY5GNg" type="2073" fontName="Sans Serif" fontHeight="10" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_edFmkDeFEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_edFmkTeFEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1lbhAJTfEd-BZ5b36VI4Tw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5uoqAMxjEeGQGKJyDfz9-Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5uoqAcxjEeGQGKJyDfz9-Q" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5upREMxjEeGQGKJyDfz9-Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5upREcxjEeGQGKJyDfz9-Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5upREsxjEeGQGKJyDfz9-Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xxFvYF36Ed-UvNEDwY5GNg" type="5156">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ccTakDeFEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ccTakTeFEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xxFvYV36Ed-UvNEDwY5GNg" type="7073" collapsed="true">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xxFvYl36Ed-UvNEDwY5GNg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ozsDcDeEEeGPyrZ5I3hMlA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ozsDcjeEEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ozsqgDeEEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ozsqgTeEEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ozsqgjeEEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ozsqgzeEEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ozsqhDeEEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_q5EVUDrWEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rUXKMDrWEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rUXKMTrWEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rUXKMjrWEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rUXKMzrWEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rUXKNDrWEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ozsqhTeEEeGPyrZ5I3hMlA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ozsqhjeEEeGPyrZ5I3hMlA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ozsqhzeEEeGPyrZ5I3hMlA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ozsqiDeEEeGPyrZ5I3hMlA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ozsDcTeEEeGPyrZ5I3hMlA" x="-10" y="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2HCY4EwJEeGN3tuNIuGSAw" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2HC_8EwJEeGN3tuNIuGSAw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2HC_8UwJEeGN3tuNIuGSAw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2HDnAEwJEeGN3tuNIuGSAw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2HDnAUwJEeGN3tuNIuGSAw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2HDnAkwJEeGN3tuNIuGSAw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2HDnA0wJEeGN3tuNIuGSAw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4u-EcEwJEeGN3tuNIuGSAw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5Z1mYEwJEeGN3tuNIuGSAw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5Z1mYUwJEeGN3tuNIuGSAw" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5Z1mYkwJEeGN3tuNIuGSAw" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5Z2NcEwJEeGN3tuNIuGSAw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5Z2NcUwJEeGN3tuNIuGSAw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2HDnBEwJEeGN3tuNIuGSAw" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2HDnBUwJEeGN3tuNIuGSAw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2HDnBkwJEeGN3tuNIuGSAw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_2HDnB0wJEeGN3tuNIuGSAw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ClientServerTraceTest.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2HCY4UwJEeGN3tuNIuGSAw" x="162" y="54"/>
+ </children>
+ <element xmi:type="uml:Class" href="ClientServerTraceTest.uml#_IfjoETLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xxFIUV36Ed-UvNEDwY5GNg" x="117" y="171" width="172" height="89"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lvTlsAOUEeCBk5-airPjFw" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lvVa4AOUEeCBk5-airPjFw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lvVa4QOUEeCBk5-airPjFw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lvWB8AOUEeCBk5-airPjFw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lvWB8QOUEeCBk5-airPjFw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lvWB8gOUEeCBk5-airPjFw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lvWB8wOUEeCBk5-airPjFw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lvWB9AOUEeCBk5-airPjFw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lvWpAAOUEeCBk5-airPjFw" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lvWpAQOUEeCBk5-airPjFw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lu8gEDeEEeGPyrZ5I3hMlA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lu9HIDeEEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lu9HITeEEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lu9HIjeEEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lu9HIzeEEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lu9HJDeEEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lu9HJTeEEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mcgqcDrWEeGMCcwsbpLuFA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m2G2MDrWEeGMCcwsbpLuFA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m2G2MTrWEeGMCcwsbpLuFA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m2G2MjrWEeGMCcwsbpLuFA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m2HdQDrWEeGMCcwsbpLuFA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m2HdQTrWEeGMCcwsbpLuFA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lu9HJjeEEeGPyrZ5I3hMlA" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lu9HJzeEEeGPyrZ5I3hMlA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lu9uMDeEEeGPyrZ5I3hMlA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lu9uMTeEEeGPyrZ5I3hMlA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lu8gETeEEeGPyrZ5I3hMlA" x="-10" y="27"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lvTlsQOUEeCBk5-airPjFw" x="117" y="36" width="172" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_b6dHMDeEEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b6duQDeEEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b6duQTeEEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b6duQjeEEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b6duQzeEEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_b6duRDeEEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_b6duRTeEEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_b6eVUDeEEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_b5cakDeEEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b6dHMTeEEeGPyrZ5I3hMlA" x="342" y="81" width="332" height="76"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_wOG5sV36Ed-UvNEDwY5GNg"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_etOZkDLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_lwdcQAOUEeCBk5-airPjFw" type="4015" source="_xxFIUF36Ed-UvNEDwY5GNg" target="_lvTlsAOUEeCBk5-airPjFw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_lwfRcAOUEeCBk5-airPjFw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_lwfRcQOUEeCBk5-airPjFw" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lwdcQQOUEeCBk5-airPjFw" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="ClientServerTraceTest.uml#_34FjAPx3Ed6O2oOTPfeAMA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lwdcQgOUEeCBk5-airPjFw" points="[-46, -44, 166, 165]$[-212, -209, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_p9prkD1rEeGCbZXfrLvxhQ" id="(0.5290697674418605,0.0)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_k5vWYDeEEeGPyrZ5I3hMlA" type="4002" source="_b6dHMDeEEeGPyrZ5I3hMlA" target="_lwdcQAOUEeCBk5-airPjFw" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_k5vWYTeEEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_k5vWYjeEEeGPyrZ5I3hMlA" points="[-14, 0, 164, -11]$[-178, 11, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k6dvIDeEEeGPyrZ5I3hMlA" id="(0.017948717948717947,0.4666666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k6dvITeEEeGPyrZ5I3hMlA" id="(0.4883720930232558,0.22321428571428573)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_aeSh0F37Ed-UvNEDwY5GNg" type="CompositeStructure" name="CompositeDiagram Server" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_c2tKsF37Ed-UvNEDwY5GNg" type="2073" fontName="Monospace" fontHeight="10" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MXrr0H8eEd-5xfPoaTlRww" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MXsS4H8eEd-5xfPoaTlRww" key="QualifiedNameDepth" value="1"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NqCEgH8eEd-5xfPoaTlRww" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NqCEgX8eEd-5xfPoaTlRww" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iDIMAGXtEd-6i7-LHPxExw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X6rnUDVeEeKoYLVLZgpRiw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X6rnUTVeEeKoYLVLZgpRiw" key="StereotypeList" value=",FCM::RuleApplication"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X6sOYDVeEeKoYLVLZgpRiw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X6sOYTVeEeKoYLVLZgpRiw" key="PropStereoDisplay" value="FCM::RuleApplication.containerRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X6sOYjVeEeKoYLVLZgpRiw" key="StereotypePropertyLocation" value="With brace"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_c2tKsl37Ed-UvNEDwY5GNg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_c2tKs137Ed-UvNEDwY5GNg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c2tKtF37Ed-UvNEDwY5GNg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FzA74GfbEd-T-rJ3Ep9Y5Q" type="3069" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FzSosGfbEd-T-rJ3Ep9Y5Q" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FzTPwGfbEd-T-rJ3Ep9Y5Q" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FzTPwWfbEd-T-rJ3Ep9Y5Q" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FzT20GfbEd-T-rJ3Ep9Y5Q" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FzT20WfbEd-T-rJ3Ep9Y5Q" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FzT20mfbEd-T-rJ3Ep9Y5Q" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M08tkGfbEd-T-rJ3Ep9Y5Q" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0TObQDrZEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0TObQTrZEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0TObQjrZEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0TObQzrZEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0TObRDrZEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FzUd4GfbEd-T-rJ3Ep9Y5Q" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FzUd4WfbEd-T-rJ3Ep9Y5Q" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FzUd4mfbEd-T-rJ3Ep9Y5Q" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FzUd42fbEd-T-rJ3Ep9Y5Q" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ClientServerTraceTest.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FzA74WfbEd-T-rJ3Ep9Y5Q" x="-10" y="106"/>
+ </children>
+ <element xmi:type="uml:Class" href="ClientServerTraceTest.uml#_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_c2tKsV37Ed-UvNEDwY5GNg" x="134" y="74" width="353" height="269"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_aeSh0V37Ed-UvNEDwY5GNg"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_OGM88DLaEd2qeKRLMdIx_A"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_q-Wa0F37Ed-UvNEDwY5GNg" type="CompositeStructure" name="CompositeDiagram System" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_sGaPEF37Ed-UvNEDwY5GNg" type="2073" fontName="Sans Serif" fontHeight="10" transparency="0" gradient="8047085, 0, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6B6WUGSuEd-dQdK1-7wIFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6B69YGSuEd-dQdK1-7wIFg" key="QualifiedNameDepth" value="3"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_62o-4GSuEd-dQdK1-7wIFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_62o-4WSuEd-dQdK1-7wIFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_38uLcGSuEd-dQdK1-7wIFg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5vj3EMxjEeGQGKJyDfz9-Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5vkeIMxjEeGQGKJyDfz9-Q" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5vkeIcxjEeGQGKJyDfz9-Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5vkeIsxjEeGQGKJyDfz9-Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5vkeI8xjEeGQGKJyDfz9-Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sGa2IF37Ed-UvNEDwY5GNg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sGa2IV37Ed-UvNEDwY5GNg" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_uegu4F37Ed-UvNEDwY5GNg" type="3070" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fGdKUF38Ed-UvNEDwY5GNg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fGdKUV38Ed-UvNEDwY5GNg" key="QualifiedNameDepth" value="4"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uegu4l37Ed-UvNEDwY5GNg" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uehV8F37Ed-UvNEDwY5GNg" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uehV8V37Ed-UvNEDwY5GNg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TLHfQAcCEeGnrLqQ0OQeAg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TLJUcAcCEeGnrLqQ0OQeAg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TLJUcQcCEeGnrLqQ0OQeAg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TLJUcgcCEeGnrLqQ0OQeAg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TLJUcwcCEeGnrLqQ0OQeAg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TLJ7gAcCEeGnrLqQ0OQeAg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TLJ7gQcCEeGnrLqQ0OQeAg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1aRi4DrZEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1sVjQDrZEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1sVjQTrZEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1sVjQjrZEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1sVjQzrZEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1sVjRDrZEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TLJ7ggcCEeGnrLqQ0OQeAg" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TLJ7gwcCEeGnrLqQ0OQeAg" x="25" y="-6"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TLKikAcCEeGnrLqQ0OQeAg" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TLKikQcCEeGnrLqQ0OQeAg" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TLHfQQcCEeGnrLqQ0OQeAg" x="-10" y="51"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_RUoqEDrcEeGgAdAmWw4pyQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RUpRIDrcEeGgAdAmWw4pyQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RUpRITrcEeGgAdAmWw4pyQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RUpRIjrcEeGgAdAmWw4pyQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RUpRIzrcEeGgAdAmWw4pyQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RUpRJDrcEeGgAdAmWw4pyQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RUpRJTrcEeGgAdAmWw4pyQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_T-OigDrcEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UWrewDrcEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UWrewTrcEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UWrewjrcEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UWrewzrcEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UWsF0DrcEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RUpRJjrcEeGgAdAmWw4pyQ" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RUpRJzrcEeGgAdAmWw4pyQ" x="-111" y="16"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_RUpRKDrcEeGgAdAmWw4pyQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_RUpRKTrcEeGgAdAmWw4pyQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ClientServerTraceTest.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RUoqETrcEeGgAdAmWw4pyQ" x="152" y="54"/>
+ </children>
+ <element xmi:type="uml:Property" href="ClientServerTraceTest.uml#_i-I7gDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uegu4V37Ed-UvNEDwY5GNg" x="35" y="17" width="162" height="112"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_vHCHcF37Ed-UvNEDwY5GNg" type="3070" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_haY70F38Ed-UvNEDwY5GNg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_haY70V38Ed-UvNEDwY5GNg" key="QualifiedNameDepth" value="4"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_vHCHcl37Ed-UvNEDwY5GNg" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_vHCHc137Ed-UvNEDwY5GNg" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vHCHdF37Ed-UvNEDwY5GNg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SZhOgDrcEeGgAdAmWw4pyQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SZh1kDrcEeGgAdAmWw4pyQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SZh1kTrcEeGgAdAmWw4pyQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SZh1kjrcEeGgAdAmWw4pyQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SZh1kzrcEeGgAdAmWw4pyQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SZh1lDrcEeGgAdAmWw4pyQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SZh1lTrcEeGgAdAmWw4pyQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VXy9gDrcEeGgAdAmWw4pyQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VsgCMDrcEeGgAdAmWw4pyQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VsgCMTrcEeGgAdAmWw4pyQ" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VsgCMjrcEeGgAdAmWw4pyQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VsgCMzrcEeGgAdAmWw4pyQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VsgpQDrcEeGgAdAmWw4pyQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SZh1ljrcEeGgAdAmWw4pyQ" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SZh1lzrcEeGgAdAmWw4pyQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SZh1mDrcEeGgAdAmWw4pyQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_SZh1mTrcEeGgAdAmWw4pyQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ClientServerTraceTest.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SZhOgTrcEeGgAdAmWw4pyQ" x="-10" y="52"/>
+ </children>
+ <element xmi:type="uml:Property" href="ClientServerTraceTest.uml#_gV1cgDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vHCHcV37Ed-UvNEDwY5GNg" x="422" y="19" width="162" height="112"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sGa2Il37Ed-UvNEDwY5GNg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ClientServerTraceTest.uml#_bYJagDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sGaPEV37Ed-UvNEDwY5GNg" x="63" y="32" width="625" height="197"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_s51AIDeJEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s51nMDeJEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s51nMTeJEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s51nMjeJEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s51nMzeJEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s51nNDeJEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s51nNTeJEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_s51nNjeJEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_s5iFMDeJEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s51AITeJEeGPyrZ5I3hMlA" x="63" y="249" width="307" height="120"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Vcy4gDeKEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Vcy4gjeKEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vcy4gzeKEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Vcy4hDeKEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Vcy4hTeKEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VczfkDeKEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VczfkTeKEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VczfkjeKEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_Vcf9kDeKEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vcy4gTeKEeGPyrZ5I3hMlA" x="405" y="249" width="307"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_q-Wa0V37Ed-UvNEDwY5GNg"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_XLQjUDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_4lh80DeKEeGPyrZ5I3hMlA" type="4002" source="_s51AIDeJEeGPyrZ5I3hMlA" target="_sGaPEF37Ed-UvNEDwY5GNg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_4lh80TeKEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4lh80jeKEeGPyrZ5I3hMlA" points="[1, -4, -11, 27]$[3, -24, -9, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4mHLoDeKEeGPyrZ5I3hMlA" id="(0.6351791530944625,0.03333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4mHLoTeKEeGPyrZ5I3hMlA" id="(0.2896,0.9695431472081218)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_QRrXUE2rEeGl8qrc8BM7vA" type="4013" source="_RUoqEDrcEeGgAdAmWw4pyQ" target="_SZhOgDrcEeGgAdAmWw4pyQ" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VPgjQE2rEeGl8qrc8BM7vA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC0E2rEeGl8qrc8BM7vA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC0U2rEeGl8qrc8BM7vA" key="StereotypeList" value="FCM::Connector"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC0k2rEeGl8qrc8BM7vA" key="PropStereoDisplay" value="FCM::Connector.ic"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC002rEeGl8qrc8BM7vA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC1E2rEeGl8qrc8BM7vA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QRslcE2rEeGl8qrc8BM7vA" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QRslcU2rEeGl8qrc8BM7vA" x="6" y="-30"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QRslck2rEeGl8qrc8BM7vA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QRslc02rEeGl8qrc8BM7vA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QRsldE2rEeGl8qrc8BM7vA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QRsldU2rEeGl8qrc8BM7vA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_QRsldk2rEeGl8qrc8BM7vA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_QRsld02rEeGl8qrc8BM7vA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_QRrXUU2rEeGl8qrc8BM7vA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ClientServerTraceTest.uml#_QO2s0E2rEeGl8qrc8BM7vA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QRrXUk2rEeGl8qrc8BM7vA" points="[4, -1, -208, 0]$[209, -3, -3, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QR4ysE2rEeGl8qrc8BM7vA" id="(0.8,0.4)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QR4ysU2rEeGl8qrc8BM7vA" id="(0.15,0.35)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_SHmXIE2rEeGl8qrc8BM7vA" type="4002" source="_Vcy4gDeKEeGPyrZ5I3hMlA" target="_QRrXUE2rEeGl8qrc8BM7vA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_SHmXIU2rEeGl8qrc8BM7vA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SHmXIk2rEeGl8qrc8BM7vA" points="[8, -3, 11, 98]$[-69, -101, -66, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SHu6AE2rEeGl8qrc8BM7vA" id="(0.21498371335504887,0.025)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SHu6AU2rEeGl8qrc8BM7vA" id="(0.9137931034482759,0.4691358024691358)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_6FvnwGONEd-seu3qyZgHfg" type="PapyrusUMLClassDiagram" name="deployment plans" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_7Fso4GONEd-seu3qyZgHfg" type="2007" fontName="Sans Serif" fontHeight="10" transparency="0" gradient="8905185, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7FvFImONEd-seu3qyZgHfg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FvsMGONEd-seu3qyZgHfg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7FvsMWONEd-seu3qyZgHfg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7FvsMmONEd-seu3qyZgHfg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_30xTEGTfEd-rCOWJcspHOA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_30xTEWTfEd-rCOWJcspHOA" key="ShadowFigure_Value" value="true"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1FykUGTfEd-rCOWJcspHOA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zhoQADeIEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zhoQATeIEeGPyrZ5I3hMlA" key="StereotypeList" value="FCM::DeploymentPlan"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zhoQAjeIEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zhoQAzeIEeGPyrZ5I3hMlA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zhoQBDeIEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7FvsM2ONEd-seu3qyZgHfg" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7FvsNGONEd-seu3qyZgHfg" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FvsNWONEd-seu3qyZgHfg"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_7FtP8GONEd-seu3qyZgHfg"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_5Z7MEDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FtP8WONEd-seu3qyZgHfg" x="77" y="38"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7zJkwGONEd-seu3qyZgHfg" type="2007" fontName="Sans Serif" fontHeight="10" transparency="0" gradient="8047085, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7zKL0mONEd-seu3qyZgHfg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7zKL02ONEd-seu3qyZgHfg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7zKL1GONEd-seu3qyZgHfg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7zKL1WONEd-seu3qyZgHfg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5T0rAGTfEd-rCOWJcspHOA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5T0rAWTfEd-rCOWJcspHOA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0jgjwDeIEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jgjwTeIEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jgjwjeIEeGPyrZ5I3hMlA" key="StereotypeList" value="FCM::DeploymentPlan"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jhK0DeIEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jhK0TeIEeGPyrZ5I3hMlA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jhK0jeIEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7zKL1mONEd-seu3qyZgHfg" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7zKL12ONEd-seu3qyZgHfg" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7zKL2GONEd-seu3qyZgHfg"/>
+ </children>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_7zJkwWONEd-seu3qyZgHfg"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_bBSxQP_BEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7zJkwmONEd-seu3qyZgHfg" x="77" y="284"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_TooeIDeIEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TooeIjeIEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TooeIzeIEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TooeJDeIEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TooeJTeIEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TopFMDeIEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TopFMTeIEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_TopFMjeIEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_ToVjMDeIEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TooeITeIEeGPyrZ5I3hMlA" x="495" y="198" width="187"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_f33bIDeIEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f34CMDeIEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f34CMTeIEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f34CMjeIEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f34CMzeIEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_f34CNDeIEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_f34CNTeIEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_f34CNjeIEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_f3lHQDeIEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f33bITeIEeGPyrZ5I3hMlA" x="76" y="153" width="357"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_L1JeQDeJEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L1JeQjeJEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L1JeQzeJEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L1KFUDeJEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L1KFUTeJEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L1KFUjeJEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L1KFUzeJEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_L1KFVDeJEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_L01VMDeJEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L1JeQTeJEeGPyrZ5I3hMlA" x="74" y="402" width="494"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_FQOkoDWxEeKGAYOVxzQeAg" type="2008" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FQPywDWxEeKGAYOVxzQeAg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FQPywTWxEeKGAYOVxzQeAg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FQPywjWxEeKGAYOVxzQeAg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FQPywzWxEeKGAYOVxzQeAg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FQPyxDWxEeKGAYOVxzQeAg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FQPyxTWxEeKGAYOVxzQeAg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IiHMIDWxEeKGAYOVxzQeAg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KWAysDWxEeKGAYOVxzQeAg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KWAysTWxEeKGAYOVxzQeAg" key="StereotypeList" value="FCM::Configuration"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KWAysjWxEeKGAYOVxzQeAg" key="PropStereoDisplay" value=",FCM::Configuration.configOptions,FCM::Configuration.deploymentPlan"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KWAyszWxEeKGAYOVxzQeAg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KWAytDWxEeKGAYOVxzQeAg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FQQZ0DWxEeKGAYOVxzQeAg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FQQZ0TWxEeKGAYOVxzQeAg" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FQQZ0jWxEeKGAYOVxzQeAg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FQQZ0zWxEeKGAYOVxzQeAg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FQQZ1DWxEeKGAYOVxzQeAg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FQQZ1TWxEeKGAYOVxzQeAg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FQQZ1jWxEeKGAYOVxzQeAg" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FQQZ1zWxEeKGAYOVxzQeAg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FQQZ2DWxEeKGAYOVxzQeAg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FQQZ2TWxEeKGAYOVxzQeAg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FQQZ2jWxEeKGAYOVxzQeAg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_FQRA4DWxEeKGAYOVxzQeAg" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_FQRA4TWxEeKGAYOVxzQeAg"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FQRA4jWxEeKGAYOVxzQeAg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FQRA4zWxEeKGAYOVxzQeAg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FQRA5DWxEeKGAYOVxzQeAg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ClientServerTraceTest.uml#_QT6okKDjEd-rLNbSWf1QuA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FQOkoTWxEeKGAYOVxzQeAg" x="504" y="27" width="208" height="108"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_6FvnwWONEd-seu3qyZgHfg"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_234GEDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_YEkd8DeIEeGPyrZ5I3hMlA" type="4013" source="_TooeIDeIEeGPyrZ5I3hMlA" target="_FQOkoDWxEeKGAYOVxzQeAg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_YEkd8TeIEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YEkd8jeIEeGPyrZ5I3hMlA" points="[-8, -12, 41, 63]$[-14, -59, 35, 16]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YFH3kDeIEeGPyrZ5I3hMlA" id="(0.3887240356083086,0.2)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YFH3kTeIEeGPyrZ5I3hMlA" id="(0.2980769230769231,0.9722222222222222)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KL_vIDeJEeGPyrZ5I3hMlA" type="4013" source="_f33bIDeIEeGPyrZ5I3hMlA" target="_7Fso4GONEd-seu3qyZgHfg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_KL_vITeJEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KL_vIjeJEeGPyrZ5I3hMlA" points="[-11, -30, 14, 38]$[19, -45, 44, 23]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JTc_cEehEeGg-ceBj4Cxaw" id="(0.43977591036414565,0.047619047619047616)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KMooUDeJEeGPyrZ5I3hMlA" id="(0.76,0.77)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_NvdQsEehEeGg-ceBj4Cxaw" type="4013" source="_L1JeQDeJEeGPyrZ5I3hMlA" target="_7zJkwGONEd-seu3qyZgHfg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_NvdQsUehEeGg-ceBj4Cxaw" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NvdQskehEeGg-ceBj4Cxaw" points="[2, -5, 0, 26]$[15, -23, 13, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nv1rMEehEeGg-ceBj4Cxaw" id="(0.34615384615384615,0.08333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nv1rMUehEeGg-ceBj4Cxaw" id="(0.85,0.92)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_HoscYMniEeCMCo5Ox2CNmg" type="CompositeStructure" name="HWArchitecture" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_IKW_AMniEeCMCo5Ox2CNmg" type="2073" fontName="" fontHeight="10" fillColor="10011046" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IKYNIMniEeCMCo5Ox2CNmg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IKYNIcniEeCMCo5Ox2CNmg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IKYNIsniEeCMCo5Ox2CNmg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IKYNI8niEeCMCo5Ox2CNmg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_IKYNJMniEeCMCo5Ox2CNmg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_IKYNJcniEeCMCo5Ox2CNmg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KTgacDeLEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wN-YMxjEeGQGKJyDfz9-Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wN-YcxjEeGQGKJyDfz9-Q" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wOlcMxjEeGQGKJyDfz9-Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wOlccxjEeGQGKJyDfz9-Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wOlcsxjEeGQGKJyDfz9-Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IKYNJsniEeCMCo5Ox2CNmg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_IKYNJ8niEeCMCo5Ox2CNmg" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_RbhoYMniEeCMCo5Ox2CNmg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RbiPcMniEeCMCo5Ox2CNmg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RbiPccniEeCMCo5Ox2CNmg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RbiPcsniEeCMCo5Ox2CNmg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RbiPc8niEeCMCo5Ox2CNmg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RbiPdMniEeCMCo5Ox2CNmg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Rbi2gMniEeCMCo5Ox2CNmg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Rbi2gcniEeCMCo5Ox2CNmg" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Rbi2gsniEeCMCo5Ox2CNmg" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Rbi2g8niEeCMCo5Ox2CNmg"/>
+ </children>
+ <element xmi:type="uml:Property" href="ClientServerTraceTest.uml#_RbUNAMniEeCMCo5Ox2CNmg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RbhoYcniEeCMCo5Ox2CNmg" x="74" y="24" width="152" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_R5SicMniEeCMCo5Ox2CNmg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R5TJgMniEeCMCo5Ox2CNmg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R5TJgcniEeCMCo5Ox2CNmg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R5TJgsniEeCMCo5Ox2CNmg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R5TJg8niEeCMCo5Ox2CNmg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_R5TJhMniEeCMCo5Ox2CNmg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_R5TJhcniEeCMCo5Ox2CNmg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_R5TJhsniEeCMCo5Ox2CNmg" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_R5TJh8niEeCMCo5Ox2CNmg" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R5TJiMniEeCMCo5Ox2CNmg"/>
+ </children>
+ <element xmi:type="uml:Property" href="ClientServerTraceTest.uml#_R5FuIMniEeCMCo5Ox2CNmg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_R5SiccniEeCMCo5Ox2CNmg" x="385" y="26" width="147" height="53"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IKYNKMniEeCMCo5Ox2CNmg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ClientServerTraceTest.uml#__1PHIMnhEeCMCo5Ox2CNmg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IKW_AcniEeCMCo5Ox2CNmg" x="76" y="27" width="609" height="159"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_M1wXIMniEeCMCo5Ox2CNmg" type="2073" fontName="" fontHeight="10" fillColor="10011046" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M10BgMniEeCMCo5Ox2CNmg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M10BgcniEeCMCo5Ox2CNmg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M10BgsniEeCMCo5Ox2CNmg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M10Bg8niEeCMCo5Ox2CNmg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_M10BhMniEeCMCo5Ox2CNmg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_M10BhcniEeCMCo5Ox2CNmg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LrCOEDeLEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wV6MMxjEeGQGKJyDfz9-Q" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wV6McxjEeGQGKJyDfz9-Q" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wV6MsxjEeGQGKJyDfz9-Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wV6M8xjEeGQGKJyDfz9-Q" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5wV6NMxjEeGQGKJyDfz9-Q" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_M10BhsniEeCMCo5Ox2CNmg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_M10Bh8niEeCMCo5Ox2CNmg" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_QgbSEMniEeCMCo5Ox2CNmg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QgbSEsniEeCMCo5Ox2CNmg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QgbSE8niEeCMCo5Ox2CNmg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qgb5IMniEeCMCo5Ox2CNmg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qgb5IcniEeCMCo5Ox2CNmg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qgb5IsniEeCMCo5Ox2CNmg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qgb5I8niEeCMCo5Ox2CNmg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Qgb5JMniEeCMCo5Ox2CNmg" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Qgb5JcniEeCMCo5Ox2CNmg" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Qgb5JsniEeCMCo5Ox2CNmg"/>
+ </children>
+ <element xmi:type="uml:Property" href="ClientServerTraceTest.uml#_QgKzYMniEeCMCo5Ox2CNmg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QgbSEcniEeCMCo5Ox2CNmg" x="76" y="13" width="165" height="55"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M10BiMniEeCMCo5Ox2CNmg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ClientServerTraceTest.uml#_M1a_8MniEeCMCo5Ox2CNmg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_M1wXIcniEeCMCo5Ox2CNmg" x="72" y="324" width="613" height="136"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ZWgfkDeLEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZWhGoDeLEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZWhGoTeLEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZWhGojeLEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZWhGozeLEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZWhGpDeLEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZWhGpTeLEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZWhGpjeLEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_ZWJ6QDeLEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZWgfkTeLEeGPyrZ5I3hMlA" x="81" y="207" width="352" height="50"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2v8ewDeLEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2v9F0DeLEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2v9F0TeLEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2v9F0jeLEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2v9F0zeLEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2v9F1DeLEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2v9F1TeLEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2v9F1jeLEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_2vkEQDeLEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2v8ewTeLEeGPyrZ5I3hMlA" x="497" y="212" width="332"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_2pxv4DeMEeGPyrZ5I3hMlA" type="2072" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2pxv4jeMEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2pxv4zeMEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2pyW8DeMEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2pyW8TeMEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2pyW8jeMEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2pyW8zeMEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DO1L4DeNEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DoS0wDeNEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DoS0wTeNEeGPyrZ5I3hMlA" key="StereotypeList" value="FCM::Target"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DoS0wjeNEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DoS0wzeNEeGPyrZ5I3hMlA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DoS0xDeNEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_2pyW9DeMEeGPyrZ5I3hMlA" type="5124"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_2pyW9TeMEeGPyrZ5I3hMlA" visible="false" type="7072">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_2pyW9jeMEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2pyW9zeMEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Node" href="ClientServerTraceTest.uml#_zY9vMDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2pxv4TeMEeGPyrZ5I3hMlA" x="713" y="324" width="89" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_5exAADeMEeGPyrZ5I3hMlA" type="2072" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5exnEDeMEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5exnETeMEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5exnEjeMEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5exnEzeMEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5exnFDeMEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5exnFTeMEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FmeYsDeNEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FmeYsTeNEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FmeYsjeNEeGPyrZ5I3hMlA" key="StereotypeList" value="FCM::Target"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FmeYszeNEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FmeYtDeNEeGPyrZ5I3hMlA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FmeYtTeNEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_5eyOIDeMEeGPyrZ5I3hMlA" type="5124"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5eyOITeMEeGPyrZ5I3hMlA" visible="false" type="7072">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5eyOIjeMEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5eyOIzeMEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Node" href="ClientServerTraceTest.uml#_MxayMP_BEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5exAATeMEeGPyrZ5I3hMlA" x="711" y="27" width="91" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_6DHqQDeMEeGPyrZ5I3hMlA" type="2072" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6DIRUDeMEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6DIRUTeMEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6DIRUjeMEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6DIRUzeMEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6DIRVDeMEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6DIRVTeMEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Eq1P0DeNEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Eq124DeNEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Eq124TeNEeGPyrZ5I3hMlA" key="StereotypeList" value="FCM::Target"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Eq124jeNEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Eq124zeNEeGPyrZ5I3hMlA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Eq125DeNEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_6DIRVjeMEeGPyrZ5I3hMlA" type="5124"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_6DIRVzeMEeGPyrZ5I3hMlA" visible="false" type="7072">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_6DIRWDeMEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6DIRWTeMEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Node" href="ClientServerTraceTest.uml#_NF3YMP_BEd6628OhKk_dpg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6DHqQTeMEeGPyrZ5I3hMlA" x="711" y="111" width="91" height="61"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_HoscYcniEeCMCo5Ox2CNmg"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_v3fMgDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_eFyUgMniEeCMCo5Ox2CNmg" type="4013" source="_RbhoYMniEeCMCo5Ox2CNmg" target="_R5SicMniEeCMCo5Ox2CNmg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_eFzioMniEeCMCo5Ox2CNmg" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eFziocniEeCMCo5Ox2CNmg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_eFyUgcniEeCMCo5Ox2CNmg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ClientServerTraceTest.uml#_eFh10MniEeCMCo5Ox2CNmg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eFyUgsniEeCMCo5Ox2CNmg" points="[10, 6, -175, 0]$[169, 6, -16, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eGRcsMniEeCMCo5Ox2CNmg" id="(0.9342105263157895,0.45454545454545453)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eGRcscniEeCMCo5Ox2CNmg" id="(0.10884353741496598,0.5471698113207547)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_JS3nYDeMEeGPyrZ5I3hMlA" type="4002" source="_2v8ewDeLEeGPyrZ5I3hMlA" target="_eFyUgMniEeCMCo5Ox2CNmg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_JS3nYTeMEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JS3nYjeMEeGPyrZ5I3hMlA" points="[-7, -6, 87, 76]$[-87, -82, 7, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JUOSQDeMEeGPyrZ5I3hMlA" id="(0.06325301204819277,0.08333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JUO5UDeMEeGPyrZ5I3hMlA" id="(0.7365591397849462,0.48148148148148145)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_J_wikDeMEeGPyrZ5I3hMlA" type="4002" source="_ZWgfkDeLEeGPyrZ5I3hMlA" target="_IKW_AMniEeCMCo5Ox2CNmg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_J_wikTeMEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J_wikjeMEeGPyrZ5I3hMlA" points="[3, -7, 0, 27]$[-17, -24, -20, 10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KAdGIDeMEeGPyrZ5I3hMlA" id="(0.5015384615384615,0.11666666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KAdGITeMEeGPyrZ5I3hMlA" id="(0.28078817733990147,0.9371069182389937)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_rbZ3IDeFEeGPyrZ5I3hMlA" type="PapyrusUMLClassDiagram" name="ClassDiagram Client" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_t6z40DeFEeGPyrZ5I3hMlA" type="2008" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t60f4DeFEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t60f4TeFEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t60f4jeFEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t60f4zeFEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t60f5DeFEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t60f5TeFEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t61G8DeFEeGPyrZ5I3hMlA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t61G8TeFEeGPyrZ5I3hMlA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t61G8jeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t61G8zeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t61G9DeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t61G9TeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t61G9jeFEeGPyrZ5I3hMlA" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_Q07G0DclEeKAhIrFXfR8zQ" type="3013" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z-c2gDc_EeKPle9CbXIcpQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0IwpEDc_EeKPle9CbXIcpQ" key="CustomAppearance_MaskValue" value="6408"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_Qzp7gDclEeKAhIrFXfR8zQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Q07G0TclEeKAhIrFXfR8zQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_cssnQDc_EeKPle9CbXIcpQ" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_ZnGj0EdDEeGxo4rn9hBAOQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_cssnQTc_EeKPle9CbXIcpQ" x="15" y="21"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t61G9zeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t61G-DeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t61G-TeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t61G-jeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_t61G-zeFEeGPyrZ5I3hMlA" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_t61G_DeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_t61G_TeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_t61G_jeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t61G_zeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Class" href="ClientServerTraceTest.uml#_IfjoETLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t6z40TeFEeGPyrZ5I3hMlA" x="90" y="135" width="144"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ysCMIDeFEeGPyrZ5I3hMlA" type="2008" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ysCzMDeFEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ysCzMTeFEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ysCzMjeFEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ysCzMzeFEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ysCzNDeFEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ysCzNTeFEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ysCzNjeFEeGPyrZ5I3hMlA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ysDaQDeFEeGPyrZ5I3hMlA" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ysDaQTeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ysDaQjeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ysDaQzeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ysDaRDeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ysDaRTeFEeGPyrZ5I3hMlA" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ysDaRjeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ysDaRzeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ysDaSDeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ysDaSTeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ysDaSjeFEeGPyrZ5I3hMlA" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ysDaSzeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ysDaTDeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ysDaTTeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ysDaTjeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ysCMITeFEeGPyrZ5I3hMlA" x="90" y="18" width="145" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zc4aQDeFEeGPyrZ5I3hMlA" type="2004" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zc5BUDeFEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zc5BUTeFEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zc5BUjeFEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zc5oYDeFEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zc5oYTeFEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zc5oYjeFEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zc5oYzeFEeGPyrZ5I3hMlA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zc5oZDeFEeGPyrZ5I3hMlA" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zc5oZTeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zc5oZjeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zc5oZzeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zc5oaDeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zc5oaTeFEeGPyrZ5I3hMlA" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_7omegDeFEeGPyrZ5I3hMlA" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7omegTeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zc5oajeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zc5oazeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zc5obDeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zc5obTeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_zc5objeFEeGPyrZ5I3hMlA" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_zc5obzeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_zc5ocDeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_zc5ocTeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zc5ocjeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="pathmap://QML_CORE/SystemInterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zc4aQTeFEeGPyrZ5I3hMlA" x="387" y="117" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-jKLIDeFEeGPyrZ5I3hMlA" type="2004" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jKLIjeFEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jKLIzeFEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jKyMDeFEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jKyMTeFEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-jKyMjeFEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-jKyMzeFEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-jKyNDeFEeGPyrZ5I3hMlA" type="5011"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jKyNTeFEeGPyrZ5I3hMlA" visible="false" type="7006">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jKyNjeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jKyNzeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jKyODeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jKyOTeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jKyOjeFEeGPyrZ5I3hMlA" type="7007">
+ <children xmi:type="notation:Shape" xmi:id="_A4890DeGEeGPyrZ5I3hMlA" type="3007" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A4890TeGEeGPyrZ5I3hMlA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jKyOzeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jKyPDeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jKyPTeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jKyPjeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_-jKyPzeFEeGPyrZ5I3hMlA" visible="false" type="7008">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_-jKyQDeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_-jKyQTeFEeGPyrZ5I3hMlA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_-jKyQjeFEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jKyQzeFEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Interface" href="pathmap://QML_CORE/SystemInterfaces.uml#_BHFPQJsqEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-jKLITeFEeGPyrZ5I3hMlA" x="387" y="18" height="64"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_H2qW0DeGEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H2q94DeGEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H2q94TeGEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H2q94jeGEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H2q94zeGEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_H2q95DeGEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_H2q95TeGEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_H2q95jeGEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_H2U_oDeGEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_H2qW0TeGEeGPyrZ5I3hMlA" x="279" y="216" width="262"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fBkXMDeGEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBk-QDeGEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBk-QTeGEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBk-QjeGEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBk-QzeGEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fBk-RDeGEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fBllUDeGEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fBllUTeGEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_fBRcQDeGEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fBkXMTeGEeGPyrZ5I3hMlA" x="127" y="308" width="441" height="89"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kTAmMDeHEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kTBNQDeHEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kTBNQTeHEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kTBNQjeHEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kTBNQzeHEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kTBNRDeHEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kTBNRTeHEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kTBNRjeHEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_kStEMDeHEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kTAmMTeHEeGPyrZ5I3hMlA" x="522" y="54" width="292" height="100"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_rbZ3ITeFEeGPyrZ5I3hMlA"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_etOZkDLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ys5HwDeFEeGPyrZ5I3hMlA" type="4002" source="_t6z40DeFEeGPyrZ5I3hMlA" target="_ysCMIDeFEeGPyrZ5I3hMlA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_ys5u0DeFEeGPyrZ5I3hMlA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ys5u0TeFEeGPyrZ5I3hMlA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_ys5HwTeFEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="ClientServerTraceTest.uml#_34FjAPx3Ed6O2oOTPfeAMA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ys5HwjeFEeGPyrZ5I3hMlA" points="[-50, -50, 135, 135]$[-185, -185, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_zdznUDeFEeGPyrZ5I3hMlA" type="4003" source="_t6z40DeFEeGPyrZ5I3hMlA" target="_zc4aQDeFEeGPyrZ5I3hMlA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_zd01cDeFEeGPyrZ5I3hMlA" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zd01cTeFEeGPyrZ5I3hMlA" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zd01cjeFEeGPyrZ5I3hMlA" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zd01czeFEeGPyrZ5I3hMlA" x="9" y="-35"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_zdznUTeFEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zdznUjeFEeGPyrZ5I3hMlA" points="[-50, -50, 135, 135]$[-185, -185, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_-kJpoDeFEeGPyrZ5I3hMlA" type="4002" source="_zc4aQDeFEeGPyrZ5I3hMlA" target="_-jKLIDeFEeGPyrZ5I3hMlA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_-kKQsDeFEeGPyrZ5I3hMlA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-kKQsTeFEeGPyrZ5I3hMlA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_-kJpoTeFEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="pathmap://QML_CORE/SystemInterfaces.uml#_XpdjECS-Ed-A_I32T0fkaA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-kJpojeFEeGPyrZ5I3hMlA" points="[-50, -11, 387, 88]$[-437, -99, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_eBCHQDeGEeGPyrZ5I3hMlA" type="4013" source="_H2qW0DeGEeGPyrZ5I3hMlA" target="_zdznUDeFEeGPyrZ5I3hMlA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_eBCHQTeGEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eBCHQjeGEeGPyrZ5I3hMlA" points="[-29, -30, 53, 44]$[-78, -81, 4, -7]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eB0KYDeGEeGPyrZ5I3hMlA" id="(0.649746192893401,0.620253164556962)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_f6Wj4DeHEeGPyrZ5I3hMlA" type="4013" source="_fBkXMDeGEeGPyrZ5I3hMlA" target="_t6z40DeFEeGPyrZ5I3hMlA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_f6Wj4TeHEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f6Wj4jeHEeGPyrZ5I3hMlA" points="[-3, -11, 18, 93]$[-19, -84, 2, 20]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f68ZwDeHEeGPyrZ5I3hMlA" id="(0.14512471655328799,0.11224489795918367)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f68ZwTeHEeGPyrZ5I3hMlA" id="(0.4,0.85)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HFYY8DeIEeGPyrZ5I3hMlA" type="4013" source="_kTAmMDeHEeGPyrZ5I3hMlA" target="_zc4aQDeFEeGPyrZ5I3hMlA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_HFYY8TeIEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HFYY8jeIEeGPyrZ5I3hMlA" points="[-13, 9, 61, 0]$[-63, 4, 11, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HGKcEDeIEeGPyrZ5I3hMlA" id="(0.04318936877076412,0.4175824175824176)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HGKcETeIEeGPyrZ5I3hMlA" id="(0.89,0.273972602739726)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_HmF5UDeIEeGPyrZ5I3hMlA" type="4013" source="_kTAmMDeHEeGPyrZ5I3hMlA" target="_-jKLIDeFEeGPyrZ5I3hMlA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_HmF5UTeIEeGPyrZ5I3hMlA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HmF5UjeIEeGPyrZ5I3hMlA" points="[-17, -12, 67, 45]$[-67, -51, 17, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HmsWQDeIEeGPyrZ5I3hMlA" id="(0.05647840531561462,0.2857142857142857)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HmsWQTeIEeGPyrZ5I3hMlA" id="(0.83,0.684931506849315)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_Rk2pgDVlEeKoYLVLZgpRiw" type="PapyrusUMLClassDiagram" name="ClassDiagram Server" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_SeK3IDVlEeKoYLVLZgpRiw" type="2008" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SeMsUDVlEeKoYLVLZgpRiw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SeMsUTVlEeKoYLVLZgpRiw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SeMsUjVlEeKoYLVLZgpRiw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SeMsUzVlEeKoYLVLZgpRiw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SeMsVDVlEeKoYLVLZgpRiw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SeMsVTVlEeKoYLVLZgpRiw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cLIEoDVlEeKoYLVLZgpRiw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cLX8QDVlEeKoYLVLZgpRiw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cLX8QTVlEeKoYLVLZgpRiw" key="StereotypeList" value="FCM::RuleApplication"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cLX8QjVlEeKoYLVLZgpRiw" key="PropStereoDisplay" value="FCM::RuleApplication.containerRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cLX8QzVlEeKoYLVLZgpRiw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cLX8RDVlEeKoYLVLZgpRiw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SeNTYDVlEeKoYLVLZgpRiw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SeNTYTVlEeKoYLVLZgpRiw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SeNTYjVlEeKoYLVLZgpRiw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SeNTYzVlEeKoYLVLZgpRiw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SeNTZDVlEeKoYLVLZgpRiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SeNTZTVlEeKoYLVLZgpRiw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SeNTZjVlEeKoYLVLZgpRiw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_VGZdoDVlEeKoYLVLZgpRiw" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_4ZEZwHecEd6r18stFZxmFQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VGZdoTVlEeKoYLVLZgpRiw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VGaEsDVlEeKoYLVLZgpRiw" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_TbIjUJYlEd6G9q9hwr11bw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VGaEsTVlEeKoYLVLZgpRiw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VGarwDVlEeKoYLVLZgpRiw" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_rrf74DVdEeKoYLVLZgpRiw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VGarwTVlEeKoYLVLZgpRiw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SeNTZzVlEeKoYLVLZgpRiw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SeNTaDVlEeKoYLVLZgpRiw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SeNTaTVlEeKoYLVLZgpRiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SeNTajVlEeKoYLVLZgpRiw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SeNTazVlEeKoYLVLZgpRiw" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_SeNTbDVlEeKoYLVLZgpRiw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_SeNTbTVlEeKoYLVLZgpRiw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_SeNTbjVlEeKoYLVLZgpRiw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SeNTbzVlEeKoYLVLZgpRiw"/>
+ </children>
+ <element xmi:type="uml:Class" href="ClientServerTraceTest.uml#_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SeK3ITVlEeKoYLVLZgpRiw" x="176" y="95" width="266" height="203"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Rk2pgTVlEeKoYLVLZgpRiw"/>
+ <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_OGM88DLaEd2qeKRLMdIx_A"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_57mwQDclEeKAhIrFXfR8zQ" type="PapyrusUMLStateMachineDiagram" name="SmDiagram" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_57mwQTclEeKAhIrFXfR8zQ" type="2000" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_57mwQjclEeKAhIrFXfR8zQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_57mwQzclEeKAhIrFXfR8zQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_57mwRDclEeKAhIrFXfR8zQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_57mwRTclEeKAhIrFXfR8zQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_57mwRjclEeKAhIrFXfR8zQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_57mwRzclEeKAhIrFXfR8zQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_57mwSDclEeKAhIrFXfR8zQ" type="2001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_57mwSTclEeKAhIrFXfR8zQ" width="592" height="14"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_57mwSjclEeKAhIrFXfR8zQ" type="2002">
+ <children xmi:type="notation:Shape" xmi:id="_57mwSzclEeKAhIrFXfR8zQ" type="3000" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_57mwTDclEeKAhIrFXfR8zQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_57mwTTclEeKAhIrFXfR8zQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_57mwTjclEeKAhIrFXfR8zQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_57mwTzclEeKAhIrFXfR8zQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_57mwUDclEeKAhIrFXfR8zQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_57mwUTclEeKAhIrFXfR8zQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_57mwUjclEeKAhIrFXfR8zQ" source="RegionAnnotationKey">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_57mwUzclEeKAhIrFXfR8zQ" key="RegionZoneKey" value=""/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_57mwVDclEeKAhIrFXfR8zQ" type="3002">
+ <children xmi:type="notation:Shape" xmi:id="_66VCUDclEeKAhIrFXfR8zQ" type="6000" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_66VpYDclEeKAhIrFXfR8zQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_66VpYTclEeKAhIrFXfR8zQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_66VpYjclEeKAhIrFXfR8zQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_66VpYzclEeKAhIrFXfR8zQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_66VpZDclEeKAhIrFXfR8zQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_66VpZTclEeKAhIrFXfR8zQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_66VpZjclEeKAhIrFXfR8zQ" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_67AXwDclEeKAhIrFXfR8zQ" width="109" height="14"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_66WQcDclEeKAhIrFXfR8zQ" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_66WQcTclEeKAhIrFXfR8zQ" y="14" width="109" height="74"/>
+ </children>
+ <element xmi:type="uml:State" href="ClientServerTraceTest.uml#_66D8kDclEeKAhIrFXfR8zQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_66VCUTclEeKAhIrFXfR8zQ" x="159" y="46" width="109" height="88"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_9gPUoDclEeKAhIrFXfR8zQ" type="8000" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9gP7sTclEeKAhIrFXfR8zQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9gP7sjclEeKAhIrFXfR8zQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9gQiwDclEeKAhIrFXfR8zQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9gQiwTclEeKAhIrFXfR8zQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9gQiwjclEeKAhIrFXfR8zQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9gQiwzclEeKAhIrFXfR8zQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9gQixDclEeKAhIrFXfR8zQ" type="8001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9gQixTclEeKAhIrFXfR8zQ" x="26" y="-11"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9gQixjclEeKAhIrFXfR8zQ" type="8002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9gQixzclEeKAhIrFXfR8zQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Pseudostate" href="ClientServerTraceTest.uml#_9f6kgDclEeKAhIrFXfR8zQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9gP7sDclEeKAhIrFXfR8zQ" x="43" y="30"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_57mwVTclEeKAhIrFXfR8zQ"/>
+ </children>
+ <element xmi:type="uml:Region" href="ClientServerTraceTest.uml#_57WRkDclEeKAhIrFXfR8zQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_57mwVjclEeKAhIrFXfR8zQ" width="592" height="245"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_57mwVzclEeKAhIrFXfR8zQ" y="14" width="592" height="245"/>
+ </children>
+ <element xmi:type="uml:StateMachine" href="ClientServerTraceTest.uml#_5Vd9UDclEeKAhIrFXfR8zQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_57mwWDclEeKAhIrFXfR8zQ" x="30" y="30" width="592" height="259"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_57mwWTclEeKAhIrFXfR8zQ"/>
+ <element xmi:type="uml:StateMachine" href="ClientServerTraceTest.uml#_5Vd9UDclEeKAhIrFXfR8zQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_8bHfoDclEeKAhIrFXfR8zQ" type="7000" source="_66VCUDclEeKAhIrFXfR8zQ" target="_66VCUDclEeKAhIrFXfR8zQ" smoothness="Normal" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_8bItwDclEeKAhIrFXfR8zQ" visible="false" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8bItwTclEeKAhIrFXfR8zQ"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8bItwjclEeKAhIrFXfR8zQ" visible="false" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8bItwzclEeKAhIrFXfR8zQ"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8bItxDclEeKAhIrFXfR8zQ" visible="false" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_8bItxTclEeKAhIrFXfR8zQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_8bHfoTclEeKAhIrFXfR8zQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Transition" href="ClientServerTraceTest.uml#_8ZB08DclEeKAhIrFXfR8zQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8bHfojclEeKAhIrFXfR8zQ" points="[3, 1, 40, -51]$[65, 34, 102, -18]$[56, 94, 93, 42]$[-7, 103, 30, 51]$[-35, 56, 2, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8b9NIDclEeKAhIrFXfR8zQ" id="(0.9724770642201835,0.36363636363636365)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8b9NITclEeKAhIrFXfR8zQ" id="(0.6330275229357798,0.9545454545454546)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_-wO84DclEeKAhIrFXfR8zQ" type="7000" source="_9gPUoDclEeKAhIrFXfR8zQ" target="_66VCUDclEeKAhIrFXfR8zQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_-wPj8DclEeKAhIrFXfR8zQ" visible="false" type="7001">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-wPj8TclEeKAhIrFXfR8zQ"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-wQLADclEeKAhIrFXfR8zQ" visible="false" type="7002">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-wQLATclEeKAhIrFXfR8zQ"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-wQLAjclEeKAhIrFXfR8zQ" visible="false" type="7003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-wQLAzclEeKAhIrFXfR8zQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_-wO84TclEeKAhIrFXfR8zQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Transition" href="ClientServerTraceTest.uml#_-v4XkDclEeKAhIrFXfR8zQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-wO84jclEeKAhIrFXfR8zQ" points="[10, 2, -77, -18]$[79, 14, -8, -6]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-xGfkDclEeKAhIrFXfR8zQ" id="(0.07339449541284404,0.1590909090909091)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml
new file mode 100644
index 00000000000..d18b4fe9680
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml
@@ -0,0 +1,428 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/Alloc/1 http://www.eclipse.org/papyrus/MARTE/1#//Alloc">
+ <uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="ClientServerTraceTest">
+ <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/CORBA.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packageImport xmi:id="_7K0UkACUEd-PD8FdFs7bpA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_DISTRIBUTION/distribution.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_Bb08YGpQEd-C-tMBtf3Npw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_MARTE/marte.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="__D5MwE2WEeGzNbfAXPgNLA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_TRACE/tracing.uml#_H-ZqYDKeEd-WprEKTCaiMA"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_LOqIEDLaEd2qeKRLMdIx_A" name="components">
+ <packagedElement xmi:type="uml:Package" xmi:id="_OGM88DLaEd2qeKRLMdIx_A" name="Server">
+ <packagedElement xmi:type="uml:Class" xmi:id="_oqZNUDLaEd2qeKRLMdIx_A" clientDependency="_YQqH0JYlEd6G9q9hwr11bw" name="CServer_impl" classifierBehavior="_5Vd9UDclEeKAhIrFXfR8zQ">
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_4KiE8DLbEd2qeKRLMdIx_A" name="p" type="_cn-H0DLbEd2qeKRLMdIx_A" aggregation="composite"/>
+ <interfaceRealization xmi:id="_YQqH0JYlEd6G9q9hwr11bw" name="derived realization of ICompute" client="_oqZNUDLaEd2qeKRLMdIx_A" supplier="_cn-H0DLbEd2qeKRLMdIx_A" contract="_cn-H0DLbEd2qeKRLMdIx_A"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ML-4AKI5Ed6FqJCjEUrkqQ" name="add" specification="_TbIjUJYlEd6G9q9hwr11bw">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;a=&quot; &lt;&lt; a &lt;&lt; &quot; b=&quot; &lt;&lt; b &lt;&lt; &quot; a+b=&quot; &lt;&lt; a+b &lt;&lt; endl;
+return a+b;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_I1R3YAcDEeGnrLqQ0OQeAg" name="mult" specification="_4ZEZwHecEd6r18stFZxmFQ">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;a*b=&quot; &lt;&lt; a*b;
+return a*b;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_5Vd9UDclEeKAhIrFXfR8zQ" name="ServerStateMachine">
+ <region xmi:id="_57WRkDclEeKAhIrFXfR8zQ" name="Region1">
+ <transition xmi:id="_8ZB08DclEeKAhIrFXfR8zQ" name="Transition0" source="_66D8kDclEeKAhIrFXfR8zQ" target="_66D8kDclEeKAhIrFXfR8zQ"/>
+ <transition xmi:id="_-v4XkDclEeKAhIrFXfR8zQ" name="Transition1" source="_9f6kgDclEeKAhIrFXfR8zQ" target="_66D8kDclEeKAhIrFXfR8zQ"/>
+ <subvertex xmi:type="uml:State" xmi:id="_66D8kDclEeKAhIrFXfR8zQ" name="State0"/>
+ <subvertex xmi:type="uml:Pseudostate" xmi:id="_9f6kgDclEeKAhIrFXfR8zQ" name="Initial0"/>
+ </region>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_4ZEZwHecEd6r18stFZxmFQ" name="mult" method="_I1R3YAcDEeGnrLqQ0OQeAg">
+ <ownedParameter xmi:id="_nvpKUDVdEeKoYLVLZgpRiw" name="a">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_qgMSAB6SEd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nvup4DVdEeKoYLVLZgpRiw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nvvQ8DVdEeKoYLVLZgpRiw" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_nvwfEDVdEeKoYLVLZgpRiw" name="b">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_wbw4kB6SEd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nvy7UDVdEeKoYLVLZgpRiw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nvziYDVdEeKoYLVLZgpRiw" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_nv1XkDVdEeKoYLVLZgpRiw" name="res" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nv3z0DVdEeKoYLVLZgpRiw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nv4a4DVdEeKoYLVLZgpRiw" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_TbIjUJYlEd6G9q9hwr11bw" name="add" method="_ML-4AKI5Ed6FqJCjEUrkqQ">
+ <ownedParameter xmi:id="_TbZCAJYlEd6G9q9hwr11bw" name="a">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_TbdTcJYlEd6G9q9hwr11bw" name="b">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_TbkoMJYlEd6G9q9hwr11bw" name="res" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrf74DVdEeKoYLVLZgpRiw" name="check">
+ <ownedParameter xmi:id="_4UNv4DVdEeKoYLVLZgpRiw" name="write">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4UO-ADVdEeKoYLVLZgpRiw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4UPlEDVdEeKoYLVLZgpRiw" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_9OJPEDVkEeKoYLVLZgpRiw" name="testOp">
+ <ownedParameter xmi:id="_Br-FQDVlEeKoYLVLZgpRiw" name="testPar">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_6ERa0DW2EeKyT6LlKoWJIA" name="length">
+ <ownedParameter xmi:id="_FfLX4DW3EeKyT6LlKoWJIA" name="p1" type="_krMkcDW2EeKyT6LlKoWJIA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FfN0IDW3EeKyT6LlKoWJIA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FfObMDW3EeKyT6LlKoWJIA" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_Tp4n8DLaEd2qeKRLMdIx_A" name="Interfaces">
+ <ownedComment xmi:id="_TDDBoDeEEeGPyrZ5I3hMlA" annotatedElement="_cn-H0DLbEd2qeKRLMdIx_A">
+ <body>This interface contains services that are used by the client and provided by the server component</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_cn-H0DLbEd2qeKRLMdIx_A" name="ICompute">
+ <ownedOperation xmi:id="_DGs6wDLgEd28fJKJJnUaeQ" name="add">
+ <ownedParameter xmi:id="_DGs6wTLgEd28fJKJJnUaeQ" name="a">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DGs6wzLgEd28fJKJJnUaeQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DGs6wjLgEd28fJKJJnUaeQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_DGs6xDLgEd28fJKJJnUaeQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_DGs6xTLgEd28fJKJJnUaeQ" name="b">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DGs6xzLgEd28fJKJJnUaeQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DGs6xjLgEd28fJKJJnUaeQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_DGs6yDLgEd28fJKJJnUaeQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_DGs6yTLgEd28fJKJJnUaeQ" name="res" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DGs6yzLgEd28fJKJJnUaeQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DGs6yjLgEd28fJKJJnUaeQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_DGs6zDLgEd28fJKJJnUaeQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_L8EY8DLgEd28fJKJJnUaeQ" name="mult" isAbstract="true">
+ <ownedParameter xmi:id="_L8EY8TLgEd28fJKJJnUaeQ" name="a">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_qgMSAB6SEd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L8EY8zLgEd28fJKJJnUaeQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L8EY8jLgEd28fJKJJnUaeQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_L8EY9DLgEd28fJKJJnUaeQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_L8EY9TLgEd28fJKJJnUaeQ" name="b">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_wbw4kB6SEd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L8EY9zLgEd28fJKJJnUaeQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L8EY9jLgEd28fJKJJnUaeQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_L8EY-DLgEd28fJKJJnUaeQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ <ownedParameter xmi:id="_L8EY-TLgEd28fJKJJnUaeQ" name="res" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L8EY-zLgEd28fJKJJnUaeQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L8EY-jLgEd28fJKJJnUaeQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_L8EY_DLgEd28fJKJJnUaeQ">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_rrbqcDVdEeKoYLVLZgpRiw" name="check" isAbstract="true">
+ <ownedParameter xmi:id="_0xTp0DVdEeKoYLVLZgpRiw" name="write">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_6DewoDW2EeKyT6LlKoWJIA" name="length">
+ <ownedParameter xmi:id="_AP4BcDW3EeKyT6LlKoWJIA" name="p1" type="_krMkcDW2EeKyT6LlKoWJIA"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:DataType" xmi:id="_krMkcDW2EeKyT6LlKoWJIA" name="Point">
+ <ownedAttribute xmi:id="_m0WCQDW2EeKyT6LlKoWJIA" name="x" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_-5FTMB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pOAoUDW2EeKyT6LlKoWJIA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pOB2cDW2EeKyT6LlKoWJIA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_pOESsDW2EeKyT6LlKoWJIA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_yJIJMDW2EeKyT6LlKoWJIA" name="y" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_-5FTMB6REd6ITtm_FH3jRw"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yd44QDW2EeKyT6LlKoWJIA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yd6GYDW2EeKyT6LlKoWJIA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_yd77kDW2EeKyT6LlKoWJIA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_etOZkDLaEd2qeKRLMdIx_A" name="Client">
+ <ownedComment xmi:id="_b5cakDeEEeGPyrZ5I3hMlA" annotatedElement="_34FjAPx3Ed6O2oOTPfeAMA">
+ <body>The client component inherits a specific port from the Cstart componen type: the port &quot;start&quot; which provides interface IRunnable containing a single operation &quot;run&quot;. By implementing this operation, the client gets initial control, comparable to a function &quot;main&quot; in classificla programming languages. </body>
+ </ownedComment>
+ <ownedComment xmi:id="_H2U_oDeGEeGPyrZ5I3hMlA">
+ <body>This realization relationship has been added automatically by Qompass, it is derived from the fact that class CClient_impl implements the port &quot;start&quot; which provides the interface &quot;IStart&quot;</body>
+ </ownedComment>
+ <ownedComment xmi:id="_fBRcQDeGEeGPyrZ5I3hMlA" annotatedElement="_IfjoETLbEd2qeKRLMdIx_A">
+ <body>The operation &quot;run&quot; (not the associated behavior) has been added automatically by Qompass in order to implement the operations of interfaces provided by ports, in this case of the operations of the &quot;IStart&quot; interface. It would be tedious to manually copy operations from an interface, as it would imply copying the complete signature with all parameters. The component developper has to provide a suitable behavior. A validation rule verifies if operations without behavior exist.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_kStEMDeHEeGPyrZ5I3hMlA">
+ <annotatedElement xmi:type="uml:Interface" href="pathmap://QML_CORE/SystemInterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <annotatedElement xmi:type="uml:Interface" href="pathmap://QML_CORE/SystemInterfaces.uml#_BHFPQJsqEd61Eo3nmu3JhQ"/>
+ <body>These two interface are part of the &quot;BasicCalls&quot; Qompass model library. The IStart interface is &quot;special&quot;, since the Qompass model transformations check for it existance in order to pass the &quot;main&quot; control to this component. A validation rule checks, if exactly one component instance provides this interface via the &quot;start&quot; port.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IfjoETLbEd2qeKRLMdIx_A" clientDependency="_ZmdDkEdDEeGxo4rn9hBAOQ" name="CClient_impl">
+ <generalization xmi:id="_34FjAPx3Ed6O2oOTPfeAMA">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_DtWn4DLcEd2qeKRLMdIx_A" name="q" type="_cn-H0DLbEd2qeKRLMdIx_A" aggregation="composite"/>
+ <interfaceRealization xmi:id="_ZmdDkEdDEeGxo4rn9hBAOQ" name="derived realization of IStart" client="_IfjoETLbEd2qeKRLMdIx_A">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/SystemInterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract href="pathmap://QML_CORE/SystemInterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yXNVoKF4Ed6FqJCjEUrkqQ" name="run" specification="_ZnGj0EdDEeGxo4rn9hBAOQ">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;call via port q: add (2, 3);&quot; &lt;&lt; endl;
+for (int i=0; i&lt;20; i++) {
+ cout &lt;&lt; &quot;result: &quot; &lt;&lt; q->add (2, (i+3)) &lt;&lt; endl;
+ usleep((i+10)*5*1000);
+ cout &lt;&lt; &quot;result: &quot; &lt;&lt; q->mult (3.0, 7.0) &lt;&lt; endl;
+ usleep(20*1000);
+ testOp(i*2);
+ usleep(30*1000);
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yVALQDclEeKAhIrFXfR8zQ" name="testOp" specification="_Qzp7gDclEeKAhIrFXfR8zQ">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;This is a test operation&quot; &lt;&lt; endl;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_ZnGj0EdDEeGxo4rn9hBAOQ" name="run" method="_yXNVoKF4Ed6FqJCjEUrkqQ"/>
+ <ownedOperation xmi:id="_Qzp7gDclEeKAhIrFXfR8zQ" name="testOp" method="_yVALQDclEeKAhIrFXfR8zQ">
+ <ownedParameter xmi:id="_rXu4UDc_EeKPle9CbXIcpQ" name="j">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_XLQjUDLiEd2RVeNawwNNzg" name="System">
+ <ownedComment xmi:id="_s5iFMDeJEeGPyrZ5I3hMlA" annotatedElement="_bYJagDLiEd2RVeNawwNNzg">
+ <body>A composite class in which two attributes represent the component instances client and server, respectively. The assembly between ports is done on this level.
+A single class represents the complete application, typically called &quot;System&quot; or &quot;System_impl&quot;. Such a class provides the information to calculate a tree of instance specifications, a so-called deployment plan. Check out the context menu. can be generated from the </body>
+ </ownedComment>
+ <ownedComment xmi:id="_Vcf9kDeKEeGPyrZ5I3hMlA" annotatedElement="_QO2s0E2rEeGl8qrc8BM7vA">
+ <body>This connection between ports is stereotyped. The &quot;connector&quot; provides information which specific interaction component is responsible for realising this connection. The interaction component is part of an Qompass model library. Select the connection and check out the Qompass pop &quot;Show/choose connector type or implementation&quot;. In this case an group of implementations has been chosen, which contains a socket connection in case of distribution and a direct connection, if co-localized</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="System_impl">
+ <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="server" type="_oqZNUDLaEd2qeKRLMdIx_A" isUnique="false" aggregation="composite"/>
+ <ownedAttribute xmi:id="_i-I7gDLiEd2RVeNawwNNzg" name="client" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite"/>
+ <ownedConnector xmi:id="_QO2s0E2rEeGl8qrc8BM7vA" name="qp_connector">
+ <end xmi:id="_QO3T4E2rEeGl8qrc8BM7vA" partWithPort="_i-I7gDLiEd2RVeNawwNNzg" role="_DtWn4DLcEd2qeKRLMdIx_A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QO3T4k2rEeGl8qrc8BM7vA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QO3T4U2rEeGl8qrc8BM7vA" value="1"/>
+ </end>
+ <end xmi:id="_QO5wIE2rEeGl8qrc8BM7vA" partWithPort="_gV1cgDLiEd2RVeNawwNNzg" role="_4KiE8DLbEd2qeKRLMdIx_A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QO5wIk2rEeGl8qrc8BM7vA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QO5wIU2rEeGl8qrc8BM7vA" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_v3fMgDLiEd2RVeNawwNNzg" name="platform">
+ <ownedComment xmi:id="_ZWJ6QDeLEeGPyrZ5I3hMlA" annotatedElement="__1PHIMnhEeCMCo5Ox2CNmg">
+ <body>The hardware architecture is also defined by means of a composite class (comparable to the software architecture). The types (NodeA and NodeB) can be stereotyped with information about the used target platform (FCM stereotype target). As for software architecture, instances specification for nodes are derived from this class. Use &quot;Qompass: create platform definition&quot; in the context menu.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_2vkEQDeLEeGPyrZ5I3hMlA" annotatedElement="_eFh10MniEeCMCo5Ox2CNmg">
+ <body>The physical connection between two nodes is represented by a UML connector. Currently, this information is not evaluated by Qompass, but it is planned to analyze for instance whether the throughput (specified by means of MARTE) is sufficient with requirements of the software</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Node" xmi:id="_zY9vMDLiEd2RVeNawwNNzg" name="MonoNode"/>
+ <packagedElement xmi:type="uml:Node" xmi:id="_MxayMP_BEd6628OhKk_dpg" name="NodeA"/>
+ <packagedElement xmi:type="uml:Node" xmi:id="_NF3YMP_BEd6628OhKk_dpg" name="NodeB"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="__1PHIMnhEeCMCo5Ox2CNmg" name="HWArchitectureDist">
+ <ownedAttribute xmi:id="_RbUNAMniEeCMCo5Ox2CNmg" name="nodeA" visibility="public" type="_MxayMP_BEd6628OhKk_dpg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UjRccMniEeCMCo5Ox2CNmg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UkfkcMniEeCMCo5Ox2CNmg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_Ul-LIMniEeCMCo5Ox2CNmg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_R5FuIMniEeCMCo5Ox2CNmg" name="nodeB" visibility="public" type="_NF3YMP_BEd6628OhKk_dpg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VzfHIMniEeCMCo5Ox2CNmg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V1Is8MniEeCMCo5Ox2CNmg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_V3LUUMniEeCMCo5Ox2CNmg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_eFh10MniEeCMCo5Ox2CNmg" name="Connector0">
+ <end xmi:id="_eFic4MniEeCMCo5Ox2CNmg" role="_RbUNAMniEeCMCo5Ox2CNmg"/>
+ <end xmi:id="_eFjD8MniEeCMCo5Ox2CNmg" role="_R5FuIMniEeCMCo5Ox2CNmg"/>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_M1a_8MniEeCMCo5Ox2CNmg" name="HWArchitectureMonolithic">
+ <ownedAttribute xmi:id="_QgKzYMniEeCMCo5Ox2CNmg" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XijRAMniEeCMCo5Ox2CNmg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XkfxwMniEeCMCo5Ox2CNmg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_XlIq8MniEeCMCo5Ox2CNmg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_fKDWEDeMEeGPyrZ5I3hMlA" name="HWArchitectureDistPlatform">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_fKEkMDeMEeGPyrZ5I3hMlA" name="nodeA" classifier="_MxayMP_BEd6628OhKk_dpg"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_fKFyUDeMEeGPyrZ5I3hMlA" name="nodeB" classifier="_NF3YMP_BEd6628OhKk_dpg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_gFWgsDeMEeGPyrZ5I3hMlA" name="HWArchitectureMonolithicPlatform">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_gFXHwDeMEeGPyrZ5I3hMlA" name="monoNode" classifier="_zY9vMDLiEd2RVeNawwNNzg"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_234GEDLiEd2RVeNawwNNzg" name="deployment">
+ <ownedComment xmi:id="_ToVjMDeIEeGPyrZ5I3hMlA" annotatedElement="_QT6okKDjEd-rLNbSWf1QuA">
+ <body>A deployment configuration that activates the tracing container rule which will provide OTF tracing. The deployment configuration is linked with the &quot;monolithic&quot; deployment plan</body>
+ </ownedComment>
+ <ownedComment xmi:id="_f3lHQDeIEeGPyrZ5I3hMlA" annotatedElement="_5Z7MEDLiEd2RVeNawwNNzg">
+ <body> deployment plan (= set of instances along with their configuration and allocation) &quot;monolithic&quot;. All instances are allocated to node instance &quot;monoNode&quot;. Check out the node allocation with the pop-up &quot;Qompass: allocate to node&quot;.
+Initiate the deployment and code generation with the pop-up &quot;Qompass: generate deployment model and code from plan&quot;.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_L01VMDeJEeGPyrZ5I3hMlA" annotatedElement="_bBSxQP_BEd6628OhKk_dpg">
+ <body> In this case, the deployment plan forsees allocating the client to nodeA and the server to nodeB. Note that the deployment transformations will automatically detect that a distributed connector is required, in this case a socket (see composite diagram System)</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Package" xmi:id="_5Z7MEDLiEd2RVeNawwNNzg" name="monolithic">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_L9xhwDLjEd2RVeNawwNNzg" clientDependency="_1Lv7AE0qEeGl_syZE5iOXA" name="mySystem" classifier="_bYJagDLiEd2RVeNawwNNzg">
+ <slot xmi:id="_TdCvsDLjEd2RVeNawwNNzg" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_fw8xUDLjEd2RVeNawwNNzg" name="" instance="_MyQ5wDLjEd2RVeNawwNNzg"/>
+ </slot>
+ <slot xmi:id="_YhikUDLjEd2RVeNawwNNzg" definingFeature="_i-I7gDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_lAoiQDLjEd2RVeNawwNNzg" instance="_P3ovQDLjEd2RVeNawwNNzg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_MyQ5wDLjEd2RVeNawwNNzg" name="mySystem.server" classifier="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_P3ovQDLjEd2RVeNawwNNzg" name="mySystem.client" classifier="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_1Lv7AE0qEeGl_syZE5iOXA" name="allocate to monoNode" client="_L9xhwDLjEd2RVeNawwNNzg" supplier="_gFXHwDeMEeGPyrZ5I3hMlA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_bBSxQP_BEd6628OhKk_dpg" name="distributed">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_bBdwYP_BEd6628OhKk_dpg" name="mainInstance" classifier="_bYJagDLiEd2RVeNawwNNzg">
+ <slot xmi:id="_bBpWkP_BEd6628OhKk_dpg" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_bBqksP_BEd6628OhKk_dpg" instance="_bBnhYP_BEd6628OhKk_dpg"/>
+ </slot>
+ <slot xmi:id="_bBuPEP_BEd6628OhKk_dpg" definingFeature="_i-I7gDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_bBxSYP_BEd6628OhKk_dpg" instance="_bBry0P_BEd6628OhKk_dpg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_bBnhYP_BEd6628OhKk_dpg" clientDependency="_zjuk8DeMEeGPyrZ5I3hMlA" name="mainInstance.server" classifier="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_bBry0P_BEd6628OhKk_dpg" clientDependency="_zMKZgDeMEeGPyrZ5I3hMlA" name="mainInstance.client" classifier="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_zMKZgDeMEeGPyrZ5I3hMlA" name="allocate to nodeA" client="_bBry0P_BEd6628OhKk_dpg" supplier="_fKEkMDeMEeGPyrZ5I3hMlA"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_zjuk8DeMEeGPyrZ5I3hMlA" name="allocate to nodeB" client="_bBnhYP_BEd6628OhKk_dpg" supplier="_fKFyUDeMEeGPyrZ5I3hMlA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_QT6okKDjEd-rLNbSWf1QuA" name="ConfigTraceMono"/>
+ </packagedElement>
+ <profileApplication xmi:id="_O6TiIjLUEd26WNosUASSSw">
+ <eAnnotations xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
+ <eAnnotations xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
+ <eAnnotations xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_1GtD8E0fEeG_H4ME7SR4KA">
+ <eAnnotations xmi:id="_1RA2gE0fEeG_H4ME7SR4KA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:DerivedElement xmi:id="_B9o7sP6yEd6Ie_kieu_3CQ">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_DWb6oP6yEd6Ie_kieu_3CQ" base_Element="_TbIjUJYlEd6G9q9hwr11bw" source="_DGs6wDLgEd28fJKJJnUaeQ"/>
+ <FCM:DerivedElement xmi:id="_DXK6cP6yEd6Ie_kieu_3CQ" base_Element="_4ZEZwHecEd6r18stFZxmFQ" source="_L8EY8DLgEd28fJKJJnUaeQ"/>
+ <FCM:RuleApplication xmi:id="_DWIYoP6yEd6Ie_kieu_3CQ" base_Class="_oqZNUDLaEd2qeKRLMdIx_A">
+ <containerRule href="pathmap://QML_TRACE/tracing.uml#_RWQC8PwkEeGWn-a9PUOYcA"/>
+ <containerRule href="pathmap://QML_TRACE/tracing.uml#_NtAukCqLEeKGrchWittz_g"/>
+ <propagateRule>false</propagateRule>
+ <interceptor href="pathmap://QML_TRACE/tracing.uml#_35od4DKrEd-z5o2wSoJ16A"/>
+ </FCM:RuleApplication>
+ <FCM:Port xmi:id="_GofhQP6yEd6Ie_kieu_3CQ" base_Port="_4KiE8DLbEd2qeKRLMdIx_A">
+ <kind href="pathmap://QML_CORE/core.uml#_wySlkFRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Connector xmi:id="_K2_iAP6yEd6Ie_kieu_3CQ"/>
+ <FCM:DeploymentPlan xmi:id="_6dGQgP6zEd6Ie_kieu_3CQ" mainInstance="_L9xhwDLjEd2RVeNawwNNzg" base_Package="_5Z7MEDLiEd2RVeNawwNNzg"/>
+ <FCM:DerivedElement xmi:id="_RwGb8P6_Ed6Zw96O-tCw7A" source="_DGs6wDLgEd28fJKJJnUaeQ"/>
+ <FCM:DerivedElement xmi:id="_RxVyEP6_Ed6Zw96O-tCw7A" source="_L8EY8DLgEd28fJKJJnUaeQ"/>
+ <Cpp:CppInclude xmi:id="_7SAnAP76Ed6Zw96O-tCw7A" body="#include &lt;unistd.h>&#xA;#include &lt;iostream>&#xA;using namespace std;" base_class="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <Cpp:CppInclude xmi:id="_Sa4nEP77Ed6Zw96O-tCw7A" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <FCM:DeploymentPlan xmi:id="_bBdJUP_BEd6628OhKk_dpg" mainInstance="_bBdwYP_BEd6628OhKk_dpg" base_Package="_bBSxQP_BEd6628OhKk_dpg"/>
+ <FCM:Connector xmi:id="_Tm9v0ACUEd-PD8FdFs7bpA"/>
+ <FCM:DeploymentPlan xmi:id="_lEueYGLEEd-seu3qyZgHfg"/>
+ <FCM:DeploymentPlan xmi:id="_u_ACgGSuEd-dQdK1-7wIFg"/>
+ <FCM:DeploymentPlan xmi:id="_YK67AGTgEd-rCOWJcspHOA"/>
+ <FCM:Port xmi:id="_IWQqoP6yEd6Ie_kieu_3CQ" base_Port="_DtWn4DLcEd2qeKRLMdIx_A">
+ <kind href="pathmap://QML_CORE/core.uml#_9Fif4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:ContainerRule xmi:id="_lNrDwH4HEd-rD-b0gnx-AQ"/>
+ <FCM:Configuration xmi:id="_RM9kQH8UEd-7Bsdl4VhuEw" deploymentPlan="_6dGQgP6zEd6Ie_kieu_3CQ" base_Package="_BJc50H8TEd-7Bsdl4VhuEw">
+ <configOptions href="pathmap://QML_CORE/core.uml#_u6LqoH7eEd-FNNgSS03RxQ"/>
+ </FCM:Configuration>
+ <FCM:Configuration xmi:id="_Y10_QKDjEd-rLNbSWf1QuA" base_Class="_QT6okKDjEd-rLNbSWf1QuA" deploymentPlan="_6dGQgP6zEd6Ie_kieu_3CQ">
+ <configOptions href="pathmap://QML_CORE/core.uml#_u6LqoH7eEd-FNNgSS03RxQ"/>
+ </FCM:Configuration>
+ <FCM:DerivedElement xmi:id="_1E0nUKFhEd-AoOVE_odazw"/>
+ <FCM:Target xmi:id="_Et5N4LqQEd-BObGGoBbehA" base_Node="_MxayMP_BEd6628OhKk_dpg">
+ <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ </FCM:Target>
+ <FCM:Target xmi:id="_HvbFMLqQEd-BObGGoBbehA" base_Node="_zY9vMDLiEd2RVeNawwNNzg">
+ <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ </FCM:Target>
+ <FCM:Target xmi:id="_J6gcsLqQEd-BObGGoBbehA" base_Node="_NF3YMP_BEd6628OhKk_dpg">
+ <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ </FCM:Target>
+ <FCM:Connector xmi:id="_cAkqIMKnEd-LE5cHpAvxBg">
+ <connector xmi:type="FCM:ConnectorImplGroup" href="pathmap://QML_DISTRIBUTION/distribution.uml#_DBP7QMKmEd-hj59jYY3RZQ"/>
+ </FCM:Connector>
+ <FCM:DerivedElement xmi:id="_ZnZewEdDEeGxo4rn9hBAOQ" base_Element="_ZnGj0EdDEeGxo4rn9hBAOQ">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <Alloc:Allocate xmi:id="_hgh4IE0rEeGl_syZE5iOXA" base_Abstraction="_1Lv7AE0qEeGl_syZE5iOXA"/>
+ <Alloc:Allocate xmi:id="_iwbZwE0rEeGl_syZE5iOXA" base_Abstraction="_zMKZgDeMEeGPyrZ5I3hMlA"/>
+ <Alloc:Allocate xmi:id="_juiAwE0rEeGl_syZE5iOXA" base_Abstraction="_zjuk8DeMEeGPyrZ5I3hMlA"/>
+ <FCM:Connector xmi:id="_UKqbEE2rEeGl8qrc8BM7vA" base_Connector="_QO2s0E2rEeGl8qrc8BM7vA">
+ <ic href="pathmap://QML_DISTRIBUTION/distribution.uml#_lpYxME2qEeGl8qrc8BM7vA"/>
+ </FCM:Connector>
+ <FCM:DerivedElement xmi:id="_rrmpkDVdEeKoYLVLZgpRiw" base_Element="_rrf74DVdEeKoYLVLZgpRiw" source="_rrbqcDVdEeKoYLVLZgpRiw"/>
+ <FCM:DerivedElement xmi:id="_6EbL0DW2EeKyT6LlKoWJIA" base_Element="_6ERa0DW2EeKyT6LlKoWJIA" source="_6DewoDW2EeKyT6LlKoWJIA"/>
+ <FCM:RuleApplication xmi:id="__bC_ADcmEeKAhIrFXfR8zQ" base_Class="_IfjoETLbEd2qeKRLMdIx_A">
+ <containerRule href="pathmap://QML_TRACE/tracing.uml#_NtAukCqLEeKGrchWittz_g"/>
+ <propagateRule>false</propagateRule>
+ </FCM:RuleApplication>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.di b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.di
new file mode 100644
index 00000000000..8ead0589857
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.di
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmi:id="_M_WAwPcXEd-KM6l7lmIPkw">
+ <pageList xmi:id="_M_WAwfcXEd-KM6l7lmIPkw">
+ <availablePage xmi:id="_M_WAwvcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_UstOsM__Ed-TP80eVS-2Rg"/>
+ </availablePage>
+ <availablePage xmi:id="_M_WAxPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_7kc7YM__Ed-TP80eVS-2Rg"/>
+ </availablePage>
+ <availablePage xmi:id="_M_WAxfcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_o6ZisNCREd-hqYHBJe17_Q"/>
+ </availablePage>
+ <availablePage xmi:id="_U1docPcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_U1UegPcXEd-KM6l7lmIPkw"/>
+ </availablePage>
+ <availablePage xmi:id="_V5fVYP8nEd-hWJO6cv3VJA">
+ <emfPageIdentifier href="ProducerConsumer.notation#_V5euUP8nEd-hWJO6cv3VJA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ProducerConsumer.notation#_0rwpYDefEeGPyrZ5I3hMlA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="ProducerConsumer.notation#_HvdK0FZYEeKKZs15rvNNjA"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_M_WAxvcXEd-KM6l7lmIPkw" currentSelection="_M_WAyPcXEd-KM6l7lmIPkw">
+ <windows xmi:id="_M_WAx_cXEd-KM6l7lmIPkw">
+ <children xsi:type="di:TabFolder" xmi:id="_M_WAyPcXEd-KM6l7lmIPkw">
+ <children xmi:id="_M_WAyfcXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_UstOsM__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:id="_M_WAy_cXEd-KM6l7lmIPkw">
+ <emfPageIdentifier href="ProducerConsumer.notation#_7kc7YM__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerConsumer.notation#_U1UegPcXEd-KM6l7lmIPkw"/>
+ </children>
+ <children xmi:id="_V5fVYf8nEd-hWJO6cv3VJA">
+ <emfPageIdentifier href="ProducerConsumer.notation#_V5euUP8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerConsumer.notation#_0rwpYDefEeGPyrZ5I3hMlA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerConsumer.notation#_o6ZisNCREd-hqYHBJe17_Q"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="ProducerConsumer.notation#_HvdK0FZYEeKKZs15rvNNjA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.notation b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.notation
new file mode 100644
index 00000000000..afa79ec196e
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.notation
@@ -0,0 +1,1090 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_UstOsM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="PushConsumer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VT2HMM__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2HMs__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uQM__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2uQc__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uQs__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2uQ8__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VT2uRM__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VT2uRc__Ed-TP80eVS-2Rg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VT2uRs__Ed-TP80eVS-2Rg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VT2uR8__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XgvckM__Ed-TP80eVS-2Rg" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwDoM__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XgwDoc__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwDos__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XgwDo8__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XgwqsM__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgwqsc__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Dym0EJZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDcT4FZ3EeK5f41mmHszag" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDc68FZ3EeK5f41mmHszag" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort,FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDc68VZ3EeK5f41mmHszag" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDc68lZ3EeK5f41mmHszag" key="PropStereoDisplay" value="FCM::Port.kind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UDc681Z3EeK5f41mmHszag" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xgwqss__Ed-TP80eVS-2Rg" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Xgwqs8__Ed-TP80eVS-2Rg" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XgwqtM__Ed-TP80eVS-2Rg" type="6029">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fex2IFZ0EeK5f41mmHszag" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzMFZ3EeK5f41mmHszag" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzMVZ3EeK5f41mmHszag" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzMlZ3EeK5f41mmHszag" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzM1Z3EeK5f41mmHszag" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RrgzNFZ3EeK5f41mmHszag" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Xgwqtc__Ed-TP80eVS-2Rg" x="-62" y="-65"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Xgvckc__Ed-TP80eVS-2Rg" x="-10" y="38"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VT2HMc__Ed-TP80eVS-2Rg" x="144" y="36" width="172" height="87"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XfxXsDecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5gDecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5gTecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5gjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5gzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Xgz5hDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Xgz5hTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Xgz5hjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_XfnmsDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XfxXsTecEeGPyrZ5I3hMlA" x="351" y="36" width="163" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gpzeUDecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FYDecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FYTecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FYjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FYzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FZDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gp0FZTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gp0FZjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_gpptUDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gpzeUTecEeGPyrZ5I3hMlA" x="63" y="144" width="451"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_UstOsc__Ed-TP80eVS-2Rg"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_OGM88DLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_fsWXkDecEeGPyrZ5I3hMlA" type="4002" source="_XfxXsDecEeGPyrZ5I3hMlA" target="_VT2HMM__Ed-TP80eVS-2Rg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_fsWXkTecEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fsWXkjecEeGPyrZ5I3hMlA" points="[-1, -3, 19, 74]$[4, -33, 24, 44]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fsndUDecEeGPyrZ5I3hMlA" id="(0.3893805309734513,0.05)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_l-KT4DecEeGPyrZ5I3hMlA" type="4002" source="_gpzeUDecEeGPyrZ5I3hMlA" target="_XgvckM__Ed-TP80eVS-2Rg" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_l-KT4TecEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l-KT4jecEeGPyrZ5I3hMlA" points="[-17, -2, -29, 63]$[-17, -62, -29, 3]$[9, -62, -3, 3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsDecEeGPyrZ5I3hMlA" id="(0.14832535885167464,0.03333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsTecEeGPyrZ5I3hMlA" id="(0.15,0.35)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_7kc7YM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="PullConsumer" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_8LSR4M__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LSR4s__Ed-TP80eVS-2Rg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LSR48__Ed-TP80eVS-2Rg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LS48M__Ed-TP80eVS-2Rg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LS48c__Ed-TP80eVS-2Rg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LS48s__Ed-TP80eVS-2Rg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8LS488__Ed-TP80eVS-2Rg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HIdDoJZ9EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MJZ9EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MZZ9EeCiU5xXzp1cKQ" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--MpZ9EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--M5Z9EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HT--NJZ9EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_8LS49M__Ed-TP80eVS-2Rg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_8LS49c__Ed-TP80eVS-2Rg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LS49s__Ed-TP80eVS-2Rg"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ytK8IP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" gradient="8421504, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytLjMP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytLjMf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytLjMv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytLjM_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ytMKQP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ytMKQf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sZ6LcFZWEeKKZs15rvNNjA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sogoIFZWEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sogoIVZWEeKKZs15rvNNjA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sogoIlZWEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sogoI1ZWEeKKZs15rvNNjA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sohPMFZWEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ytMKQv8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-iwEgFZ0EeK5f41mmHszag" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-o9aMFZ0EeK5f41mmHszag" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKQ_8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ytMKRP8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKRf8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ytK8If8nEd-hWJO6cv3VJA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_t6X3UJaMEeCbgbUO5qahhA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZFcJaMEeCbgbUO5qahhA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6ZFcZaMEeCbgbUO5qahhA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZsgJaMEeCbgbUO5qahhA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6ZsgZaMEeCbgbUO5qahhA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t6ZsgpaMEeCbgbUO5qahhA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_t6Zsg5aMEeCbgbUO5qahhA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wOa9kJaMEeCbgbUO5qahhA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_KQFZ0EeK5f41mmHszag" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_xUFZ0EeK5f41mmHszag" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort,FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_xUVZ0EeK5f41mmHszag" key="PropStereoDisplay" value="FCM::Port.kind,FCM::Port.requiredInterface"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_xUlZ0EeK5f41mmHszag" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SS_xU1Z0EeK5f41mmHszag" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t6ZshJaMEeCbgbUO5qahhA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__Cf7kFZ0EeK5f41mmHszag" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__K9UAFZ0EeK5f41mmHszag" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t6ZshZaMEeCbgbUO5qahhA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_t6aTkJaMEeCbgbUO5qahhA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t6aTkZaMEeCbgbUO5qahhA" x="-8" y="45"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_t6X3UZaMEeCbgbUO5qahhA" x="-10" y="72"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JxylQFZ0EeK5f41mmHszag" visible="false" type="AppliedStereotypeCompartement">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JxylQVZ0EeK5f41mmHszag" showTitle="true"/>
+ <element xmi:type="Cpp:CppInclude" href="ProducerConsumer.uml#_11OtwPcaEd-KM6l7lmIPkw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JxylQlZ0EeK5f41mmHszag"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_JxzMUFZ0EeK5f41mmHszag" visible="false" type="AppliedStereotypeCompartement">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_JxzMUVZ0EeK5f41mmHszag" showTitle="true"/>
+ <element xmi:type="FCM:RuleApplication" href="ProducerConsumer.uml#_FeS3AF7zEeGA7qTe7UD05A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JxzMUlZ0EeK5f41mmHszag"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LSR4c__Ed-TP80eVS-2Rg" x="162" y="162" width="254" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_uHcuMP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVQP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVQf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVQv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVQ_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVRP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uHdVRf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uHdVRv8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_uHdVR_8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHd8UP8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xVmsQP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTUP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVnTUf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTUv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVnTU_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xVnTVP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVn6YP8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qnfyoFZWEeKKZs15rvNNjA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YBsFZWEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YBsVZWEeKKZs15rvNNjA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowFZWEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowVZWEeKKZs15rvNNjA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowlZWEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVn6Yf8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__hZeEFZ0EeK5f41mmHszag" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__nGdcFZ0EeK5f41mmHszag" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6Yv8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVn6Y_8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6ZP8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xVmsQf8nEd-hWJO6cv3VJA" x="-10" y="29"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHcuMf8nEd-hWJO6cv3VJA" x="162" y="36" width="253" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_-HlK8DecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyADecEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyATecEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyAjecEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyAzecEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyBDecEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-HlyBTecEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_-HlyBjecEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_-Hd2MDecEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HlK8TecEeGPyrZ5I3hMlA" x="468" y="135" width="295"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0EFQQDedEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UDedEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3UTedEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UjedEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3UzedEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3VDedEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0EF3VTedEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0EF3VjedEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_0D64MDedEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0EFQQTedEeGPyrZ5I3hMlA" x="468" y="36" width="295"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_7kc7Yc__Ed-TP80eVS-2Rg"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_tyiqsM__Ed-TP80eVS-2Rg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_uHz6kP8nEd-hWJO6cv3VJA" type="4015" source="_8LSR4M__Ed-TP80eVS-2Rg" target="_uHcuMP8nEd-hWJO6cv3VJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_uH0hoP8nEd-hWJO6cv3VJA" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_uH0hof8nEd-hWJO6cv3VJA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uHz6kf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="ProducerConsumer.uml#_tyiqss__Ed-TP80eVS-2Rg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uHz6kv8nEd-hWJO6cv3VJA" points="[-103, -45, 204, 90]$[-307, -135, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_FOfGwDeeEeGPyrZ5I3hMlA" type="4002" source="_0EFQQDedEeGPyrZ5I3hMlA" target="_uHcuMP8nEd-hWJO6cv3VJA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_FOfGwTeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FOfGwjeeEeGPyrZ5I3hMlA" points="[-6, -3, 83, 0]$[-62, -3, 27, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgDeeEeGPyrZ5I3hMlA" id="(0.020338983050847456,0.4027777777777778)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgTeeEeGPyrZ5I3hMlA" id="(0.8932806324110671,0.5205479452054794)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_F4Ju0DeeEeGPyrZ5I3hMlA" type="4002" source="_-HlK8DecEeGPyrZ5I3hMlA" target="_8LSR4M__Ed-TP80eVS-2Rg" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_F4Ju0TeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F4Ju0jeeEeGPyrZ5I3hMlA" points="[-25, 21, 78, 0]$[-80, 21, 23, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kDeeEeGPyrZ5I3hMlA" id="(0.01694915254237288,0.5681818181818182)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kTeeEeGPyrZ5I3hMlA" id="(0.9724409448818898,0.42201834862385323)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_o6ZisNCREd-hqYHBJe17_Q" type="CompositeStructure" name="System Pull" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_VSa6YNHtEd-A1oPfP47IaQ" type="2073" fontName="" fontHeight="10" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScIgNHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvkNHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScvkdHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvktHtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VScvk9HtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VScvlNHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VScvldHtEd-A1oPfP47IaQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VScvltHtEd-A1oPfP47IaQ" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_XsS70NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi4NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi4dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi4tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi49HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XsTi5NHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XsTi5dHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XsTi5tHtEd-A1oPfP47IaQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5r3JsFZWEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6tdJkFZWEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XsTi59HtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsUJ8NHtEd-A1oPfP47IaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0XlXwDF1EeCpQdhNuFCtew" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM8DF1EeCpQdhNuFCtew" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM8TF1EeCpQdhNuFCtew" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM8jF1EeCpQdhNuFCtew" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM8zF1EeCpQdhNuFCtew" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0XnM9DF1EeCpQdhNuFCtew" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0XnM9TF1EeCpQdhNuFCtew" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_t7uK4JZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9AJZ7EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9AZZ7EeCiU5xXzp1cKQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9ApZ7EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueh9A5Z7EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ueikEJZ7EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Xn0ADF1EeCpQdhNuFCtew" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4jWCcFZWEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4qOGgFZWEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Xn0ATF1EeCpQdhNuFCtew" x="31" y="-1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Xn0AjF1EeCpQdhNuFCtew" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Xn0AzF1EeCpQdhNuFCtew" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0XlXwTF1EeCpQdhNuFCtew" x="-10" y="50"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_gV1cgDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsS70dHtEd-A1oPfP47IaQ" x="361" y="18" width="193" height="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YNar4NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS8NHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS8dHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS8tHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS89HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS9NHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YNbS9dHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YNbS9tHtEd-A1oPfP47IaQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7rNyUFZWEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7ztnAFZWEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_YNbS99HtEd-A1oPfP47IaQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YNbS-NHtEd-A1oPfP47IaQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zmq8ANHtEd-A1oPfP47IaQ" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKINHtEd-A1oPfP47IaQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKIdHtEd-A1oPfP47IaQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKItHtEd-A1oPfP47IaQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKI9HtEd-A1oPfP47IaQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zmsKJNHtEd-A1oPfP47IaQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zmsKJdHtEd-A1oPfP47IaQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ow9WMJZ7EeCiU5xXzp1cKQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgJZ7EeCiU5xXzp1cKQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgZZ7EeCiU5xXzp1cKQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlbkgpZ7EeCiU5xXzp1cKQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlcLkJZ7EeCiU5xXzp1cKQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qlcLkZZ7EeCiU5xXzp1cKQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zmsKJtHtEd-A1oPfP47IaQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_34a2IFZWEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4ARKkFZWEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zmsxMNHtEd-A1oPfP47IaQ" x="-84" y="1"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zmsxMdHtEd-A1oPfP47IaQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_zmsxMtHtEd-A1oPfP47IaQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zmq8AdHtEd-A1oPfP47IaQ" x="159" y="48"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_i-I7gDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YNar4dHtEd-A1oPfP47IaQ" x="22" y="18" width="169" height="85"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JusbQDbdEeGdqp2YT1LwWw" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCUDbdEeGdqp2YT1LwWw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCUTbdEeGdqp2YT1LwWw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCUjbdEeGdqp2YT1LwWw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCUzbdEeGdqp2YT1LwWw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCVDbdEeGdqp2YT1LwWw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JutCVTbdEeGdqp2YT1LwWw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JutCVjbdEeGdqp2YT1LwWw" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_JuaHYDbdEeGdqp2YT1LwWw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JusbQTbdEeGdqp2YT1LwWw" x="355" y="121" width="199" height="44"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_lM7ZUDeeEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lM7ZUjeeEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lM7ZUzeeEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lM8AYDeeEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lM8AYTeeEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lM8AYjeeEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lM8AYzeeEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lM8AZDeeEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_lMxBQDeeEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lM7ZUTeeEeGPyrZ5I3hMlA" x="4" y="121" width="343"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VScvl9HtEd-A1oPfP47IaQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_bYJagDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSa6YdHtEd-A1oPfP47IaQ" x="18" y="18" width="604" height="244"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_o6ZisdCREd-hqYHBJe17_Q"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_XLQjUDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_fPo0MDbdEeGdqp2YT1LwWw" type="4002" source="_JusbQDbdEeGdqp2YT1LwWw" target="_XsS70NHtEd-A1oPfP47IaQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_fPo0MTbdEeGdqp2YT1LwWw" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fPo0MjbdEeGdqp2YT1LwWw" points="[2, -6, -18, 35]$[17, -24, -3, 17]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fQJKgDbdEeGdqp2YT1LwWw" id="(0.5121951219512195,0.125)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fQJKgTbdEeGdqp2YT1LwWw" id="(0.48186528497409326,0.8)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_efaBUE2rEeGl8qrc8BM7vA" type="4013" source="_zmq8ANHtEd-A1oPfP47IaQ" target="_0XlXwDF1EeCpQdhNuFCtew" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iqb3UE2rEeGl8qrc8BM7vA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bRlQFZXEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bRlQVZXEeKKZs15rvNNjA" key="StereotypeList" value="FCM::Connector"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bRlQlZXEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bSMUFZXEeKKZs15rvNNjA" key="PropStereoDisplay" value="FCM::Connector.ic"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9bSMUVZXEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="With brace"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efaoYE2rEeGl8qrc8BM7vA" type="6025">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j_ovsE2rEeGl8qrc8BM7vA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIE2rEeGl8qrc8BM7vA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIU2rEeGl8qrc8BM7vA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIIk2rEeGl8qrc8BM7vA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZII02rEeGl8qrc8BM7vA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_klZIJE2rEeGl8qrc8BM7vA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efaoYU2rEeGl8qrc8BM7vA" x="-4" y="-27"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efaoYk2rEeGl8qrc8BM7vA" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efaoY02rEeGl8qrc8BM7vA" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efbPcE2rEeGl8qrc8BM7vA" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efbPcU2rEeGl8qrc8BM7vA" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_efbPck2rEeGl8qrc8BM7vA" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_efbPc02rEeGl8qrc8BM7vA" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_efaBUU2rEeGl8qrc8BM7vA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Connector" href="ProducerConsumer.uml#_efVI0E2rEeGl8qrc8BM7vA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efaBUk2rEeGl8qrc8BM7vA" points="[3, 1, -160, -2]$[160, -7, -3, -10]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efmOkE2rEeGl8qrc8BM7vA" id="(0.85,0.45)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_g2IoIE2rEeGl8qrc8BM7vA" type="4002" source="_lM7ZUDeeEeGPyrZ5I3hMlA" target="_efaBUE2rEeGl8qrc8BM7vA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_g2JPME2rEeGl8qrc8BM7vA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_g2JPMU2rEeGl8qrc8BM7vA" points="[1, -5, 0, 43]$[1, -48, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g2TAME2rEeGl8qrc8BM7vA" id="(0.7755102040816326,0.06944444444444445)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_g2TAMU2rEeGl8qrc8BM7vA" id="(0.4689265536723164,0.48148148148148145)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_U1UegPcXEd-KM6l7lmIPkw" type="PapyrusUMLClassDiagram" name="deployment" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_FGfloCghEeCw56aD7XrQhw" type="2016" element="_7kc7YM__Ed-TP80eVS-2Rg" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGgMsCghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGgMsSghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGgMsighEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGgMsyghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FGlsQCghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FGmTUCghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_FGmTUSghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_FGmTUighEeCw56aD7XrQhw" y="5"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FGfloSghEeCw56aD7XrQhw" x="48" y="24" width="34" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_GQM_sCghEeCw56aD7XrQhw" type="2016" element="_UstOsM__Ed-TP80eVS-2Rg" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmwSghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmwighEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmwyghEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmxCghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQNmxSghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQNmxighEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_GQON0CghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_GQON0SghEeCw56aD7XrQhw" x="-20" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GQNmwCghEeCw56aD7XrQhw" x="145" y="24" width="34" height="20"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_JhfKQCghEeCw56aD7XrQhw" type="2016" element="_V5euUP8nEd-hWJO6cv3VJA" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfKQighEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxUCghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfxUSghEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxUighEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JhfxUyghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JhfxVCghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_JhfxVSghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_JhfxVighEeCw56aD7XrQhw" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JhfKQSghEeCw56aD7XrQhw" x="266" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LGTzACghEeCw56aD7XrQhw" type="2016" element="_o6ZisNCREd-hqYHBJe17_Q" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaECghEeCw56aD7XrQhw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGUaESghEeCw56aD7XrQhw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaEighEeCw56aD7XrQhw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGUaEyghEeCw56aD7XrQhw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LGUaFCghEeCw56aD7XrQhw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LGVBICghEeCw56aD7XrQhw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LGVBISghEeCw56aD7XrQhw" type="0">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LGVBIighEeCw56aD7XrQhw" x="9" y="40"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LGTzASghEeCw56aD7XrQhw" x="371" y="22"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_qQMKMCgjEeC5Ga5kAgjl0g" type="2008" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qQN_YCgjEeC5Ga5kAgjl0g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qQN_YSgjEeC5Ga5kAgjl0g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qQN_YigjEeC5Ga5kAgjl0g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qQN_YygjEeC5Ga5kAgjl0g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qQN_ZCgjEeC5Ga5kAgjl0g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qQOmcCgjEeC5Ga5kAgjl0g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qQlLwCgjEeC5Ga5kAgjl0g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1v4ucFZ5EeKxltxu9uR4dg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1v4ucVZ5EeKxltxu9uR4dg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1v5VgFZ5EeKxltxu9uR4dg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1v5VgVZ5EeKxltxu9uR4dg" key="PropStereoDisplay" value="FCM::Configuration.deploymentPlan,FCM::Configuration.configOptions"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1v5VglZ5EeKxltxu9uR4dg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_qQOmcSgjEeC5Ga5kAgjl0g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qQOmcigjEeC5Ga5kAgjl0g" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qQOmcygjEeC5Ga5kAgjl0g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qQOmdCgjEeC5Ga5kAgjl0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qQOmdSgjEeC5Ga5kAgjl0g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qQOmdigjEeC5Ga5kAgjl0g" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qQOmdygjEeC5Ga5kAgjl0g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qQOmeCgjEeC5Ga5kAgjl0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qQOmeSgjEeC5Ga5kAgjl0g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_qQOmeigjEeC5Ga5kAgjl0g" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qQOmeygjEeC5Ga5kAgjl0g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qQOmfCgjEeC5Ga5kAgjl0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qQOmfSgjEeC5Ga5kAgjl0g"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_qP52UCgjEeC5Ga5kAgjl0g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qQMKMSgjEeC5Ga5kAgjl0g" x="37" y="287" width="198" height="83"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_91n2kDOFEeCldqx_51Yicg" type="2007" fontName="Sans Serif" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91prwDOFEeCldqx_51Yicg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91prwTOFEeCldqx_51Yicg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91prwjOFEeCldqx_51Yicg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91prwzOFEeCldqx_51Yicg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_91qS0DOFEeCldqx_51Yicg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_91qS0TOFEeCldqx_51Yicg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_91qS0jOFEeCldqx_51Yicg" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_91qS0zOFEeCldqx_51Yicg" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_91qS1DOFEeCldqx_51Yicg"/>
+ </children>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_xBxwoDOFEeCldqx_51Yicg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_91n2kTOFEeCldqx_51Yicg" x="36" y="144" width="199" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xelfYD5wEeC-VMxjm_qUAg" type="2008" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xelfYT5wEeC-VMxjm_qUAg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xelfYj5wEeC-VMxjm_qUAg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xelfYz5wEeC-VMxjm_qUAg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xelfZD5wEeC-VMxjm_qUAg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xelfZT5wEeC-VMxjm_qUAg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xelfZj5wEeC-VMxjm_qUAg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xelfZz5wEeC-VMxjm_qUAg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7tmDAFZ5EeKxltxu9uR4dg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7tmDAVZ5EeKxltxu9uR4dg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7tmDAlZ5EeKxltxu9uR4dg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7tmDA1Z5EeKxltxu9uR4dg" key="PropStereoDisplay" value="FCM::Configuration.configOptions,FCM::Configuration.deploymentPlan"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7tmqEFZ5EeKxltxu9uR4dg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xelfbT5wEeC-VMxjm_qUAg" type="5029">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zNzaQD5wEeC-VMxjm_qUAg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_18AF4D5wEeC-VMxjm_qUAg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_18AF4T5wEeC-VMxjm_qUAg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_18As8D5wEeC-VMxjm_qUAg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_18As8T5wEeC-VMxjm_qUAg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_18As8j5wEeC-VMxjm_qUAg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xelfbj5wEeC-VMxjm_qUAg" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xelfbz5wEeC-VMxjm_qUAg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xelfcD5wEeC-VMxjm_qUAg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xelfcT5wEeC-VMxjm_qUAg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xelfcj5wEeC-VMxjm_qUAg" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xelfcz5wEeC-VMxjm_qUAg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xelfdD5wEeC-VMxjm_qUAg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xelfdT5wEeC-VMxjm_qUAg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xelfdj5wEeC-VMxjm_qUAg" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xelfdz5wEeC-VMxjm_qUAg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xelfeD5wEeC-VMxjm_qUAg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xelfeT5wEeC-VMxjm_qUAg"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_xekRQD5wEeC-VMxjm_qUAg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xemGcD5wEeC-VMxjm_qUAg" x="306" y="288" width="199" height="82"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_1GDBwLGREeCfWNndpgPDWA" type="2007" fontName="Sans Serif" fillColor="8047085" transparency="100" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOA4LGREeCfWNndpgPDWA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOA4bGREeCfWNndpgPDWA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOA4rGREeCfWNndpgPDWA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOA47GREeCfWNndpgPDWA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOn8LGREeCfWNndpgPDWA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOn8bGREeCfWNndpgPDWA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1GOn8rGREeCfWNndpgPDWA" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1GOn87GREeCfWNndpgPDWA" type="7016">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GOn9LGREeCfWNndpgPDWA"/>
+ </children>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_zwMLcLF4EeC9yscvWqW-eg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GDBwbGREeCfWNndpgPDWA" x="306" y="144" width="198" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gdmuADefEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdmuAjefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdmuAzefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdmuBDefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdmuBTefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gdnVEDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gdnVETefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gdnVEjefEeGPyrZ5I3hMlA" type="5038"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_gdeyMDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gdmuATefEeGPyrZ5I3hMlA" x="498" y="18" width="115" height="46"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_U1UegfcXEd-KM6l7lmIPkw"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_234GEDLiEd2RVeNawwNNzg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_V5euUP8nEd-hWJO6cv3VJA" type="CompositeStructure" name="Publisher" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_Wky8MP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KUP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KUf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KUv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KU_8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Wk0KVP8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Wk0KVf8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Wk0xYP8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Wk0xYf8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wk0xYv8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_eCjHMP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCjuQP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCjuQf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCkVUP8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCkVUf8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_eCkVUv8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_eCkVU_8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LFYVIFWlEeKOivupHOJ8Ew" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMMFWlEeKOivupHOJ8Ew" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMMVWlEeKOivupHOJ8Ew" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMMlWlEeKOivupHOJ8Ew" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMM1WlEeKOivupHOJ8Ew" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LlIMNFWlEeKOivupHOJ8Ew" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eCkVVP8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Dz37gFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_D7CTcFZXEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eCkVVf8nEd-hWJO6cv3VJA" x="-89"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_eCkVVv8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_eCkVV_8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eCjHMf8nEd-hWJO6cv3VJA" x="-10" y="36"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_fwpAsP8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpAsv8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpAs_8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpnwP8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpnwf8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fwpnwv8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fwpnw_8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Nkol0FWlEeKOivupHOJ8Ew" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zQFZ0EeK5f41mmHszag" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zQVZ0EeK5f41mmHszag" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort,FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zQlZ0EeK5f41mmHszag" key="PropStereoDisplay" value="FCM::Port.kind,FCM::Port.requiredInterface"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zQ1Z0EeK5f41mmHszag" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bb2zRFZ0EeK5f41mmHszag" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fwpnxP8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EVFyMFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EhugAFZXEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fwpnxf8nEd-hWJO6cv3VJA" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fwpnxv8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_fwpnx_8nEd-hWJO6cv3VJA" x="27" y="-18"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fwpAsf8nEd-hWJO6cv3VJA" x="117" y="36"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_IfjoETLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Wky8Mf8nEd-hWJO6cv3VJA" x="144" y="108" width="136" height="73"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_XKXHYP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXHYv8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXucP8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXucf8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXucv8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XKXuc_8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XKXudP8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_XKXudf8nEd-hWJO6cv3VJA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_XKXudv8nEd-hWJO6cv3VJA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XKXud_8nEd-hWJO6cv3VJA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_euJo8P8nEd-hWJO6cv3VJA" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euKQAP8nEd-hWJO6cv3VJA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euKQAf8nEd-hWJO6cv3VJA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euKQAv8nEd-hWJO6cv3VJA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euK3EP8nEd-hWJO6cv3VJA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_euK3Ef8nEd-hWJO6cv3VJA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euK3Ev8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JVivMFWlEeKOivupHOJ8Ew" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jve5MFWlEeKOivupHOJ8Ew" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQFWlEeKOivupHOJ8Ew" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQVWlEeKOivupHOJ8Ew" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQlWlEeKOivupHOJ8Ew" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQ1WlEeKOivupHOJ8Ew" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_euK3E_8nEd-hWJO6cv3VJA" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DRgOQFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DYoxAFZXEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_euK3FP8nEd-hWJO6cv3VJA" x="-89" y="-2"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_euK3Ff8nEd-hWJO6cv3VJA" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_euK3Fv8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_euJo8f8nEd-hWJO6cv3VJA" x="-10" y="27"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XKXHYf8nEd-hWJO6cv3VJA" x="144" y="18" width="136" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Gz7TMDehEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA4DehEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0CA4TehEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA4jehEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0CA4zehEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_G0CA5DehEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_G0Cn8DehEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_G0Cn8TehEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_GzyJQDehEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gz7TMTehEeGPyrZ5I3hMlA" x="342" y="18" width="344"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_V5euUf8nEd-hWJO6cv3VJA"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_etOZkDLaEd2qeKRLMdIx_A"/>
+ <edges xmi:type="notation:Connector" xmi:id="_XKqpYP8nEd-hWJO6cv3VJA" type="4015" source="_Wky8MP8nEd-hWJO6cv3VJA" target="_XKXHYP8nEd-hWJO6cv3VJA" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_XKrQcP8nEd-hWJO6cv3VJA" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_XKrQcf8nEd-hWJO6cv3VJA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_XKqpYf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="ProducerConsumer.uml#_34FjAPx3Ed6O2oOTPfeAMA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XKqpYv8nEd-hWJO6cv3VJA" points="[-19, -23, 140, 174]$[-159, -197, 0, 0]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_aJG_MDehEeGPyrZ5I3hMlA" type="4002" source="_Gz7TMDehEeGPyrZ5I3hMlA" target="_XKXHYP8nEd-hWJO6cv3VJA" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_aJG_MTehEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aJG_MjehEeGPyrZ5I3hMlA" points="[-12, -5, 80, 30]$[-82, -36, 10, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aJdkgDehEeGPyrZ5I3hMlA" id="(0.02823529411764706,0.4166666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aJeLkDehEeGPyrZ5I3hMlA" id="(0.9212598425196851,0.4909090909090909)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_0rwpYDefEeGPyrZ5I3hMlA" type="CompositeStructure" name="HWArchitecture" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_1w2CIDefEeGPyrZ5I3hMlA" type="2073" fontName="" fontHeight="10" fillColor="10011046" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pMTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pMjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pMzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1w2pNDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1w2pNTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HTZS4DegEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAM_QBMqEeK_iPOWsxJHwg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mAM_QRMqEeK_iPOWsxJHwg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmUBMqEeK_iPOWsxJHwg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmURMqEeK_iPOWsxJHwg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mANmUhMqEeK_iPOWsxJHwg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_1w2pNjefEeGPyrZ5I3hMlA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_1w2pNzefEeGPyrZ5I3hMlA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_4HLnYDefEeGPyrZ5I3hMlA" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOcDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOcTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOcjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOczefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4HMOdDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4HMOdTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_4HMOdjefEeGPyrZ5I3hMlA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UodTAFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UsmzMFZXEeKKZs15rvNNjA" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_4HMOdzefEeGPyrZ5I3hMlA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_4HMOeDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HMOeTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_4HAoQDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HLnYTefEeGPyrZ5I3hMlA" x="61" y="22" width="162"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_1w2pODefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2pOTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_tZvNQDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2CITefEeGPyrZ5I3hMlA" x="81" y="63" width="300" height="154"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7qMbIDefEeGPyrZ5I3hMlA" type="2072" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCMTefEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMjefEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCMzefEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCNDefEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7qNCNTefEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_85ECADefEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVYFZXEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVYVZXEeKKZs15rvNNjA" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVYlZXEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVY1ZXEeKKZs15rvNNjA" key="PropStereoDisplay" value="FCM::Target.targetArch,FCM::Target.usedOS"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_StOVZFZXEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7qNCNjefEeGPyrZ5I3hMlA" type="5124"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7qNCNzefEeGPyrZ5I3hMlA" visible="false" type="7072">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7qNCODefEeGPyrZ5I3hMlA" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qNCOTefEeGPyrZ5I3hMlA"/>
+ </children>
+ <element xmi:type="uml:Node" href="ProducerConsumer.uml#_zY9vMDLiEd2RVeNawwNNzg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qMbITefEeGPyrZ5I3hMlA" x="441" y="63" width="154" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_jhQ20DegEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ20jegEeGPyrZ5I3hMlA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ20zegEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ21DegEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ21TegEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ21jegEeGPyrZ5I3hMlA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jhQ21zegEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jhRd4DegEeGPyrZ5I3hMlA" type="5192"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_jhF3sDegEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jhQ20TegEeGPyrZ5I3hMlA" x="435" y="183" width="277"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_0rwpYTefEeGPyrZ5I3hMlA"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_v3fMgDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_ugb6IDegEeGPyrZ5I3hMlA" type="4002" source="_jhQ20DegEeGPyrZ5I3hMlA" target="_7qMbIDefEeGPyrZ5I3hMlA" routing="Rectilinear" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ugb6ITegEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ugb6IjegEeGPyrZ5I3hMlA" points="[-11, -6, 7, 38]$[-11, -26, 7, 18]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugs_4DegEeGPyrZ5I3hMlA" id="(0.33212996389891697,0.1)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ugs_4TegEeGPyrZ5I3hMlA" id="(0.4420289855072464,0.8266666666666667)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_HvdK0FZYEeKKZs15rvNNjA" type="CompositeStructure" name="System Push" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_U0B0YFZYEeKKZs15rvNNjA" type="2073" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U0CbcFZYEeKKZs15rvNNjA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U0CbcVZYEeKKZs15rvNNjA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U0DCgFZYEeKKZs15rvNNjA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U0DCgVZYEeKKZs15rvNNjA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_U0DCglZYEeKKZs15rvNNjA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U0DCg1ZYEeKKZs15rvNNjA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_U0DChFZYEeKKZs15rvNNjA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_U0DChVZYEeKKZs15rvNNjA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_Zgd44FZZEeKb1bjLi8P_oQ" type="3070" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zgg8MFZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Zgg8MVZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Zgg8MlZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZghjQFZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZghjQVZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZghjQlZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ZghjQ1ZZEeKb1bjLi8P_oQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dtKi0FZZEeKb1bjLi8P_oQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d00qAFZZEeKb1bjLi8P_oQ" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ZghjRFZZEeKb1bjLi8P_oQ" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ZghjRVZZEeKb1bjLi8P_oQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZghjRlZZEeKb1bjLi8P_oQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_kzTfEFZZEeKb1bjLi8P_oQ" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kzUGIFZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kzUGIVZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kzUGIlZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kzUGI1ZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kzUGJFZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kzUGJVZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nsJUcFZZEeKb1bjLi8P_oQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXswFZZEeKb1bjLi8P_oQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXswVZZEeKb1bjLi8P_oQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXswlZZEeKb1bjLi8P_oQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXsw1ZZEeKb1bjLi8P_oQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_oFXsxFZZEeKb1bjLi8P_oQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kzUGJlZZEeKb1bjLi8P_oQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qpl9AFZZEeKb1bjLi8P_oQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qw77IVZZEeKb1bjLi8P_oQ" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kzUGJ1ZZEeKb1bjLi8P_oQ" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_kzUGKFZZEeKb1bjLi8P_oQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kzUGKVZZEeKb1bjLi8P_oQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kzTfEVZZEeKb1bjLi8P_oQ" x="-10" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_iP8c4dCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zgef8FZZEeKb1bjLi8P_oQ" x="370" y="21" width="177" height="78"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_aKa00FZZEeKb1bjLi8P_oQ" type="3070" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aKbb4FZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aKbb4VZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aKbb4lZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aKbb41ZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aKbb5FZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aKbb5VZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_aKbb5lZZEeKb1bjLi8P_oQ" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cojEIFZZEeKb1bjLi8P_oQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cu9OIFZZEeKb1bjLi8P_oQ" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_aKcC8FZZEeKb1bjLi8P_oQ" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_aKcC8VZZEeKb1bjLi8P_oQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aKcC8lZZEeKb1bjLi8P_oQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_iJQToFZZEeKb1bjLi8P_oQ" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iJQ6sFZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iJQ6sVZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iJQ6slZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iJQ6s1ZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iJQ6tFZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iJQ6tVZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pe8u0FZZEeKb1bjLi8P_oQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHMFZZEeKb1bjLi8P_oQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHMVZZEeKb1bjLi8P_oQ" key="StereotypeList" value="MARTE::MARTE_DesignModel::GCM::FlowPort"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHMlZZEeKb1bjLi8P_oQ" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHM1ZZEeKb1bjLi8P_oQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p0rHNFZZEeKb1bjLi8P_oQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iJQ6tlZZEeKb1bjLi8P_oQ" type="5125">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qplV8FZZEeKb1bjLi8P_oQ" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qw77IFZZEeKb1bjLi8P_oQ" key="CustomAppearance_MaskValue" value="28"/>
+ </eAnnotations>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJQ6t1ZZEeKb1bjLi8P_oQ" x="-71" y="4"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_iJRhwFZZEeKb1bjLi8P_oQ" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_iJRhwVZZEeKb1bjLi8P_oQ" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="ProducerConsumer.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJQToVZZEeKb1bjLi8P_oQ" x="134" y="36"/>
+ </children>
+ <element xmi:type="uml:Property" href="ProducerConsumer.uml#_iP8c4tCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aKa00VZZEeKb1bjLi8P_oQ" x="37" y="21" width="144" height="78"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a6zv8FZZEeKb1bjLi8P_oQ" type="3097" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a60XAFZZEeKb1bjLi8P_oQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a60XAVZZEeKb1bjLi8P_oQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a60-EFZZEeKb1bjLi8P_oQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a60-EVZZEeKb1bjLi8P_oQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a60-ElZZEeKb1bjLi8P_oQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a60-E1ZZEeKb1bjLi8P_oQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a60-FFZZEeKb1bjLi8P_oQ" type="5150"/>
+ <element xmi:type="uml:Comment" href="ProducerConsumer.uml#_KOEwwDefEeGPyrZ5I3hMlA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a6zv8VZZEeKb1bjLi8P_oQ" x="244" y="129" width="290" height="55"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_U0DChlZYEeKKZs15rvNNjA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U0DCh1ZYEeKKZs15rvNNjA"/>
+ </children>
+ <element xmi:type="uml:Class" href="ProducerConsumer.uml#_iP8c4NCREd-hqYHBJe17_Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_U0B0YVZYEeKKZs15rvNNjA" x="36" y="27" width="604" height="226"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_HvdK0VZYEeKKZs15rvNNjA"/>
+ <element xmi:type="uml:Package" href="ProducerConsumer.uml#_XLQjUDLiEd2RVeNawwNNzg"/>
+ <edges xmi:type="notation:Connector" xmi:id="_wxMNYFZZEeKb1bjLi8P_oQ" type="4013" source="_iJQToFZZEeKb1bjLi8P_oQ" target="_kzTfEFZZEeKb1bjLi8P_oQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_wxNbgFZZEeKb1bjLi8P_oQ" type="6025">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wxNbgVZZEeKb1bjLi8P_oQ" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wxNbglZZEeKb1bjLi8P_oQ" visible="false" type="6050">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wxNbg1ZZEeKb1bjLi8P_oQ" y="-20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wxNbhFZZEeKb1bjLi8P_oQ" visible="false" type="6051">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wxNbhVZZEeKb1bjLi8P_oQ" y="20"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_wxNbhlZZEeKb1bjLi8P_oQ" visible="false" type="6052">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_wxNbh1ZZEeKb1bjLi8P_oQ" y="20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_wxMNYVZZEeKb1bjLi8P_oQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Connector" href="ProducerConsumer.uml#_iP8c49CREd-hqYHBJe17_Q"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_wxMNYlZZEeKb1bjLi8P_oQ" points="[10, 5, -179, 0]$[179, 0, -10, -5]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_Nr2l4FZaEeKb1bjLi8P_oQ" type="4002" source="_a6zv8FZZEeKb1bjLi8P_oQ" target="_wxMNYFZZEeKb1bjLi8P_oQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_Nr2l4VZaEeKb1bjLi8P_oQ" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Nr2l4lZaEeKb1bjLi8P_oQ" points="[-7, -6, 3, 62]$[-7, -68, 3, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NsRcoFZaEeKb1bjLi8P_oQ" id="(0.20689655172413793,0.10909090909090909)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NsRcoVZaEeKb1bjLi8P_oQ" id="(0.6071428571428571,0.7407407407407407)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.uml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.uml
new file mode 100644
index 00000000000..08f377275a1
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ProducerConsumer.uml
@@ -0,0 +1,457 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:GCM="http://www.eclipse.org/papyrus/GCM/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/Alloc/1 http://www.eclipse.org/papyrus/MARTE/1#//Alloc http://www.eclipse.org/papyrus/GCM/1 http://www.eclipse.org/papyrus/MARTE/1#//GCM">
+ <uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="ProducerConsumer">
+ <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packageImport xmi:id="_R8d6YP93Ed6628OhKk_dpg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/fifo.uml#_ePwqkHLmEd6R5tffIPrlPg"/>
+ </packageImport>
+ <packageImport xmi:id="_8KelgCgjEeC5Ga5kAgjl0g">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_TRACE/tracing.uml#_H-ZqYDKeEd-WprEKTCaiMA"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_LOqIEDLaEd2qeKRLMdIx_A" name="ComponentModel">
+ <packagedElement xmi:type="uml:Package" xmi:id="_tyiqsM__Ed-TP80eVS-2Rg" name="PullConsumer">
+ <ownedComment xmi:id="_-Hd2MDecEeGPyrZ5I3hMlA" annotatedElement="_tyiqsc__Ed-TP80eVS-2Rg">
+ <body>Variant of the consumper component that uses a &quot;pull style&quot;, i.e. actively demands whether new data is available. Since the component is active, it needs to have its own thread. This is realized by the combination of the lifecycle port with a container rule that intercepts the lifecycle operations and executes the activation operation in its own thread.
+Use the context menu to find out that the PullConsumer supports the &quot;runStartThread&quot; interceptor which intercepts the lifecycle port.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_0D64MDedEeGPyrZ5I3hMlA">
+ <annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <body>Part of the Qompass model library. Provides the specific port &quot;lc&quot; (short for lifecycle). The &quot;activate&quot; operation of this port is called by generated boot-code after instantiation and configuration of a component. The deactivation is called before disposing a component</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tyiqsc__Ed-TP80eVS-2Rg" clientDependency="_DHTiQDF7EeCpQdhNuFCtew" name="PullConsumer_impl">
+ <generalization xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_tyiqs8__Ed-TP80eVS-2Rg" name="" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
+ <interfaceRealization xmi:id="_DHTiQDF7EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_tyiqsc__Ed-TP80eVS-2Rg">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tyjRwc__Ed-TP80eVS-2Rg" name="activate" specification="_tyjRy8__Ed-TP80eVS-2Rg">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;wait for data on port p&quot; &lt;&lt; endl;
+for (int i = 0; i&lt;25; i++) {
+ if (p->hasData ()) {
+ ComponentModel::interfaces::PubData data = p->pull ();
+ cout &lt;&lt; &quot;received data: x = &quot; &lt;&lt; data.x &lt;&lt; &quot; y = &quot; &lt;&lt; data.y &lt;&lt; endl;
+ }
+ usleep (100*1000);
+}
+cout &lt;&lt; &quot;finished waiting&quot; &lt;&lt; endl;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_tyjRy8__Ed-TP80eVS-2Rg" name="activate" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
+ <ownedOperation xmi:id="_tyjRzM__Ed-TP80eVS-2Rg" name="deactivate"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_OGM88DLaEd2qeKRLMdIx_A" name="PushConsumer">
+ <ownedComment xmi:id="_XfnmsDecEeGPyrZ5I3hMlA" annotatedElement="_oqZNUDLaEd2qeKRLMdIx_A">
+ <body>Push variant of a consumer, i.e. the consumer is called whenever new data is availble. It is not itself active.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_gpptUDecEeGPyrZ5I3hMlA" annotatedElement="_4KiE8DLbEd2qeKRLMdIx_A">
+ <body>A MARTE flow port. The synchronisation between MARTE and FCM stereotype is automatic, yet it is possible to refine on FCM level, whether the port uses a push or pull style. In this case, the port uses a push style by setting the port kind to &quot;PushConsumer&quot;.</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_oqZNUDLaEd2qeKRLMdIx_A" clientDependency="_Z16ywDF8EeCpQdhNuFCtew _T7BgIAcsEeGYWLReZHFIwA" name="PushConsumer_impl">
+ <generalization xmi:id="_NItbAP94Ed6628OhKk_dpg">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_4KiE8DLbEd2qeKRLMdIx_A" name="p" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
+ <interfaceRealization xmi:id="_Z16ywDF8EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_oqZNUDLaEd2qeKRLMdIx_A">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <interfaceRealization xmi:id="_T7BgIAcsEeGYWLReZHFIwA" name="derived realization of D_Push_PubData" client="_oqZNUDLaEd2qeKRLMdIx_A" supplier="_lsBoMKwJEeCgusK7cm6qjQ" contract="_lsBoMKwJEeCgusK7cm6qjQ"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RoXdMP94Ed6628OhKk_dpg" name="activate" specification="_uOmgID15Ed-qiK1VZWszhA">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;initialization of push consumer&quot; &lt;&lt; endl;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qUSHYPdMEd-KM6l7lmIPkw" name="push" specification="_T7D8YAcsEeGYWLReZHFIwA">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;received data: x = &quot; &lt;&lt; data.x &lt;&lt; &quot; y = &quot; &lt;&lt; data.y &lt;&lt; endl;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_uOmgID15Ed-qiK1VZWszhA" name="activate" method="_RoXdMP94Ed6628OhKk_dpg"/>
+ <ownedOperation xmi:id="_uOtN0D15Ed-qiK1VZWszhA" name="deactivate"/>
+ <ownedOperation xmi:id="_T7D8YAcsEeGYWLReZHFIwA" name="push" method="_qUSHYPdMEd-KM6l7lmIPkw">
+ <ownedParameter xmi:id="_T7G_sAcsEeGYWLReZHFIwA" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_T7KDAAcsEeGYWLReZHFIwA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_T7KqEAcsEeGYWLReZHFIwA" value="1"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_Tp4n8DLaEd2qeKRLMdIx_A" name="interfaces">
+ <packagedElement xmi:type="uml:DataType" xmi:id="_wFJ3IP91Ed6Jt8e-UqrRdQ" name="PubData">
+ <ownedAttribute xmi:id="_yywF0P91Ed6Jt8e-UqrRdQ" name="y" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_zUgvEP91Ed6Jt8e-UqrRdQ" name="x" isUnique="false" aggregation="composite">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_etOZkDLaEd2qeKRLMdIx_A" name="Producer">
+ <ownedComment xmi:id="_GzyJQDehEeGPyrZ5I3hMlA">
+ <annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ <body>Let the producer instance execute by the main thread by realising the specific port &quot;start&quot;, inherited from CStart (part of the Qompass &quot;core&quot; model library).
+</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_IfjoETLbEd2qeKRLMdIx_A" clientDependency="_jkNdADF8EeCpQdhNuFCtew" name="Producer_impl">
+ <generalization xmi:id="_34FjAPx3Ed6O2oOTPfeAMA">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_DtWn4DLcEd2qeKRLMdIx_A" name="q" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
+ <interfaceRealization xmi:id="_jkNdADF8EeCpQdhNuFCtew" name="derived realization of IStart" client="_IfjoETLbEd2qeKRLMdIx_A">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yXNVoKF4Ed6FqJCjEUrkqQ" name="run" specification="_dH4RIKF4Ed6FqJCjEUrkqQ">
+ <language>C/C++</language>
+ <body>cout &lt;&lt; &quot;publish a value via port q;&quot; &lt;&lt; endl;
+ComponentModel::interfaces::PubData data;
+data.x = 2;
+data.y = 3;
+for (int i = 0; i&lt;20; i++) {
+ q->push (data);
+ cout &lt;&lt; &quot;.&quot; &lt;&lt; flush;
+ // wait 200ms
+ usleep (200*1000);
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_dH4RIKF4Ed6FqJCjEUrkqQ" name="run" method="_yXNVoKF4Ed6FqJCjEUrkqQ"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_XLQjUDLiEd2RVeNawwNNzg" name="System">
+ <packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="SystemPull_impl">
+ <ownedComment xmi:id="_JuaHYDbdEeGdqp2YT1LwWw" annotatedElement="_gV1cgDLiEd2RVeNawwNNzg">
+ <body>Pull consumer is executed by its own thread. This is specified via a container service (runStartThread)</body>
+ </ownedComment>
+ <ownedComment xmi:id="_lMxBQDeeEeGPyrZ5I3hMlA" annotatedElement="_efVI0E2rEeGl8qrc8BM7vA">
+ <body>Since producer and consumer call operations (the latter to actively retrieve data), the two ports would be incompatible without using a specific interaction component, in this case. a FIFO.
+Use the context menu on a selected connector to specify the interaction component.</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="con" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCT24G6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCUd8G6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_dCWTIG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_i-I7gDLiEd2RVeNawwNNzg" name="prod" visibility="public" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_esReUG6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_esSscG6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_esUhoG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_efVI0E2rEeGl8qrc8BM7vA" name="fifoconnector">
+ <end xmi:id="_efVv4E2rEeGl8qrc8BM7vA" partWithPort="_i-I7gDLiEd2RVeNawwNNzg" role="_DtWn4DLcEd2qeKRLMdIx_A">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efVv4k2rEeGl8qrc8BM7vA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_efVv4U2rEeGl8qrc8BM7vA" value="1"/>
+ </end>
+ <end xmi:id="_efWW8E2rEeGl8qrc8BM7vA" partWithPort="_gV1cgDLiEd2RVeNawwNNzg" role="_tyiqs8__Ed-TP80eVS-2Rg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efWW8k2rEeGl8qrc8BM7vA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_efWW8U2rEeGl8qrc8BM7vA" value="1"/>
+ </end>
+ </ownedConnector>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_iP8c4NCREd-hqYHBJe17_Q" name="SystemPush_impl">
+ <ownedComment xmi:id="_KOEwwDefEeGPyrZ5I3hMlA" annotatedElement="_iP8c49CREd-hqYHBJe17_Q">
+ <body>The push consumer provides the interface that the producer uses (requires), no specific connector is required</body>
+ </ownedComment>
+ <ownedAttribute xmi:id="_iP8c4dCREd-hqYHBJe17_Q" name="con" visibility="public" type="_oqZNUDLaEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d0HHQG6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d0HuUG6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_d0I8cG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_iP8c4tCREd-hqYHBJe17_Q" name="prod" visibility="public" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fbEeAG6JEeGqWMX2LwdLDw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fbFFEG6JEeGqWMX2LwdLDw" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_fbGTMG6JEeGqWMX2LwdLDw">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedConnector xmi:id="_iP8c49CREd-hqYHBJe17_Q" name="qpconnector">
+ <end xmi:id="_iP8c5NCREd-hqYHBJe17_Q" partWithPort="_iP8c4tCREd-hqYHBJe17_Q" role="_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <end xmi:id="_iP8c5dCREd-hqYHBJe17_Q" partWithPort="_iP8c4dCREd-hqYHBJe17_Q" role="_4KiE8DLbEd2qeKRLMdIx_A"/>
+ </ownedConnector>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_v3fMgDLiEd2RVeNawwNNzg" name="PlatformModel">
+ <ownedComment xmi:id="_jhF3sDegEeGPyrZ5I3hMlA" annotatedElement="_zY9vMDLiEd2RVeNawwNNzg">
+ <body>Simple single node configuration. TargetOS is set to Linux, but will work on other OS (supporting POSIX threads)</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Node" xmi:id="_zY9vMDLiEd2RVeNawwNNzg" name="MonoNode"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_tZvNQDefEeGPyrZ5I3hMlA" name="Platform">
+ <ownedAttribute xmi:id="_4HAoQDefEeGPyrZ5I3hMlA" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6WEg0DefEeGPyrZ5I3hMlA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6WFu8DefEeGPyrZ5I3hMlA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_6WHkIDefEeGPyrZ5I3hMlA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_YxI8IDegEeGPyrZ5I3hMlA" name="HWArchitecturePlatform">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_GQ1ekKwHEeCQX8uv_p0Q4A" name="monoNode" classifier="_zY9vMDLiEd2RVeNawwNNzg"/>
+ </packagedElement>
+ <profileApplication xmi:id="_aOAnkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_aen2cKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_234GEDLiEd2RVeNawwNNzg" name="DeploymentPlans">
+ <ownedComment xmi:id="_VMRFgDOJEeC7y-fR3OSnFw" annotatedElement="_qP52UCgjEeC5Ga5kAgjl0g">
+ <body>This configuration requires the installation of the OTF trace library.&lt;br /></body>
+ </ownedComment>
+ <ownedComment xmi:id="_gdeyMDefEeGPyrZ5I3hMlA">
+ <body>Cross references to diagrams</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_qP52UCgjEeC5Ga5kAgjl0g" name="withTracePush"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_xBxwoDOFEeCldqx_51Yicg" name="monoPush">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB3QMDOFEeCldqx_51Yicg" clientDependency="_cmk8EKwIEeCza-cLDL1uzQ _oZjTgE0tEeG4IqgA7gSE6w _wqyJ4E0tEeG4IqgA7gSE6w" name="mainInstance" classifier="_iP8c4NCREd-hqYHBJe17_Q">
+ <slot xmi:id="_xB6TgDOFEeCldqx_51Yicg" definingFeature="_iP8c4dCREd-hqYHBJe17_Q">
+ <value xmi:type="uml:InstanceValue" xmi:id="_xB66kDOFEeCldqx_51Yicg" instance="_xB5scDOFEeCldqx_51Yicg"/>
+ </slot>
+ <slot xmi:id="_xB8IsDOFEeCldqx_51Yicg" definingFeature="_iP8c4tCREd-hqYHBJe17_Q">
+ <value xmi:type="uml:InstanceValue" xmi:id="_xB8IsTOFEeCldqx_51Yicg" instance="_xB7hoDOFEeCldqx_51Yicg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB5scDOFEeCldqx_51Yicg" name="mainInstance.con" classifier="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB7hoDOFEeCldqx_51Yicg" name="mainInstance.prod" classifier="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_cmk8EKwIEeCza-cLDL1uzQ" name="allocate to monoNode" client="_xB3QMDOFEeCldqx_51Yicg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_oZjTgE0tEeG4IqgA7gSE6w" name="allocate to monoNode" client="_xB3QMDOFEeCldqx_51Yicg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_wqyJ4E0tEeG4IqgA7gSE6w" name="allocate to monoNode" client="_xB3QMDOFEeCldqx_51Yicg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_xekRQD5wEeC-VMxjm_qUAg" name="withTracePull"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_zwMLcLF4EeC9yscvWqW-eg" name="monoPull">
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwQc4bF4EeC9yscvWqW-eg" clientDependency="_DQUvILGSEeCfWNndpgPDWA _vcX2AE0tEeG4IqgA7gSE6w" name="mainInstance" classifier="_bYJagDLiEd2RVeNawwNNzg">
+ <slot xmi:id="_zwY_wLF4EeC9yscvWqW-eg" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_zwZm0LF4EeC9yscvWqW-eg" instance="_zwUuUbF4EeC9yscvWqW-eg"/>
+ </slot>
+ <slot xmi:id="_zwaN4LF4EeC9yscvWqW-eg" definingFeature="_i-I7gDLiEd2RVeNawwNNzg">
+ <value xmi:type="uml:InstanceValue" xmi:id="_zwaN4bF4EeC9yscvWqW-eg" instance="_zwZm0bF4EeC9yscvWqW-eg"/>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwUHQLF4EeC9yscvWqW-eg" name="mainInstance.fifoconnector">
+ <classifier xmi:type="uml:Class" href="pathmap://QML_CORE/fifo.uml#_Y1jF8HPpEd6R5tffIPrlPg"/>
+ <slot xmi:id="_zwUHQbF4EeC9yscvWqW-eg">
+ <definingFeature xmi:type="uml:Property" href="pathmap://QML_CORE/fifo.uml#_XDRnoHUIEd6R5tffIPrlPg"/>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_zwUuULF4EeC9yscvWqW-eg" name="value for m_size" value="30">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </value>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwUuUbF4EeC9yscvWqW-eg" name="mainInstance.con">
+ <classifier xmi:type="uml:Class" href="#_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <classifier xmi:type="uml:Class" href="pathmap://QML_CORE//core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
+ <slot xmi:id="_zwVVYLF4EeC9yscvWqW-eg">
+ <definingFeature xmi:type="uml:Property" href="pathmap://QML_CORE//core.uml#_rVfYoMGJEd-Mveea1W_olA"/>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_zwV8cLF4EeC9yscvWqW-eg" name="value for priority">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </value>
+ </slot>
+ </packagedElement>
+ <packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwZm0bF4EeC9yscvWqW-eg" name="mainInstance.prod" classifier="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_DQUvILGSEeCfWNndpgPDWA" name="allocate to monoNode" client="_zwQc4bF4EeC9yscvWqW-eg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ <packagedElement xmi:type="uml:Abstraction" xmi:id="_vcX2AE0tEeG4IqgA7gSE6w" name="allocate to monoNode" client="_zwQc4bF4EeC9yscvWqW-eg" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr9WwKwJEeCgusK7cm6qjQ" name="derivedInterfaces">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr_L8KwJEeCgusK7cm6qjQ" name="ProducerConsumer">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lr_zAKwJEeCgusK7cm6qjQ" name="ComponentModel">
+ <packagedElement xmi:type="uml:Package" xmi:id="_lsBBIKwJEeCgusK7cm6qjQ" name="interfaces">
+ <packagedElement xmi:type="uml:Interface" xmi:id="_lsBoMKwJEeCgusK7cm6qjQ" name="D_Push_PubData">
+ <ownedOperation xmi:id="_lsKLEKwJEeCgusK7cm6qjQ" name="push">
+ <ownedParameter xmi:id="_lsMAQKwJEeCgusK7cm6qjQ" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_AaULULGSEeCfWNndpgPDWA" name="D_PullConsumer_PubData">
+ <ownedOperation xmi:id="_Aa-SoLGSEeCfWNndpgPDWA" name="pull">
+ <ownedParameter xmi:id="_AbXUMLGSEeCfWNndpgPDWA" name="ret" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_AbZwcLGSEeCfWNndpgPDWA" name="hasData">
+ <ownedParameter xmi:id="_Aba-kLGSEeCfWNndpgPDWA" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_O6TiIjLUEd26WNosUASSSw">
+ <eAnnotations xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
+ <eAnnotations xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ <profileApplication xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
+ <eAnnotations xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_sfyAwEbjEd-l4NeVOJZDkA">
+ <eAnnotations xmi:id="_siunEEbjEd-l4NeVOJZDkA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//GCM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_SPVg0KmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_Se6N4KmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_b9oZ5rG3Ed-tmN4hwNCxXQ"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_3VS0wAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_SfbyUKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_SuJjwKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_ResourceCore"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_-1fcUBJdEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_f2hIMKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_gEtVMKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Concurrency"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_A_vtYBJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_popJkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_p1PbIKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//HLAM"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_yzqusKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_zCWq8KmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Brokering"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_Cf874BJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_6xYMIKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:id="_6_6-cKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//SW_Interaction"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_EIfnABJeEdy3Td9UhuLFPg"/>
+ </profileApplication>
+ <profileApplication xmi:id="_tZuBwE0tEeG4IqgA7gSE6w">
+ <eAnnotations xmi:id="_tisXkE0tEeG4IqgA7gSE6w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ </profileApplication>
+ </uml:Model>
+ <FCM:DerivedElement xmi:id="_B9o7sP6yEd6Ie_kieu_3CQ" base_Element="_dH4RIKF4Ed6FqJCjEUrkqQ">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:Port xmi:id="_GofhQP6yEd6Ie_kieu_3CQ" base_Port="_4KiE8DLbEd2qeKRLMdIx_A">
+ <kind href="pathmap://QML_CORE/core.uml#_pE6GUFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:Port xmi:id="_IWQqoP6yEd6Ie_kieu_3CQ" base_Port="_DtWn4DLcEd2qeKRLMdIx_A">
+ <kind href="pathmap://QML_CORE/core.uml#_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <FCM:DerivedElement xmi:id="_RwGb8P6_Ed6Zw96O-tCw7A"/>
+ <FCM:DerivedElement xmi:id="_RxVyEP6_Ed6Zw96O-tCw7A"/>
+ <Cpp:CppInclude xmi:id="_7SAnAP76Ed6Zw96O-tCw7A" body="#include &lt;unistd.h>&#xA;#include &lt;iostream>&#xA;using namespace std;" base_class="_IfjoETLbEd2qeKRLMdIx_A"/>
+ <Cpp:CppInclude xmi:id="_Sa4nEP77Ed6Zw96O-tCw7A" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_oqZNUDLaEd2qeKRLMdIx_A"/>
+ <FCM:DerivedElement xmi:id="_RoIMoP94Ed6628OhKk_dpg"/>
+ <FCM:DerivedElement xmi:id="_IFlIEARJEd--t-uhRn9OBA"/>
+ <FCM:ContainerRule xmi:id="_b-TmAARJEd--t-uhRn9OBA">
+ <portSet href="pathmap://QML_CORE/core.uml#__SL-kNtxEd6nqsBVkgJEEA"/>
+ </FCM:ContainerRule>
+ <FCM:DerivedElement xmi:id="_bmwhUARMEd-OidZzGKCpzg"/>
+ <FCM:DerivedElement xmi:id="_xjNC4ATuEd-Zc_RSu20WjA"/>
+ <FCM:DerivedElement xmi:id="_LZoQ4AVIEd-rcKh6R_xjRQ"/>
+ <FCM:DerivedElement xmi:id="_oMpYkAWxEd-jrvNV_WQOlA"/>
+ <FCM:DerivedElement xmi:id="_Fd6d0AnREd-co_m_wv4b6A"/>
+ <FCM:DerivedElement xmi:id="_uLARMBGVEd-rfYlCjUOxJQ"/>
+ <FCM:DerivedElement xmi:id="_qdjxQBGkEd-Jq_XWT8Mhpg"/>
+ <FCM:DerivedElement xmi:id="_VOzfEBGlEd-Jq_XWT8Mhpg"/>
+ <FCM:DerivedElement xmi:id="_N8BrMBI4Ed-3zOZ0RGapGA"/>
+ <FCM:DerivedElement xmi:id="_jIS30BI8Ed-XjYZ05V-9-Q"/>
+ <FCM:DerivedElement xmi:id="_E5UhUBJIEd-XjYZ05V-9-Q"/>
+ <FCM:DerivedElement xmi:id="_THoRwBJWEd-QgZm_R1AKbA"/>
+ <FCM:DerivedElement xmi:id="_z0CVcBQ2Ed-_dI0JopJMvQ"/>
+ <FCM:DerivedElement xmi:id="_Ke_UsBb7Ed-u0pMEAnvpEQ"/>
+ <FCM:DerivedElement xmi:id="_uOkD4D15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_uOqKgD15Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_uOz7gD15Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppVisibility xmi:id="_0VnhsD15Ed-qiK1VZWszhA" value="public" base_generalization="_NItbAP94Ed6628OhKk_dpg"/>
+ <FCM:DerivedElement xmi:id="_a4LokD16Ed-qiK1VZWszhA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_a4RvMD16Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_a4VZkD16Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_cdXBMD17Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_cdaEgD17Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_C3YKUEbjEd-l4NeVOJZDkA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_C3pQEEbjEd-l4NeVOJZDkA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
+ <FCM:DerivedElement xmi:id="_igKiENAAEd-TP80eVS-2Rg" base_Element="_tyjRy8__Ed-TP80eVS-2Rg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_igVhMNAAEd-TP80eVS-2Rg" base_Element="_tyjRzM__Ed-TP80eVS-2Rg">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppInclude xmi:id="_11OtwPcaEd-KM6l7lmIPkw" body="#include &lt;unistd.h>&#xA;#include &lt;iostream>&#xA;using namespace std;" base_class="_tyiqsc__Ed-TP80eVS-2Rg"/>
+ <FCM:Configuration xmi:id="_qQdP8CgjEeC5Ga5kAgjl0g" base_Class="_qP52UCgjEeC5Ga5kAgjl0g" deploymentPlan="_xB2CEDOFEeCldqx_51Yicg">
+ <configOptions href="pathmap://QML_CORE/core.uml#_u6LqoH7eEd-FNNgSS03RxQ"/>
+ </FCM:Configuration>
+ <FCM:Target xmi:id="_LD_uICr7EeCfcI_SvPT4lw" base_Node="_zY9vMDLiEd2RVeNawwNNzg">
+ <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ </FCM:Target>
+ <FCM:DeploymentPlan xmi:id="_xB2CEDOFEeCldqx_51Yicg" mainInstance="_xB3QMDOFEeCldqx_51Yicg" base_Package="_xBxwoDOFEeCldqx_51Yicg"/>
+ <FCM:Configuration xmi:id="_zNf4QD5wEeC-VMxjm_qUAg" base_Class="_xekRQD5wEeC-VMxjm_qUAg" deploymentPlan="_zwQc4LF4EeC9yscvWqW-eg">
+ <configOptions href="pathmap://QML_CORE/core.uml#_u6LqoH7eEd-FNNgSS03RxQ"/>
+ </FCM:Configuration>
+ <GCM:FlowPort xmi:id="_DwpFMJZ7EeCiU5xXzp1cKQ" direction="in" base_Port="_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <GCM:FlowPort xmi:id="_NWXCQJZ7EeCiU5xXzp1cKQ" direction="in" base_Port="_tyiqs8__Ed-TP80eVS-2Rg"/>
+ <FCM:Port xmi:id="_tyjRzc__Ed-TP80eVS-2Rg" base_Port="_tyiqs8__Ed-TP80eVS-2Rg">
+ <kind href="pathmap://QML_CORE/core.uml#_x5mL4FRxEd6GqrP6fkWBoQ"/>
+ </FCM:Port>
+ <GCM:FlowPort xmi:id="_ow3PkJZ7EeCiU5xXzp1cKQ" direction="out" base_Port="_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <FCM:DerivedElement xmi:id="_lsJkAKwJEeCgusK7cm6qjQ" base_Element="_lsBoMKwJEeCgusK7cm6qjQ" source="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ <FCM:DeploymentPlan xmi:id="_zwQc4LF4EeC9yscvWqW-eg" mainInstance="_zwQc4bF4EeC9yscvWqW-eg" base_Package="_zwMLcLF4EeC9yscvWqW-eg"/>
+ <FCM:DerivedElement xmi:id="_AawQMLGSEeCfWNndpgPDWA" base_Element="_AaULULGSEeCfWNndpgPDWA" source="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ <FCM:DerivedElement xmi:id="_T7RXwAcsEeGYWLReZHFIwA" base_Element="_T7D8YAcsEeGYWLReZHFIwA" source="_lsKLEKwJEeCgusK7cm6qjQ"/>
+ <Alloc:Allocate xmi:id="_vccHcE0tEeG4IqgA7gSE6w" base_Abstraction="_vcX2AE0tEeG4IqgA7gSE6w"/>
+ <Alloc:Allocate xmi:id="_wq1NME0tEeG4IqgA7gSE6w" base_Abstraction="_wqyJ4E0tEeG4IqgA7gSE6w"/>
+ <FCM:Connector xmi:id="_iADdkE2rEeGl8qrc8BM7vA" base_Connector="_efVI0E2rEeGl8qrc8BM7vA">
+ <ic href="pathmap://QML_CORE/fifo.uml#_xQ_ccHUuEd6R5tffIPrlPg"/>
+ </FCM:Connector>
+ <FCM:RuleApplication xmi:id="_FeS3AF7zEeGA7qTe7UD05A" base_Class="_tyiqsc__Ed-TP80eVS-2Rg">
+ <containerRule href="pathmap://QML_CORE/core.uml#_3Jq5MARLEd-OidZzGKCpzg"/>
+ <containerRule href="pathmap://QML_TRACE/tracing.uml#_ISo6gLdwEd-CtfrGQre34Q"/>
+ <propagateRule>false</propagateRule>
+ <propagateRule>false</propagateRule>
+ </FCM:RuleApplication>
+ <FCM:RuleApplication xmi:id="_vu8KkG6IEeGqWMX2LwdLDw" base_Class="_oqZNUDLaEd2qeKRLMdIx_A">
+ <containerRule href="pathmap://QML_TRACE/tracing.uml#_ISo6gLdwEd-CtfrGQre34Q"/>
+ <propagateRule>false</propagateRule>
+ </FCM:RuleApplication>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.di b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.di
new file mode 100644
index 00000000000..606e074c54d
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.di
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="ASCII"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi" xmlns:history="http://www.eclipse.org/papyrus/0.7.0/controlmode">
+ <di:SashWindowsMngr xmi:id="_m5icIOxGEd-2rr_yAeKkjQ">
+ <pageList xmi:id="_m5icIexGEd-2rr_yAeKkjQ">
+ <availablePage xmi:id="_m5icIuxGEd-2rr_yAeKkjQ">
+ <emfPageIdentifier href="tracing.notation#_U-SDoIKfEd-xPu-WdpUyIQ"/>
+ </availablePage>
+ <availablePage xmi:id="_m5icI-xGEd-2rr_yAeKkjQ">
+ <emfPageIdentifier href="tracing.notation#_o5H2cJagEd-kUIqFByffIQ"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="tracing.notation#_WYtQ8KbsEeCMd5eKvetORw"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="tracing.notation#_cL_W0PUPEeCn1-FCrfecFg"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="tracing.notation#_noMIQPxWEeGOK9t90vpALA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="tracing.notation#_PCJVYCmiEeKp-eCvZDLsaw"/>
+ </availablePage>
+ </pageList>
+ <sashModel xmi:id="_m5icJOxGEd-2rr_yAeKkjQ" currentSelection="_m5jDMOxGEd-2rr_yAeKkjQ">
+ <windows xmi:id="_m5icJexGEd-2rr_yAeKkjQ">
+ <children xsi:type="di:TabFolder" xmi:id="_m5jDMOxGEd-2rr_yAeKkjQ">
+ <children xmi:id="_m5jDMexGEd-2rr_yAeKkjQ">
+ <emfPageIdentifier href="tracing.notation#_U-SDoIKfEd-xPu-WdpUyIQ"/>
+ </children>
+ <children xmi:id="_m5jDMuxGEd-2rr_yAeKkjQ">
+ <emfPageIdentifier href="tracing.notation#_o5H2cJagEd-kUIqFByffIQ"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="tracing.notation#_WYtQ8KbsEeCMd5eKvetORw"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="tracing.notation#_cL_W0PUPEeCn1-FCrfecFg"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="tracing.notation#_noMIQPxWEeGOK9t90vpALA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="tracing.notation#_PCJVYCmiEeKp-eCvZDLsaw"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+ </di:SashWindowsMngr>
+ <history:ControledResource xmi:id="_m5jDM-xGEd-2rr_yAeKkjQ"/>
+ <history:ControledResource xmi:id="_m5jDNOxGEd-2rr_yAeKkjQ"/>
+ <history:ControledResource xmi:id="_m5jDNexGEd-2rr_yAeKkjQ"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.notation b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.notation
new file mode 100644
index 00000000000..bea3f251dce
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.notation
@@ -0,0 +1,1078 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <notation:Diagram xmi:id="_U-SDoIKfEd-xPu-WdpUyIQ" type="CompositeStructure" name="OTF composition" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_jKzMsIKfEd-xPu-WdpUyIQ" type="2073" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jKzzwIKfEd-xPu-WdpUyIQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jKzzwYKfEd-xPu-WdpUyIQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jKzzwoKfEd-xPu-WdpUyIQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jK0a0IKfEd-xPu-WdpUyIQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jK0a0YKfEd-xPu-WdpUyIQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jK0a0oKfEd-xPu-WdpUyIQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_plj5oKbnEeC0_qP7CUZIiQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KvrVIKboEeC0_qP7CUZIiQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KvrVIaboEeC0_qP7CUZIiQ" key="StereotypeList" value="FCM::UseInstanceConfigurator"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Kvr8MKboEeC0_qP7CUZIiQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Kvr8MaboEeC0_qP7CUZIiQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Kvr8MqboEeC0_qP7CUZIiQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jK0a04KfEd-xPu-WdpUyIQ" type="5156">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fyT24KbnEeC0_qP7CUZIiQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iaFxcKbnEeC0_qP7CUZIiQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iaFxcabnEeC0_qP7CUZIiQ" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iaFxcqbnEeC0_qP7CUZIiQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iaFxc6bnEeC0_qP7CUZIiQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_iaFxdKbnEeC0_qP7CUZIiQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_jK0a1IKfEd-xPu-WdpUyIQ" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_rV9bULniEeCxXoyQxQ47PQ" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rV-CYLniEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rV-pcLniEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rV-pcbniEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rV-pcrniEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rV-pc7niEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rV-pdLniEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rV-pdbniEeCxXoyQxQ47PQ" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rV-pdrniEeCxXoyQxQ47PQ" type="7077">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rV-pd7niEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Property" href="tracing.uml#_plSuEF23Ed-12d_h0i1xhQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rV9bUbniEeCxXoyQxQ47PQ" x="26" y="5" width="150"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jK0a1YKfEd-xPu-WdpUyIQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_aF1w4DKeEd-WprEKTCaiMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jKzMsYKfEd-xPu-WdpUyIQ" x="126" y="126" width="289" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__tMDsPZREd-o7NjgdW2_VA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__tXC0PZREd-o7NjgdW2_VA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__tXC0fZREd-o7NjgdW2_VA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__tXC0vZREd-o7NjgdW2_VA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__tXp4PZREd-o7NjgdW2_VA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__tXp4fZREd-o7NjgdW2_VA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__tXp4vZREd-o7NjgdW2_VA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-pwCgCheEeC5Ga5kAgjl0g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geSGsNCuEeGbAP2dj5QUzg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geSGsdCuEeGbAP2dj5QUzg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geSGstCuEeGbAP2dj5QUzg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geSGs9CuEeGbAP2dj5QUzg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geSGtNCuEeGbAP2dj5QUzg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__tXp4_ZREd-o7NjgdW2_VA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__tXp5PZREd-o7NjgdW2_VA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__tXp5fZREd-o7NjgdW2_VA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_UfVIkCVHEeCPS8GFKAaKxw" type="3069" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfVvoCVHEeCPS8GFKAaKxw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfWWsCVHEeCPS8GFKAaKxw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfWWsSVHEeCPS8GFKAaKxw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfWWsiVHEeCPS8GFKAaKxw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UfWWsyVHEeCPS8GFKAaKxw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UfWWtCVHEeCPS8GFKAaKxw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfWWtSVHEeCPS8GFKAaKxw" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfWWtiVHEeCPS8GFKAaKxw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_UfW9wCVHEeCPS8GFKAaKxw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UfW9wSVHEeCPS8GFKAaKxw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UfVIkSVHEeCPS8GFKAaKxw" x="-10" y="54"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_apuYoDNwEd-1k-POY2IaLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__tMDsfZREd-o7NjgdW2_VA" x="540" y="126" width="199" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_SrfzcCVHEeCPS8GFKAaKxw" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SrhBkCVHEeCPS8GFKAaKxw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SrhBkSVHEeCPS8GFKAaKxw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SrhBkiVHEeCPS8GFKAaKxw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SrhBkyVHEeCPS8GFKAaKxw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SrhBlCVHEeCPS8GFKAaKxw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SrhBlSVHEeCPS8GFKAaKxw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_SrhBliVHEeCPS8GFKAaKxw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_SrhBlyVHEeCPS8GFKAaKxw" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SrhBmCVHEeCPS8GFKAaKxw"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SrfzcSVHEeCPS8GFKAaKxw" x="540" y="27" width="199"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ap2xEKAdEeCF0uoVQbVQRg" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ap4mQKAdEeCF0uoVQbVQRg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ap4mQaAdEeCF0uoVQbVQRg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ap5NUKAdEeCF0uoVQbVQRg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ap5NUaAdEeCF0uoVQbVQRg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ap5NUqAdEeCF0uoVQbVQRg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ap5NU6AdEeCF0uoVQbVQRg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JvqrYKAeEeCF0uoVQbVQRg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geWYINCuEeGbAP2dj5QUzg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geWYIdCuEeGbAP2dj5QUzg" key="StereotypeList" value=",FCM::UseInstanceConfigurator"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geWYItCuEeGbAP2dj5QUzg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geWYI9CuEeGbAP2dj5QUzg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_geWYJNCuEeGbAP2dj5QUzg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ap5NVKAdEeCF0uoVQbVQRg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ap50YKAdEeCF0uoVQbVQRg" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ap50YaAdEeCF0uoVQbVQRg"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_aoSDwKAdEeCF0uoVQbVQRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ap2xEaAdEeCF0uoVQbVQRg" x="126" y="288" width="289" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_YUql4KAeEeCF0uoVQbVQRg" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YUrM8KAeEeCF0uoVQbVQRg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YUrM8aAeEeCF0uoVQbVQRg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YUr0AKAeEeCF0uoVQbVQRg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YUr0AaAeEeCF0uoVQbVQRg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YUr0AqAeEeCF0uoVQbVQRg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_YUr0A6AeEeCF0uoVQbVQRg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_YUr0BKAeEeCF0uoVQbVQRg" type="5192"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_YUcjcKAeEeCF0uoVQbVQRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YUql4aAeEeCF0uoVQbVQRg" x="486" y="333" width="253"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_bctDoLniEeCxXoyQxQ47PQ" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bctDorniEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bctDo7niEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bctqsLniEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bctqsbniEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bctqsrniEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bctqs7niEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_bctqtLniEeCxXoyQxQ47PQ" type="5192"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_bb4kQLniEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bctDobniEeCxXoyQxQ47PQ" x="486" y="252" width="253"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_Sf0aQDaUEeKkY-29HX5sMQ" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Sf4rsDaUEeKkY-29HX5sMQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Sf5SwDaUEeKkY-29HX5sMQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Sf5SwTaUEeKkY-29HX5sMQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Sf550DaUEeKkY-29HX5sMQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Sf550TaUEeKkY-29HX5sMQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Sf550jaUEeKkY-29HX5sMQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Sf6g4DaUEeKkY-29HX5sMQ" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Sf6g4TaUEeKkY-29HX5sMQ" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Sf6g4jaUEeKkY-29HX5sMQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sf6g4zaUEeKkY-29HX5sMQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_MM6RwDaUEeKkY-29HX5sMQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Sf0aQTaUEeKkY-29HX5sMQ" x="126" y="18" width="288" height="73"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_U-SDoYKfEd-xPu-WdpUyIQ"/>
+ <element xmi:type="uml:Package" href="tracing.uml#_1rsK8PwkEeGWn-a9PUOYcA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_Tbu9kCVHEeCPS8GFKAaKxw" type="4015" source="__tMDsPZREd-o7NjgdW2_VA" target="_SrfzcCVHEeCPS8GFKAaKxw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_TbvkoCVHEeCPS8GFKAaKxw" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TbwLsCVHEeCPS8GFKAaKxw" x="-9" y="-55"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_Tbu9kSVHEeCPS8GFKAaKxw" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="tracing.uml#_9zJj0DguEd-9wq2wHPy3lw"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Tbu9kiVHEeCPS8GFKAaKxw" points="[-63, 22, 168, -57]$[-200, 68, 31, -11]"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_nSj-AKAdEeCF0uoVQbVQRg" type="4015" source="_ap2xEKAdEeCF0uoVQbVQRg" target="_jKzMsIKfEd-xPu-WdpUyIQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_nSlzMKAdEeCF0uoVQbVQRg" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nSlzMaAdEeCF0uoVQbVQRg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_nSj-AaAdEeCF0uoVQbVQRg" fontName="" fontHeight="10"/>
+ <element xmi:type="uml:Generalization" href="tracing.uml#_nQ6YMKAdEeCF0uoVQbVQRg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nSj-AqAdEeCF0uoVQbVQRg" points="[1, -9, 0, 71]$[3, -65, 2, 15]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nTTk4KAdEeCF0uoVQbVQRg" id="(0.5,0.10588235294117647)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nTWBIKAdEeCF0uoVQbVQRg" id="(0.5017301038062284,0.981651376146789)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_SC9GALniEeCxXoyQxQ47PQ" type="4002" source="_YUql4KAeEeCF0uoVQbVQRg" target="_ap2xEKAdEeCF0uoVQbVQRg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_SC9GAbniEeCxXoyQxQ47PQ" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SC9GArniEeCxXoyQxQ47PQ" points="[-43, -14, 37, 11]$[-70, -17, 10, 8]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SDQoALniEeCxXoyQxQ47PQ" id="(0.0,0.5666666666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SDQoAbniEeCxXoyQxQ47PQ" id="(0.8728813559322034,0.9058823529411765)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_KOsDALnjEeCxXoyQxQ47PQ" type="4002" source="_bctDoLniEeCxXoyQxQ47PQ" target="_jKzMsIKfEd-xPu-WdpUyIQ" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_KOsDAbnjEeCxXoyQxQ47PQ" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KOsDArnjEeCxXoyQxQ47PQ" points="[-18, -15, 83, 67]$[-71, -78, 30, 4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KO9IwLnjEeCxXoyQxQ47PQ" id="(0.07003891050583658,0.45)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KO9v0LnjEeCxXoyQxQ47PQ" id="(0.9,0.6513761467889908)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_We5e8DaUEeKkY-29HX5sMQ" type="4015" source="_jKzMsIKfEd-xPu-WdpUyIQ" target="_Sf0aQDaUEeKkY-29HX5sMQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_We77MDaUEeKkY-29HX5sMQ" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_We77MTaUEeKkY-29HX5sMQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_We5e8TaUEeKkY-29HX5sMQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="tracing.uml#_WdRuUDaUEeKkY-29HX5sMQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_We5e8jaUEeKkY-29HX5sMQ" points="[-1, -11, 0, 49]$[-1, -46, 0, 14]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WfoewDaUEeKkY-29HX5sMQ" id="(0.5017301038062284,0.10091743119266056)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WfoewTaUEeKkY-29HX5sMQ" id="(0.5,0.8082191780821918)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_o5H2cJagEd-kUIqFByffIQ" type="PapyrusUMLClassDiagram" name="ExternTypes" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_s6A5AJagEd-kUIqFByffIQ" type="2007" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s6BgEJagEd-kUIqFByffIQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s6BgEZagEd-kUIqFByffIQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s6BgEpagEd-kUIqFByffIQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s6BgE5agEd-kUIqFByffIQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_s6BgFJagEd-kUIqFByffIQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_s6BgFZagEd-kUIqFByffIQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ufdrYMaZEd-EY7J8dSXmew" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ufeScMaZEd-EY7J8dSXmew" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ufeSccaZEd-EY7J8dSXmew" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ufeScsaZEd-EY7J8dSXmew" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ufeSc8aZEd-EY7J8dSXmew" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ufeSdMaZEd-EY7J8dSXmew" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_s6BgFpagEd-kUIqFByffIQ" type="5026"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_s6BgF5agEd-kUIqFByffIQ" type="7016">
+ <children xmi:type="notation:Shape" xmi:id="_sXxuoJagEd-kUIqFByffIQ" type="2008" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sXy8wJagEd-kUIqFByffIQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sXy8wZagEd-kUIqFByffIQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sXy8wpagEd-kUIqFByffIQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sXy8w5agEd-kUIqFByffIQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_sXzj0JagEd-kUIqFByffIQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_sXzj0ZagEd-kUIqFByffIQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_sXzj0pagEd-kUIqFByffIQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sXzj05agEd-kUIqFByffIQ" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sXzj1JagEd-kUIqFByffIQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sXzj1ZagEd-kUIqFByffIQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sXzj1pagEd-kUIqFByffIQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sXzj15agEd-kUIqFByffIQ" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sXzj2JagEd-kUIqFByffIQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sXzj2ZagEd-kUIqFByffIQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sXzj2pagEd-kUIqFByffIQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_sXzj25agEd-kUIqFByffIQ" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sXzj3JagEd-kUIqFByffIQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sXzj3ZagEd-kUIqFByffIQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sXzj3pagEd-kUIqFByffIQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_W0t44Dj1Ed-nsvkE2JvSTg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sXxuoZagEd-kUIqFByffIQ" x="40" y="32"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s6BgGJagEd-kUIqFByffIQ"/>
+ </children>
+ <element xmi:type="uml:Package" href="tracing.uml#_IewAUDguEd-9wq2wHPy3lw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s6A5AZagEd-kUIqFByffIQ" x="105" y="135" width="316" height="196"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_o5H2cZagEd-kUIqFByffIQ"/>
+ <element xmi:type="uml:Package" href="tracing.uml#_IewAUDguEd-9wq2wHPy3lw"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_WYtQ8KbsEeCMd5eKvetORw" type="PapyrusUMLClassDiagram" name="Tracing" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_HtaQcKcIEeCHb6NpAmqEdg" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HtbekKcIEeCHb6NpAmqEdg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HtbekacIEeCHb6NpAmqEdg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HtbekqcIEeCHb6NpAmqEdg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Htbek6cIEeCHb6NpAmqEdg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HtbelKcIEeCHb6NpAmqEdg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_HtbelacIEeCHb6NpAmqEdg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_HtbelqcIEeCHb6NpAmqEdg" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HtcFoKcIEeCHb6NpAmqEdg" type="7017">
+ <children xmi:type="notation:Shape" xmi:id="_3B-kQBatEeGq1uSGvh4rcQ" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="tracing.uml#_aF1w5TKeEd-WprEKTCaiMA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3B-kQRatEeGq1uSGvh4rcQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3B_LUBatEeGq1uSGvh4rcQ" type="3012" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Property" href="tracing.uml#_plSuEF23Ed-12d_h0i1xhQ"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3B_LURatEeGq1uSGvh4rcQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HtcFoacIEeCHb6NpAmqEdg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HtcFoqcIEeCHb6NpAmqEdg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HtcFo6cIEeCHb6NpAmqEdg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HtcFpKcIEeCHb6NpAmqEdg" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_3B8IABatEeGq1uSGvh4rcQ" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="tracing.uml#_aF1w7zKeEd-WprEKTCaiMA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3B8IARatEeGq1uSGvh4rcQ"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_3B99MBatEeGq1uSGvh4rcQ" type="3013" fontName="Sans Serif" lineColor="0">
+ <element xmi:type="uml:Operation" href="tracing.uml#_aF1w8TKeEd-WprEKTCaiMA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_3B99MRatEeGq1uSGvh4rcQ"/>
+ </children>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HtcFpacIEeCHb6NpAmqEdg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HtcFpqcIEeCHb6NpAmqEdg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HtcFp6cIEeCHb6NpAmqEdg"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_HtcFqKcIEeCHb6NpAmqEdg" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_HtcFqacIEeCHb6NpAmqEdg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_HtcFqqcIEeCHb6NpAmqEdg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HtcFq6cIEeCHb6NpAmqEdg"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_aF1w4DKeEd-WprEKTCaiMA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HtaQcacIEeCHb6NpAmqEdg" x="77" y="36" width="248" height="118"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xQ_EwLnhEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xQ_r0LnhEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xQ_r0bnhEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xQ_r0rnhEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xQ_r07nhEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xQ_r1LnhEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xQ_r1bnhEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xQ_r1rnhEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xQ_r17nhEeCxXoyQxQ47PQ" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xQ_r2LnhEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xQ_r2bnhEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xQ_r2rnhEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xQ_r27nhEeCxXoyQxQ47PQ" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xQ_r3LnhEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xQ_r3bnhEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xQ_r3rnhEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xRAS4LnhEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xRAS4bnhEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xRAS4rnhEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xRAS47nhEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_apuYoDNwEd-1k-POY2IaLg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xQ_EwbnhEeCxXoyQxQ47PQ" x="414" y="180"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_xRVqELnhEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xRVqErnhEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xRVqE7nhEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xRWRILnhEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xRWRIbnhEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_xRWRIrnhEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xRWRI7nhEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xRWRJLnhEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xRWRJbnhEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xRWRJrnhEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xRWRJ7nhEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xRWRKLnhEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xRWRKbnhEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xRWRKrnhEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xRWRK7nhEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xRWRLLnhEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_xRWRLbnhEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_xRWRLrnhEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_xRWRL7nhEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xRWRMLnhEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/OS-AL-core.uml#_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xRVqEbnhEeCxXoyQxQ47PQ" x="414" y="36" height="91"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_yDfDQLniEeCxXoyQxQ47PQ" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yDfqULniEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yDfqUbniEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yDfqUrniEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yDfqU7niEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yDfqVLniEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yDfqVbniEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_yDgRYLniEeCxXoyQxQ47PQ" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yDgRYbniEeCxXoyQxQ47PQ" visible="false" type="7017">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yDgRYrniEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yDgRY7niEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yDgRZLniEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yDgRZbniEeCxXoyQxQ47PQ" visible="false" type="7018">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yDgRZrniEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yDgRZ7niEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yDgRaLniEeCxXoyQxQ47PQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_yDgRabniEeCxXoyQxQ47PQ" visible="false" type="7019">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_yDgRarniEeCxXoyQxQ47PQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_yDgRa7niEeCxXoyQxQ47PQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yDgRbLniEeCxXoyQxQ47PQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_kIcwsKbnEeC0_qP7CUZIiQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yDfDQbniEeCxXoyQxQ47PQ" x="72" y="216" width="253" height="63"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_zxrqcLniEeCxXoyQxQ47PQ" type="2012" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zxsRgLniEeCxXoyQxQ47PQ" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zxsRgbniEeCxXoyQxQ47PQ" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zxs4kLniEeCxXoyQxQ47PQ" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zxs4kbniEeCxXoyQxQ47PQ" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_zxs4krniEeCxXoyQxQ47PQ" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_zxs4k7niEeCxXoyQxQ47PQ" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_zxs4lLniEeCxXoyQxQ47PQ" type="5038"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_hd5WkKPUEeClvI8FjeO1Ow"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zxrqcbniEeCxXoyQxQ47PQ" x="72" y="323" width="415"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_WYtQ8absEeCMd5eKvetORw"/>
+ <element xmi:type="uml:Package" href="tracing.uml#_g2IY8DKeEd-WprEKTCaiMA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_xTj3oLnhEeCxXoyQxQ47PQ" type="4008" source="_xQ_EwLnhEeCxXoyQxQ47PQ" target="_xRVqELnhEeCxXoyQxQ47PQ" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_xTkesLnhEeCxXoyQxQ47PQ" type="6026">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xTkesbnhEeCxXoyQxQ47PQ" y="40"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xTkesrnhEeCxXoyQxQ47PQ" type="6027">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xTkes7nhEeCxXoyQxQ47PQ" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_xTj3obnhEeCxXoyQxQ47PQ" fontName="Sans Serif"/>
+ <element xmi:type="uml:Usage" href="tracing.uml#_7uQr8D4OEeC-VMxjm_qUAg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xTj3ornhEeCxXoyQxQ47PQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_cL_W0PUPEeCn1-FCrfecFg" type="CompositeStructure" name="ContainerRules" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_fLhDAPUPEeCn1-FCrfecFg" type="2073" fontName="" fontHeight="10" fillColor="8905185" gradient="16777215, 16777215, 1" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fLhqEPUPEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fLhqEfUPEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fLhqEvUPEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fLhqE_UPEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fLiRIPUPEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fLiRIfUPEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_vao5oBIyEeGU49ezpRnvLg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vapgsBIyEeGU49ezpRnvLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vapgsRIyEeGU49ezpRnvLg" key="StereotypeList" value="FCM::ContainerRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vapgshIyEeGU49ezpRnvLg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vapgsxIyEeGU49ezpRnvLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_vapgtBIyEeGU49ezpRnvLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fLiRIvUPEeCn1-FCrfecFg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_fLiRI_UPEeCn1-FCrfecFg" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_lBRVcPUPEeCn1-FCrfecFg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lBR8gPUPEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lBR8gfUPEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lBR8gvUPEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lBR8g_UPEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lBR8hPUPEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_lBR8hfUPEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RCIRAPUQEeCn1-FCrfecFg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RCI4EPUQEeCn1-FCrfecFg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RCI4EfUQEeCn1-FCrfecFg" key="StereotypeList" value="FCM::InterceptionRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RCI4EvUQEeCn1-FCrfecFg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RCI4E_UQEeCn1-FCrfecFg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_RCI4FPUQEeCn1-FCrfecFg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_lBSjkPUPEeCn1-FCrfecFg" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_lBSjkfUPEeCn1-FCrfecFg" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_lBSjkvUPEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lBSjk_UPEeCn1-FCrfecFg"/>
+ </children>
+ <element xmi:type="uml:Property" href="tracing.uml#_lBO5MPUPEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lBRVcfUPEeCn1-FCrfecFg" x="31" y="10" width="190"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_fLiRJPUPEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fLiRJfUPEeCn1-FCrfecFg"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_GVZxwLdwEd-CtfrGQre34Q"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fLhDAfUPEeCn1-FCrfecFg" x="81" y="12" width="262" height="106"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_gsUucPUPEeCn1-FCrfecFg" type="2073" fontName="" fontHeight="10" fillColor="8905185" gradient="16777215, 16777215, 1" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsUucvUPEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsUuc_UPEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsUudPUPEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsVVgPUPEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gsVVgfUPEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gsVVgvUPEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uWhKMBIyEeGU49ezpRnvLg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uWiYUBIyEeGU49ezpRnvLg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uWiYURIyEeGU49ezpRnvLg" key="StereotypeList" value="FCM::ContainerRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uWi_YBIyEeGU49ezpRnvLg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uWi_YRIyEeGU49ezpRnvLg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uWi_YhIyEeGU49ezpRnvLg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_gsVVg_UPEeCn1-FCrfecFg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_gsVVhPUPEeCn1-FCrfecFg" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_pm7R8PUPEeCn1-FCrfecFg" type="3070" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pm75APUPEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pm8gEPUPEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pm8gEfUPEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pm8gEvUPEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_pm8gE_UPEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pm8gFPUPEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TMU3sPUQEeCn1-FCrfecFg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TMVewPUQEeCn1-FCrfecFg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TMVewfUQEeCn1-FCrfecFg" key="StereotypeList" value="FCM::InterceptionRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TMVewvUQEeCn1-FCrfecFg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TMVew_UQEeCn1-FCrfecFg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TMVexPUQEeCn1-FCrfecFg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pm8gFfUPEeCn1-FCrfecFg" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pm8gFvUPEeCn1-FCrfecFg" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pm8gF_UPEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pm8gGPUPEeCn1-FCrfecFg"/>
+ </children>
+ <element xmi:type="uml:Property" href="tracing.uml#_pm5cwPUPEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pm7R8fUPEeCn1-FCrfecFg" x="31" y="4" width="190"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_gsVVhfUPEeCn1-FCrfecFg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsVVhvUPEeCn1-FCrfecFg"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_wHuA0KAdEeCF0uoVQbVQRg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gsUucfUPEeCn1-FCrfecFg" x="81" y="135" width="262" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_48My0PUPEeCn1-FCrfecFg" type="2109" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_48NZ4PUPEeCn1-FCrfecFg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48OA8PUPEeCn1-FCrfecFg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_48OA8fUPEeCn1-FCrfecFg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48OA8vUPEeCn1-FCrfecFg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_48OA8_UPEeCn1-FCrfecFg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_48OA9PUPEeCn1-FCrfecFg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_48OA9fUPEeCn1-FCrfecFg" type="5192"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_aX6QECVIEeCPS8GFKAaKxw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_48My0fUPEeCn1-FCrfecFg" x="432" y="45" width="190" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_I2dzMPwkEeGWn-a9PUOYcA" type="2073" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 1" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I2gPcPwkEeGWn-a9PUOYcA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I2gPcfwkEeGWn-a9PUOYcA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I2gPcvwkEeGWn-a9PUOYcA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I2gPc_wkEeGWn-a9PUOYcA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_I2gPdPwkEeGWn-a9PUOYcA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_I2gPdfwkEeGWn-a9PUOYcA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_RWfTgPwkEeGWn-a9PUOYcA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5GHJMC8CEeKwPrQVP28AQw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5GHJMS8CEeKwPrQVP28AQw" key="StereotypeList" value="FCM::ContainerRule,FCM::UseInstanceConfigurator"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5GHJMi8CEeKwPrQVP28AQw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5GHJMy8CEeKwPrQVP28AQw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5GHJNC8CEeKwPrQVP28AQw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_I2gPdvwkEeGWn-a9PUOYcA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_I2g2gPwkEeGWn-a9PUOYcA" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_d7RCsPwkEeGWn-a9PUOYcA" type="3070" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d7RCsvwkEeGWn-a9PUOYcA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d7RCs_wkEeGWn-a9PUOYcA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d7RpwPwkEeGWn-a9PUOYcA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d7RpwfwkEeGWn-a9PUOYcA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d7RpwvwkEeGWn-a9PUOYcA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_d7Rpw_wkEeGWn-a9PUOYcA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_m-VlsPwkEeGWn-a9PUOYcA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m-VlsfwkEeGWn-a9PUOYcA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m-VlsvwkEeGWn-a9PUOYcA" key="StereotypeList" value="FCM::InterceptionRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m-Vls_wkEeGWn-a9PUOYcA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m-VltPwkEeGWn-a9PUOYcA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_m-VltfwkEeGWn-a9PUOYcA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_d7RpxPwkEeGWn-a9PUOYcA" type="5126"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_d7RpxfwkEeGWn-a9PUOYcA" visible="false" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_d7RpxvwkEeGWn-a9PUOYcA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d7Rpx_wkEeGWn-a9PUOYcA"/>
+ </children>
+ <element xmi:type="uml:Property" href="tracing.uml#_d7If0PwkEeGWn-a9PUOYcA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d7RCsfwkEeGWn-a9PUOYcA" x="31" y="6" width="190" height="46"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_I2g2gfwkEeGWn-a9PUOYcA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I2g2gvwkEeGWn-a9PUOYcA"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_I2OioPwkEeGWn-a9PUOYcA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I2dzMfwkEeGWn-a9PUOYcA" x="81" y="252" width="262" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_z7rBMChKEeKFu939Pz1RFA" type="2109" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z7zkEChKEeKFu939Pz1RFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z7zkEShKEeKFu939Pz1RFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z7zkEihKEeKFu939Pz1RFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z7zkEyhKEeKFu939Pz1RFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z7zkFChKEeKFu939Pz1RFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_z70LIChKEeKFu939Pz1RFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_z70LIShKEeKFu939Pz1RFA" type="5192"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_z43k0ChKEeKFu939Pz1RFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_z7rBMShKEeKFu939Pz1RFA" x="432" y="153" width="190" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_068F0ChKEeKFu939Pz1RFA" type="2109" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_069T8ChKEeKFu939Pz1RFA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_069T8ShKEeKFu939Pz1RFA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_069T8ihKEeKFu939Pz1RFA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_069T8yhKEeKFu939Pz1RFA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_069T9ChKEeKFu939Pz1RFA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_069T9ShKEeKFu939Pz1RFA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0697AChKEeKFu939Pz1RFA" type="5192"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_06dksChKEeKFu939Pz1RFA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_068F0ShKEeKFu939Pz1RFA" x="432" y="252" width="190" height="37"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_IhxYwCqLEeKGrchWittz_g" type="2073" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 1" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ih2RQCqLEeKGrchWittz_g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ih2RQSqLEeKGrchWittz_g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ih24UCqLEeKGrchWittz_g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ih24USqLEeKGrchWittz_g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ih24UiqLEeKGrchWittz_g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ih24UyqLEeKGrchWittz_g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_phezgCzaEeK_M7tCCLbg5g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gIh00C8DEeKwPrQVP28AQw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gIh00S8DEeKwPrQVP28AQw" key="StereotypeList" value="FCM::ContainerRule,FCM::UseInstanceConfigurator"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gIh00i8DEeKwPrQVP28AQw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gIib4C8DEeKwPrQVP28AQw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_gIib4S8DEeKwPrQVP28AQw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_Ih24VCqLEeKGrchWittz_g" type="5156">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NumqACqLEeKGrchWittz_g" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NunRECqLEeKGrchWittz_g" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NunRESqLEeKGrchWittz_g" key="StereotypeList" value="FCM::ContainerRule"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NunREiqLEeKGrchWittz_g" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NunREyqLEeKGrchWittz_g" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NunRFCqLEeKGrchWittz_g" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Ih3fYCqLEeKGrchWittz_g" type="7073">
+ <children xmi:type="notation:Shape" xmi:id="_AxC-IC8PEeKVAPO2lpiVnA" type="3070" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AxFaYC8PEeKVAPO2lpiVnA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AxFaYS8PEeKVAPO2lpiVnA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AxFaYi8PEeKVAPO2lpiVnA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AxGBcC8PEeKVAPO2lpiVnA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_AxGBcS8PEeKVAPO2lpiVnA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AxGBci8PEeKVAPO2lpiVnA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_AxGBcy8PEeKVAPO2lpiVnA" type="5126">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GQ1AkC8PEeKVAPO2lpiVnA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GQ1AkS8PEeKVAPO2lpiVnA" key="CustomAppearance_MaskValue" value="60"/>
+ </eAnnotations>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_AxGBdC8PEeKVAPO2lpiVnA" type="7077">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_AxGBdS8PEeKVAPO2lpiVnA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AxGBdi8PEeKVAPO2lpiVnA"/>
+ </children>
+ <element xmi:type="uml:Property" href="tracing.uml#_Avfe8C8PEeKVAPO2lpiVnA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AxC-IS8PEeKVAPO2lpiVnA" x="22" y="15" width="165"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Ih3fYSqLEeKGrchWittz_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ih3fYiqLEeKGrchWittz_g"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_If04ACqLEeKGrchWittz_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ihx_0CqLEeKGrchWittz_g" x="81" y="378" width="262" height="109"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_LtiEgDdMEeKDRPyuWXNFNA" type="2109" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ltlu4DdMEeKDRPyuWXNFNA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ltlu4TdMEeKDRPyuWXNFNA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Ltlu4jdMEeKDRPyuWXNFNA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Ltlu4zdMEeKDRPyuWXNFNA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LtmV8DdMEeKDRPyuWXNFNA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LtmV8TdMEeKDRPyuWXNFNA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_LtmV8jdMEeKDRPyuWXNFNA" type="5192"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_LlPEIDdMEeKDRPyuWXNFNA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LtiEgTdMEeKDRPyuWXNFNA" x="432" y="405" width="199" height="28"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_cL_W0fUPEeCn1-FCrfecFg"/>
+ <element xmi:type="uml:Package" href="tracing.uml#_VzFlMLnhEeCxXoyQxQ47PQ"/>
+ <edges xmi:type="notation:Connector" xmi:id="_7Gcc0PUPEeCn1-FCrfecFg" type="4002" source="_48My0PUPEeCn1-FCrfecFg" target="_fLhDAPUPEeCn1-FCrfecFg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_7Gcc0fUPEeCn1-FCrfecFg" fontName="" fontHeight="10"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7Gcc0vUPEeCn1-FCrfecFg" points="[-6, 6, 106, 0]$[-95, 4, 17, -2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7GdD4PUPEeCn1-FCrfecFg" id="(0.027649769585253458,0.3333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7GdD4fUPEeCn1-FCrfecFg" id="(0.9341085271317829,0.4154929577464789)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_2gqGcChKEeKFu939Pz1RFA" type="4002" source="_z7rBMChKEeKFu939Pz1RFA" target="_gsUucPUPEeCn1-FCrfecFg" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_2gqGcShKEeKFu939Pz1RFA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2gqGcihKEeKFu939Pz1RFA" points="[-14, -4, 113, 0]$[-116, -5, 11, -1]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2hbigChKEeKFu939Pz1RFA" id="(0.14,0.5333333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2hcJkChKEeKFu939Pz1RFA" id="(0.9580152671755725,0.42201834862385323)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_3Zi2QChKEeKFu939Pz1RFA" type="4002" source="_068F0ChKEeKFu939Pz1RFA" target="_I2dzMPwkEeGWn-a9PUOYcA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_3Zi2QShKEeKFu939Pz1RFA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Zi2QihKEeKFu939Pz1RFA" points="[-50, 7, 401, -59]$[-433, 41, 18, -25]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3aLvcChKEeKFu939Pz1RFA" id="(0.6717557251908397,0.14534883720930233)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_UW6VIDdMEeKDRPyuWXNFNA" type="4002" source="_LtiEgDdMEeKDRPyuWXNFNA" target="_IhxYwCqLEeKGrchWittz_g" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_UW6VITdMEeKDRPyuWXNFNA" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UW6VIjdMEeKDRPyuWXNFNA" points="[-4, 7, 105, 0]$[-93, 4, 16, -3]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UXAbwDdMEeKDRPyuWXNFNA" id="(0.020100502512562814,0.2708333333333333)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UXAbwTdMEeKDRPyuWXNFNA" id="(0.9389312977099237,0.3486238532110092)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_noMIQPxWEeGOK9t90vpALA" type="CompositeStructure" name="LTTng composition" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_okSkIPxWEeGOK9t90vpALA" type="2073" fontName="" fontHeight="10" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_okSkIfxWEeGOK9t90vpALA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_okSkIvxWEeGOK9t90vpALA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_okSkI_xWEeGOK9t90vpALA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_okSkJPxWEeGOK9t90vpALA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_okSkJfxWEeGOK9t90vpALA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_okSkJvxWEeGOK9t90vpALA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_okSkJ_xWEeGOK9t90vpALA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_okSkKPxWEeGOK9t90vpALA" type="7073">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_okSkKfxWEeGOK9t90vpALA"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_okTLMPxWEeGOK9t90vpALA" x="550" y="34" width="199"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_px1VUPxWEeGOK9t90vpALA" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_px3xkPxWEeGOK9t90vpALA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_px3xkfxWEeGOK9t90vpALA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_px3xkvxWEeGOK9t90vpALA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_px3xk_xWEeGOK9t90vpALA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_px4YoPxWEeGOK9t90vpALA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_px4YofxWEeGOK9t90vpALA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__yYLMPzhEeGe5LUTfvP5hQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__yYyQPzhEeGe5LUTfvP5hQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__yYyQfzhEeGe5LUTfvP5hQ" key="StereotypeList" value="FCM::InteractionComponent"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__yYyQvzhEeGe5LUTfvP5hQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__yYyQ_zhEeGe5LUTfvP5hQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__yYyRPzhEeGe5LUTfvP5hQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_px4YovxWEeGOK9t90vpALA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_px4Yo_xWEeGOK9t90vpALA" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_px4YpPxWEeGOK9t90vpALA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_px4YpfxWEeGOK9t90vpALA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EFsToDY_EeKxVvAop17bHw" visible="false" type="AppliedStereotypeCompartement">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EFsToTY_EeKxVvAop17bHw" showTitle="true"/>
+ <element xmi:type="FCM:InteractionComponent" href="tracing.uml#__yL98PzhEeGe5LUTfvP5hQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EFsTojY_EeKxVvAop17bHw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_EFzoYDY_EeKxVvAop17bHw" visible="false" type="AppliedStereotypeCompartement">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_EFzoYTY_EeKxVvAop17bHw" showTitle="true"/>
+ <element xmi:type="FCM:UseInstanceConfigurator" href="tracing.uml#_1yKFIC8CEeKwPrQVP28AQw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EFzoYjY_EeKxVvAop17bHw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0FsPkDaSEeKxVvAop17bHw" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0Fs2oDaSEeKxVvAop17bHw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0Fs2oTaSEeKxVvAop17bHw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0Fs2ojaSEeKxVvAop17bHw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0Fs2ozaSEeKxVvAop17bHw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0Fs2pDaSEeKxVvAop17bHw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0FtdsDaSEeKxVvAop17bHw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0FtdsTaSEeKxVvAop17bHw" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0FtdsjaSEeKxVvAop17bHw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0FtdszaSEeKxVvAop17bHw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0FtdtDaSEeKxVvAop17bHw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_P4xVsNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0FsPkTaSEeKxVvAop17bHw" x="-10" y="39"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_0Fur0DaSEeKxVvAop17bHw" type="3069" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0FvS4DaSEeKxVvAop17bHw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0FvS4TaSEeKxVvAop17bHw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0Fv58DaSEeKxVvAop17bHw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0Fv58TaSEeKxVvAop17bHw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0Fv58jaSEeKxVvAop17bHw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0Fv58zaSEeKxVvAop17bHw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Fv59DaSEeKxVvAop17bHw" type="5125">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Fv59TaSEeKxVvAop17bHw" x="25" y="3"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_0Fv59jaSEeKxVvAop17bHw" type="6029">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_0Fv59zaSEeKxVvAop17bHw" x="25" y="-10"/>
+ </children>
+ <element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_Qk0jYNtuEd2eM5kqcby5ZA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0Fur0TaSEeKxVvAop17bHw" x="280" y="39"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_pwl_MPxWEeGOK9t90vpALA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_px1VUfxWEeGOK9t90vpALA" x="136" y="159" width="290" height="67"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_rGaioPxWEeGOK9t90vpALA" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rGaiovxWEeGOK9t90vpALA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rGaio_xWEeGOK9t90vpALA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rGaipPxWEeGOK9t90vpALA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rGbJsPxWEeGOK9t90vpALA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rGbJsfxWEeGOK9t90vpALA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_rGbJsvxWEeGOK9t90vpALA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__rfwQPxWEeGOK9t90vpALA" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSvqYCdaEeKGdt7FoegMYA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSvqYSdaEeKGdt7FoegMYA" key="StereotypeList" value="Cpp::CppInclude,Cpp::ManualGeneration"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSvqYidaEeKGdt7FoegMYA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSwRcCdaEeKGdt7FoegMYA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_KSwRcSdaEeKGdt7FoegMYA" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rGbJs_xWEeGOK9t90vpALA" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_rGbJtPxWEeGOK9t90vpALA" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rGbJtfxWEeGOK9t90vpALA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rGbJtvxWEeGOK9t90vpALA"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_rGPjgPxWEeGOK9t90vpALA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rGaiofxWEeGOK9t90vpALA" x="135" y="342" width="298" height="100"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_r8kHgPxWEeGOK9t90vpALA" type="2109" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_r8kukPxWEeGOK9t90vpALA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r8kukfxWEeGOK9t90vpALA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_r8kukvxWEeGOK9t90vpALA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r8kuk_xWEeGOK9t90vpALA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_r8kulPxWEeGOK9t90vpALA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_r8kulfxWEeGOK9t90vpALA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_r8kulvxWEeGOK9t90vpALA" type="5192"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_r8PXYPxWEeGOK9t90vpALA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r8kHgfxWEeGOK9t90vpALA" x="594" y="288"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_tt4UIPxWEeGOK9t90vpALA" type="2109" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tt47MfxWEeGOK9t90vpALA" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tt47MvxWEeGOK9t90vpALA" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tt47M_xWEeGOK9t90vpALA" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tt47NPxWEeGOK9t90vpALA" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tt5iQPxWEeGOK9t90vpALA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tt5iQfxWEeGOK9t90vpALA" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tt5iQvxWEeGOK9t90vpALA" type="5192"/>
+ <element xmi:type="uml:Comment" href="tracing.uml#_ttvxQPxWEeGOK9t90vpALA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tt47MPxWEeGOK9t90vpALA" x="595" y="360"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="__O0wAPzSEeGKDvxFM1SZ_g" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__O4aYPzSEeGKDvxFM1SZ_g" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__O4aYfzSEeGKDvxFM1SZ_g" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__O5BcPzSEeGKDvxFM1SZ_g" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__O5BcfzSEeGKDvxFM1SZ_g" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__O5BcvzSEeGKDvxFM1SZ_g" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__O5Bc_zSEeGKDvxFM1SZ_g" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="__O5ogPzSEeGKDvxFM1SZ_g" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="__O5ogfzSEeGKDvxFM1SZ_g" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="__O5ogvzSEeGKDvxFM1SZ_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__O5og_zSEeGKDvxFM1SZ_g"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_v-VBcPzSEeGKDvxFM1SZ_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__O1XEPzSEeGKDvxFM1SZ_g" x="585" y="162" width="154" height="55"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_7pVBUDHKEeKt1a2SZnJmwg" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7pdkMDHKEeKt1a2SZnJmwg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7pdkMTHKEeKt1a2SZnJmwg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7peLQDHKEeKt1a2SZnJmwg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7peLQTHKEeKt1a2SZnJmwg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7peLQjHKEeKt1a2SZnJmwg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7peLQzHKEeKt1a2SZnJmwg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_7peyUDHKEeKt1a2SZnJmwg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_7peyUTHKEeKt1a2SZnJmwg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_7peyUjHKEeKt1a2SZnJmwg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7peyUzHKEeKt1a2SZnJmwg"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_gveqADHKEeKt1a2SZnJmwg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7pVBUTHKEeKt1a2SZnJmwg" x="586" y="234" width="153" height="46"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_a416YDWGEeKGAYOVxzQeAg" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a492MDWGEeKGAYOVxzQeAg" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a492MTWGEeKGAYOVxzQeAg" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a4-dQDWGEeKGAYOVxzQeAg" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a4-dQTWGEeKGAYOVxzQeAg" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_a4-dQjWGEeKGAYOVxzQeAg" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_a4-dQzWGEeKGAYOVxzQeAg" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_a4-dRDWGEeKGAYOVxzQeAg" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_a4_EUDWGEeKGAYOVxzQeAg" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_a4_EUTWGEeKGAYOVxzQeAg" showTitle="true"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a4_EUjWGEeKGAYOVxzQeAg"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_C4FREDV7EeKGAYOVxzQeAg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a416YTWGEeKGAYOVxzQeAg" x="585" y="108" width="154" height="47"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_ihO6UDaSEeKxVvAop17bHw" type="2073" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ihlfoDaSEeKxVvAop17bHw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ihlfoTaSEeKxVvAop17bHw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ihmGsDaSEeKxVvAop17bHw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ihmGsTaSEeKxVvAop17bHw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ihmGsjaSEeKxVvAop17bHw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ihmGszaSEeKxVvAop17bHw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ihmtwDaSEeKxVvAop17bHw" type="5156"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_ihmtwTaSEeKxVvAop17bHw" type="7073">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ihmtwjaSEeKxVvAop17bHw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ihmtwzaSEeKxVvAop17bHw"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_dcP9gDaSEeKxVvAop17bHw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ihO6UTaSEeKxVvAop17bHw" x="135" y="72" width="289" height="55"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_noMIQfxWEeGOK9t90vpALA"/>
+ <element xmi:type="uml:Package" href="tracing.uml#_5gDNYPwkEeGWn-a9PUOYcA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_1-ITEPxWEeGOK9t90vpALA" type="4015" source="_px1VUPxWEeGOK9t90vpALA" target="_ihO6UDaSEeKxVvAop17bHw" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_1-I6IPxWEeGOK9t90vpALA" type="6024">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_1-I6IfxWEeGOK9t90vpALA" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_1-ITEfxWEeGOK9t90vpALA" fontName="Sans Serif"/>
+ <element xmi:type="uml:Generalization" href="tracing.uml#_1963sPxWEeGOK9t90vpALA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1-ITEvxWEeGOK9t90vpALA" points="[-8, -4, 0, 73]$[-8, -71, 0, 6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1-eRUPxWEeGOK9t90vpALA" id="(0.5344827586206896,0.05970149253731343)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1-eRUfxWEeGOK9t90vpALA" id="(0.5086505190311419,0.9090909090909091)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_BWUoAPzTEeGKDvxFM1SZ_g" type="4008" source="_px1VUPxWEeGOK9t90vpALA" target="__O0wAPzSEeGKDvxFM1SZ_g" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_BWV2IPzTEeGKDvxFM1SZ_g" visible="false" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BWV2IfzTEeGKDvxFM1SZ_g" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BWV2IvzTEeGKDvxFM1SZ_g" visible="false" type="6021">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_BWV2I_zTEeGKDvxFM1SZ_g" x="6" y="-20"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_BWUoAfzTEeGKDvxFM1SZ_g" fontName="Sans Serif"/>
+ <element xmi:type="uml:Usage" href="tracing.uml#_BV2G4PzTEeGKDvxFM1SZ_g"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BWUoAvzTEeGKDvxFM1SZ_g" points="[10, 9, -228, -14]$[210, -5, -28, -28]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BW4BoPzTEeGKDvxFM1SZ_g" id="(0.9655172413793104,0.2537313432835821)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EUGAsPzTEeGKDvxFM1SZ_g" id="(0.045454545454545456,0.21818181818181817)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_e9huEBMnEeK_iPOWsxJHwg" type="4002" source="_tt4UIPxWEeGOK9t90vpALA" target="_rGaioPxWEeGOK9t90vpALA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_e9huERMnEeK_iPOWsxJHwg" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e9huEhMnEeK_iPOWsxJHwg" points="[-9, -1, 176, 13]$[-171, -12, 14, 2]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e-jBwBMnEeK_iPOWsxJHwg" id="(0.0,0.6)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e-jBwRMnEeK_iPOWsxJHwg" id="(0.9496644295302014,0.47)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_-uRtcBMoEeK_iPOWsxJHwg" type="4002" source="_r8kHgPxWEeGOK9t90vpALA" target="_px1VUPxWEeGOK9t90vpALA" lineColor="0">
+ <styles xmi:type="notation:FontStyle" xmi:id="_-uRtcRMoEeK_iPOWsxJHwg" fontName="Sans Serif"/>
+ <element xsi:nil="true"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-uRtchMoEeK_iPOWsxJHwg" points="[-22, -6, 225, 78]$[-121, -6, 126, 78]$[-236, -77, 11, 7]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-umdkBMoEeK_iPOWsxJHwg" id="(0.22,0.25)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-umdkRMoEeK_iPOWsxJHwg" id="(0.803448275862069,0.8955223880597015)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_9zmggDHKEeKt1a2SZnJmwg" type="4010" source="_px1VUPxWEeGOK9t90vpALA" target="_7pVBUDHKEeKt1a2SZnJmwg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_9zoVsDHKEeKt1a2SZnJmwg" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9zoVsTHKEeKt1a2SZnJmwg" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_9zoVsjHKEeKt1a2SZnJmwg" visible="false" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_9zoVszHKEeKt1a2SZnJmwg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_9zmggTHKEeKt1a2SZnJmwg" fontName="Sans Serif"/>
+ <element xmi:type="uml:Dependency" href="tracing.uml#_9ygUUDHKEeKt1a2SZnJmwg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9zmggjHKEeKt1a2SZnJmwg" points="[4, 0, -164, -76]$[82, 0, -86, -76]$[91, 70, -77, -6]$[164, 70, -4, -6]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_90MWYDHKEeKt1a2SZnJmwg" id="(0.9862068965517241,0.34328358208955223)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ApPQ4DHLEeKt1a2SZnJmwg" id="(0.026143790849673203,0.5217391304347826)"/>
+ </edges>
+ <edges xmi:type="notation:Connector" xmi:id="_c6NVMDWGEeKGAYOVxzQeAg" type="4010" source="_px1VUPxWEeGOK9t90vpALA" target="_a416YDWGEeKGAYOVxzQeAg" lineColor="0">
+ <children xmi:type="notation:DecorationNode" xmi:id="_c6OjUDWGEeKGAYOVxzQeAg" visible="false" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_c6OjUTWGEeKGAYOVxzQeAg" y="60"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_c6OjUjWGEeKGAYOVxzQeAg" visible="false" type="6023">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_c6OjUzWGEeKGAYOVxzQeAg" y="60"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_c6NVMTWGEeKGAYOVxzQeAg" fontName="Sans Serif"/>
+ <element xmi:type="uml:Dependency" href="tracing.uml#_c0nqkDWGEeKGAYOVxzQeAg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_c6NVMjWGEeKGAYOVxzQeAg" points="[9, 0, -193, 41]$[87, 0, -115, 41]$[96, -32, -106, 9]$[168, -32, -34, 9]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c7Fe8DWGEeKGAYOVxzQeAg" id="(0.9689655172413794,0.11940298507462686)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c7Fe8TWGEeKGAYOVxzQeAg" id="(0.22448979591836735,0.39285714285714285)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_PCJVYCmiEeKp-eCvZDLsaw" type="PapyrusUMLClassDiagram" name="LTTng fixed" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_P4dSUCmiEeKp-eCvZDLsaw" type="2008" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P4fukCmiEeKp-eCvZDLsaw" source="ShadowFigure">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P4gVoCmiEeKp-eCvZDLsaw" key="ShadowFigure_Value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P4gVoSmiEeKp-eCvZDLsaw" source="displayNameLabelIcon">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P4gVoimiEeKp-eCvZDLsaw" key="displayNameLabelIcon_value" value="false"/>
+ </eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_P4gVoymiEeKp-eCvZDLsaw" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_P4gVpCmiEeKp-eCvZDLsaw" key="QualifiedNameDepth" value="1000"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_P4gVpSmiEeKp-eCvZDLsaw" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P4g8sCmiEeKp-eCvZDLsaw" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P4g8sSmiEeKp-eCvZDLsaw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P4g8simiEeKp-eCvZDLsaw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P4g8symiEeKp-eCvZDLsaw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P4g8tCmiEeKp-eCvZDLsaw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P4g8tSmiEeKp-eCvZDLsaw" type="7018">
+ <children xmi:type="notation:Shape" xmi:id="_UxxxsCmiEeKp-eCvZDLsaw" type="3013" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_X21eICmiEeKp-eCvZDLsaw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X21eISmiEeKp-eCvZDLsaw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X21eIimiEeKp-eCvZDLsaw" key="StereotypeList" value="StandardProfileL2::Create"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X21eIymiEeKp-eCvZDLsaw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X21eJCmiEeKp-eCvZDLsaw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X21eJSmiEeKp-eCvZDLsaw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="tracing.uml#_UvQpMCmiEeKp-eCvZDLsaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_UxxxsSmiEeKp-eCvZDLsaw"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VUiggCmiEeKp-eCvZDLsaw" type="3013" fontName="Sans Serif" lineColor="0">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZJzh4CmiEeKp-eCvZDLsaw" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZJ0I8CmiEeKp-eCvZDLsaw" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZJ0I8SmiEeKp-eCvZDLsaw" key="StereotypeList" value="StandardProfileL2::Destroy"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZJ0I8imiEeKp-eCvZDLsaw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZJ0I8ymiEeKp-eCvZDLsaw" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZJ0I9CmiEeKp-eCvZDLsaw" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="tracing.uml#_VUW6UCmiEeKp-eCvZDLsaw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_VUiggSmiEeKp-eCvZDLsaw"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P4g8timiEeKp-eCvZDLsaw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P4g8tymiEeKp-eCvZDLsaw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P4g8uCmiEeKp-eCvZDLsaw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P4g8uSmiEeKp-eCvZDLsaw"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_P4g8uimiEeKp-eCvZDLsaw" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_P4g8uymiEeKp-eCvZDLsaw"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_P4g8vCmiEeKp-eCvZDLsaw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_P4g8vSmiEeKp-eCvZDLsaw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P4g8vimiEeKp-eCvZDLsaw"/>
+ </children>
+ <element xmi:type="uml:Class" href="tracing.uml#_P2j04CmiEeKp-eCvZDLsaw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_P4dSUSmiEeKp-eCvZDLsaw" x="356" y="157"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_PCJVYSmiEeKp-eCvZDLsaw"/>
+ <element xmi:type="uml:Package" href="tracing.uml#_i3FbMPzOEeGKDvxFM1SZ_g"/>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.uml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.uml
new file mode 100644
index 00000000000..79c61f1b245
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/tracing.uml
@@ -0,0 +1,771 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Cpp="http://papyrus/CppProfile/1" xmlns:FCM="http://papyrus/FCMProfile/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:l2="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+ <uml:Model xmi:id="_H-ZqYDKeEd-WprEKTCaiMA" name="Tracing">
+ <packageImport xmi:id="_H-ZqYTKeEd-WprEKTCaiMA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_2NyU8DguEd-9wq2wHPy3lw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
+ </packageImport>
+ <packageImport xmi:id="_XW7KkEQYEd-RDttIPD8NUg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/OS-AL-core.uml#_ROTQYC-OEdySSa8YESkO2w"/>
+ </packageImport>
+ <packageImport xmi:id="_DRgF0D4NEeC-VMxjm_qUAg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/CORBA.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_g2IY8DKeEd-WprEKTCaiMA" name="traceInterceptor">
+ <packageMerge xmi:id="_2RoSYKNfEeCdIOXlyrCmKQ">
+ <mergedPackage href="pathmap://QML_CORE/core.uml#_mMCK8PiPEd2UhpY2Y3WUyg"/>
+ </packageMerge>
+ <packagedElement xmi:type="uml:Package" xmi:id="_1rsK8PwkEeGWn-a9PUOYcA" name="otf">
+ <ownedComment xmi:id="_YUcjcKAeEeCF0uoVQbVQRg" annotatedElement="_aoSDwKAdEeCF0uoVQbVQRg">
+ <body>Variant of OTF trace that only reports values that change.</body>
+ </ownedComment>
+ <ownedComment xmi:id="_hd5WkKPUEeClvI8FjeO1Ow" annotatedElement="_kIcwsKbnEeC0_qP7CUZIiQ">
+ <body>A prior variant had a link with the methodCall_comp signature, since the operationIDs should be different, depending on the called component. This leads to a large number of generated classes. Current solution: configure the IDs on an instance level via ths InstanceConfigurator
+</body>
+ </ownedComment>
+ <ownedComment xmi:id="_bb4kQLniEeCxXoyQxQ47PQ" annotatedElement="_aF1w4DKeEd-WprEKTCaiMA">
+ <body>Trace implementation based on OTF trace library. Aggregates singleton TraceInit</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_aF1w4DKeEd-WprEKTCaiMA" clientDependency="_BuqlQDOcEd-1k-POY2IaLg" name="OTFTrace_impl">
+ <generalization xmi:id="_WdRuUDaUEeKkY-29HX5sMQ" general="_MM6RwDaUEeKkY-29HX5sMQ"/>
+ <ownedAttribute xmi:id="_aF1w5TKeEd-WprEKTCaiMA" name="timestamp" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/OS-AL-core.uml#_FuKEEDj8Edy0Rd6V_tf1-Q"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aF1w5zKeEd-WprEKTCaiMA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aF1w5jKeEd-WprEKTCaiMA" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_plSuEF23Ed-12d_h0i1xhQ" name="traceInit" type="_apuYoDNwEd-1k-POY2IaLg" isUnique="false" aggregation="shared">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xUhqoF23Ed-12d_h0i1xhQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xUpmcF23Ed-12d_h0i1xhQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_mfNqoBavEeGq1uSGvh4rcQ" name="hasDeclaredFunctions" isStatic="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mfSjIBavEeGq1uSGvh4rcQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mfTKMBavEeGq1uSGvh4rcQ" value="1"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_u-498Ba1EeGq1uSGvh4rcQ"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aF1w6DKeEd-WprEKTCaiMA" name="&lt;%name%>" specification="_aF1w7zKeEd-WprEKTCaiMA">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public traceOp(operation: Operation)]
+
+// &lt;instance>_&lt;port>_&lt;operation>
+// easier: &lt;component>_&lt;port>_&lt;operation>
+updateTimestamp ();
+if (!hasDeclaredFunctions) {
+ declareFunctions();
+ hasDeclaredFunctions = true;
+}
+Tracing::TraceInit::wait();
+int processID = Tracing::TraceInit::getProcessID();
+OTF_Writer * writer = Tracing::TraceInit::getWriter();
+OTF_Writer_writeEnter (writer, timestamp.ticks(), &lt;%enumSvcPrefix%>::id_&lt;%owner.varName%>_&lt;%varName%>, processID, 0);
+OTF_Writer_writeEventComment (writer, timestamp.ticks(), processID, portName);
+OTF_Writer_writeEventComment (writer, timestamp.ticks(), processID, instanceName);
+Tracing::TraceInit::post();
+[if not (type = null)] [type.cppType()/] ret = [/if]rconn->[operation.cppCall()/];
+updateTimestamp ();
+Tracing::TraceInit::wait();
+OTF_Writer_writeLeave (writer, timestamp.ticks(), &lt;%enumSvcPrefix%>::id_&lt;%owner.varName%>_&lt;%varName%>, processID, 0);
+Tracing::TraceInit::post();
+[if not (type = null)] return ret;[/if]
+[/template]</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_aF1w6jKeEd-WprEKTCaiMA" name="updateTimestamp" specification="_aF1w8TKeEd-WprEKTCaiMA">
+ <language>C/C++</language>
+ <body>timestamp = OS_AL::Time::TimeVal::current ();
+// gettimeofday (&amp;currentTime, NULL);
+// timestamp = ...</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_73ynMBauEeGq1uSGvh4rcQ" name="declareFunctions" specification="_35DgwBauEeGq1uSGvh4rcQ">
+ <language>C/C++</language>
+ <body>// function groups are badly supported in OTF, since writeEnter/Leave do not support them
+// thus intial plan that each interface corresponds to a function group has not been implemented
+int fctGroupID = 0;
+int streamNr = 0;
+OTF_Writer * writer = Tracing::TraceInit::getWriter();
+&lt;%for (getAllOperations) {%>
+OTF_Writer_writeDefFunction (writer, streamNr, &lt;%enumSvcPrefix%>::id_&lt;%owner.varName%>_&lt;%varName%>, &lt;%quoteLiteral(&quot;InterfaceEnum&quot;, &quot;id_&lt;%owner.varName%>_&lt;%varName%>&quot;)%>, fctGroupID, 0);
+&lt;%}%></body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_aF1w7zKeEd-WprEKTCaiMA" name="[name/]" visibility="public" method="_aF1w6DKeEd-WprEKTCaiMA">
+ <ownedComment xmi:id="_4e51QBatEeGq1uSGvh4rcQ">
+ <body>&lt;&lt;TextualRepresentation>>public '&lt;%name%>' () { }</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:id="_aF1w8TKeEd-WprEKTCaiMA" name="updateTimestamp" method="_aF1w6jKeEd-WprEKTCaiMA"/>
+ <ownedOperation xmi:id="_35DgwBauEeGq1uSGvh4rcQ" name="declareFunctions" method="_73ynMBauEeGq1uSGvh4rcQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_BuqlQDOcEd-1k-POY2IaLg" name="OTFTrace_impl => TraceInit" client="_aF1w4DKeEd-WprEKTCaiMA" supplier="_apuYoDNwEd-1k-POY2IaLg"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_U1rDwPL5Ed-1eY2qOvQSbw" name="TraceImpl">
+ <ownedTemplateSignature xmi:id="_krDBAPL5Ed-1eY2qOvQSbw" parameter="_krDoEvL5Ed-1eY2qOvQSbw">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_krDoEvL5Ed-1eY2qOvQSbw" parameteredElement="_krDoE_L5Ed-1eY2qOvQSbw">
+ <ownedParameteredElement xmi:type="uml:Class" xmi:id="_krDoE_L5Ed-1eY2qOvQSbw" name="T" templateParameter="_krDoEvL5Ed-1eY2qOvQSbw">
+ <eAnnotations xmi:id="_krDoFPL5Ed-1eY2qOvQSbw" source="http://www.eclipse.org/emf/2002/Ecore">
+ <details xmi:id="_krDoFfL5Ed-1eY2qOvQSbw" key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes"/>
+ </eAnnotations>
+ <generalization xmi:id="_krDoFvL5Ed-1eY2qOvQSbw">
+ <general xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EClassifier"/>
+ </generalization>
+ <ownedAttribute xmi:id="_krDoF_L5Ed-1eY2qOvQSbw" name="abstract" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoGPL5Ed-1eY2qOvQSbw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoGfL5Ed-1eY2qOvQSbw" name="interface" visibility="public" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoGvL5Ed-1eY2qOvQSbw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoG_L5Ed-1eY2qOvQSbw" name="eSuperTypes" type="_krDoE_L5Ed-1eY2qOvQSbw" isOrdered="true">
+ <eAnnotations xmi:id="_krDoHPL5Ed-1eY2qOvQSbw" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_krDoHfL5Ed-1eY2qOvQSbw" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_krDoHvL5Ed-1eY2qOvQSbw" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoIPL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoH_L5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoIfL5Ed-1eY2qOvQSbw" name="eOperations" isOrdered="true" aggregation="composite">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EOperation"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoI_L5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoIvL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoJPL5Ed-1eY2qOvQSbw" name="eAllAttributes" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EAttribute"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoJvL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoJfL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoJ_L5Ed-1eY2qOvQSbw" name="eAllReferences" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EReference"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoKfL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoKPL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoKvL5Ed-1eY2qOvQSbw" name="eReferences" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EReference"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoLPL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoK_L5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoLfL5Ed-1eY2qOvQSbw" name="eAttributes" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EAttribute"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoL_L5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoLvL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoMPL5Ed-1eY2qOvQSbw" name="eAllContainments" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EReference"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoMvL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoMfL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoM_L5Ed-1eY2qOvQSbw" name="eAllOperations" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EOperation"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoNfL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoNPL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoNvL5Ed-1eY2qOvQSbw" name="eAllStructuralFeatures" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EStructuralFeature"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoOPL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoN_L5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoOfL5Ed-1eY2qOvQSbw" name="eAllSuperTypes" type="_krDoE_L5Ed-1eY2qOvQSbw" isOrdered="true" isReadOnly="true" isDerived="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoO_L5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoOvL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoPPL5Ed-1eY2qOvQSbw" name="eIDAttribute" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EAttribute"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoPfL5Ed-1eY2qOvQSbw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoPvL5Ed-1eY2qOvQSbw" name="eStructuralFeatures" isOrdered="true" aggregation="composite">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EStructuralFeature"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoQPL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoP_L5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoQfL5Ed-1eY2qOvQSbw" name="eGenericSuperTypes" isOrdered="true" aggregation="composite">
+ <eAnnotations xmi:id="_krDoQvL5Ed-1eY2qOvQSbw" source="http://www.eclipse.org/emf/2002/GenModel">
+ <details xmi:id="_krDoQ_L5Ed-1eY2qOvQSbw" key="suppressedUnsetVisibility" value="true"/>
+ <details xmi:id="_krDoRPL5Ed-1eY2qOvQSbw" key="suppressedIsSetVisibility" value="true"/>
+ </eAnnotations>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EGenericType"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoRvL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoRfL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_krDoR_L5Ed-1eY2qOvQSbw" name="eAllGenericSuperTypes" isOrdered="true" isReadOnly="true" isDerived="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EGenericType"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoSfL5Ed-1eY2qOvQSbw"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_krDoSPL5Ed-1eY2qOvQSbw" value="*"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_krDoSvL5Ed-1eY2qOvQSbw" name="isSuperTypeOf" visibility="public">
+ <ownedParameter xmi:id="_krDoS_L5Ed-1eY2qOvQSbw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EBoolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoTPL5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_krDoTfL5Ed-1eY2qOvQSbw" name="someClass" type="_krDoE_L5Ed-1eY2qOvQSbw" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoTvL5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_krDoT_L5Ed-1eY2qOvQSbw" name="getFeatureCount" visibility="public">
+ <ownedParameter xmi:id="_krDoUPL5Ed-1eY2qOvQSbw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoUfL5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_krDoUvL5Ed-1eY2qOvQSbw" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_krDoU_L5Ed-1eY2qOvQSbw" isOrdered="true" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EStructuralFeature"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoVPL5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_krDoVfL5Ed-1eY2qOvQSbw" name="featureID" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoVvL5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_krDoV_L5Ed-1eY2qOvQSbw" name="getFeatureID" visibility="public">
+ <ownedParameter xmi:id="_krDoWPL5Ed-1eY2qOvQSbw" isOrdered="true" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EInt"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoWfL5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_krDoWvL5Ed-1eY2qOvQSbw" name="feature" isOrdered="true">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EStructuralFeature"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoW_L5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_krDoXPL5Ed-1eY2qOvQSbw" name="getEStructuralFeature" visibility="public">
+ <ownedParameter xmi:id="_krDoXfL5Ed-1eY2qOvQSbw" isOrdered="true" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EStructuralFeature"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoXvL5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_krDoX_L5Ed-1eY2qOvQSbw" name="featureName" isOrdered="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EString"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_krDoYPL5Ed-1eY2qOvQSbw"/>
+ </ownedParameter>
+ </ownedOperation>
+ </ownedParameteredElement>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_aoSDwKAdEeCF0uoVQbVQRg" clientDependency="_Mgn2cKKXEeCdIOXlyrCmKQ" name="OTFTrace_vc">
+ <generalization xmi:id="_nQ6YMKAdEeCF0uoVQbVQRg" general="_aF1w4DKeEd-WprEKTCaiMA"/>
+ <ownedAttribute xmi:id="_EWKx4KD0EeCFDJJCA2W5wg" name="m_first">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_4LoXcKAeEeCF0uoVQbVQRg" name="&lt;%name%>" specification="_k4TsoKAeEeCF0uoVQbVQRg">
+ <language>C/C++</language>
+ <body>// &lt;instance>_&lt;port>_&lt;operation>
+// easier: &lt;component>_&lt;port>_&lt;operation>
+OTF_Writer * writer = Tracing::Trace::TraceInit::getWriter();
+int processID = Tracing::Trace::TraceInit::getProcessID();
+updateTimestamp ();
+// need to store parameter values, but that is not simple, as we are not in the data-flow context
+// => need specific data-flow trace
+// (costly) solution? string comparison? [string has which size?] howto get string representation of each parameter?? (in particular for structs)
+// too complicated...
+// three specific data_flow trace, offering identical (but conjugated ports). PushP/PushP, PullC/PullC, PushC/PushC => three interceptors, howto select?
+
+/*
+if (m_first) {
+ m_first = false;
+ doTrace = true;
+}
+else
+*/
+bool doTrace = true;
+OS_AL::Util::BString200 parameters;
+parameters &lt;&lt; &quot;port=&quot; &lt;&lt; portName &lt;&lt; &quot; &quot;;
+if (doTrace) {
+ Tracing::Trace::TraceInit::wait();
+ &lt;%for (parametersInInout) {%>
+ &lt;%if (filter(&quot;DataType&quot;)) {%>
+ &lt;%for (ownedAttribute) {%>
+ parameters &lt;&lt; &lt;%name%> &lt;&lt; &quot;#&quot;;
+ &lt;%}%>
+ &lt;%} else {%>
+ parameters &lt;&lt; &lt;%name%> &lt;&lt; &quot;#&quot;;
+ &lt;%}%>
+ &lt;%}%>
+ OTF_Writer_writeEnter (writer, timestamp.ticks(), Tracing::Trace::ID_&lt;%args(0).varName%>_&lt;%varName%>, processID, 0);
+ Tracing::Trace::TraceInit::post();
+}
+&lt;%if (type != null) {%>&lt;%type.cppType%> ret = &lt;%}%>rconn->&lt;%cppCall%>;
+&lt;%if (type != null) {%>parameters &lt;&lt; &quot;r=&quot;
+ &lt;%if (type.filter(&quot;DataType&quot;)) {%>
+ &lt;%for (type.ownedAttribute) {%>
+ &lt;&lt; ret.&lt;%name%> &lt;&lt; &quot;#&quot;
+ &lt;%}%>;
+ &lt;%}else{%>
+ &lt;&lt; ret;
+ &lt;%}%>
+&lt;%}%>
+updateTimestamp ();
+if (doTrace) {
+ Tracing::Trace::TraceInit::wait();
+ OTF_Writer_writeEventComment (writer, timestamp.ticks(), processID, parameters.data());
+ OTF_Writer_writeLeave (writer, timestamp.ticks(), Tracing::Trace::ID_&lt;%args(0).varName%>_&lt;%varName%>, processID, 0);
+ Tracing::Trace::TraceInit::post();
+}
+&lt;%if (type != null) {%>return ret;&lt;%}%></body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_CyKWkKD2EeCFDJJCA2W5wg" name="OTFTrace_vc" specification="_rlkwoKD0EeCFDJJCA2W5wg">
+ <language>C/C++</language>
+ <body>m_first = true;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_k4TsoKAeEeCF0uoVQbVQRg" name="&lt;%name%>" method="_4LoXcKAeEeCF0uoVQbVQRg"/>
+ <ownedOperation xmi:id="_rlkwoKD0EeCFDJJCA2W5wg" name="OTFTrace_vc" method="_CyKWkKD2EeCFDJJCA2W5wg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_Mgn2cKKXEeCdIOXlyrCmKQ" name="OTFTrace_vc => BString" client="_aoSDwKAdEeCF0uoVQbVQRg">
+ <supplier xmi:type="uml:Class" href="pathmap://QML_CORE/OS-AL-core.uml#_0AwCEDO0EdyG-pUz-bb-Lg"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_3pab4PwkEeGWn-a9PUOYcA" name="cout"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_kIcwsKbnEeC0_qP7CUZIiQ" name="IConfiguratorTrace"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_nUAnQC8HEeKwPrQVP28AQw" name="IConfiguratorOTF"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_MM6RwDaUEeKkY-29HX5sMQ" name="Trace" isAbstract="true">
+ <generalization xmi:id="_MM6RwTaUEeKkY-29HX5sMQ">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_Zx2ZUA1jEd6tvthBDl600Q"/>
+ </generalization>
+ <ownedAttribute xmi:id="_MM6RwjaUEeKkY-29HX5sMQ" name="portName" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM6RwzaUEeKkY-29HX5sMQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM6RxDaUEeKkY-29HX5sMQ" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_MM6RxTaUEeKkY-29HX5sMQ" name="instanceName">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM6RxjaUEeKkY-29HX5sMQ" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM6RxzaUEeKkY-29HX5sMQ" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_VzFlMLnhEeCxXoyQxQ47PQ" name="containerrules">
+ <ownedComment xmi:id="_aX6QECVIEeCPS8GFKAaKxw" annotatedElement="_GVZxwLdwEd-CtfrGQre34Q">
+ <body>OTF (Open trace format) tracing mechanism</body>
+ </ownedComment>
+ <ownedComment xmi:id="_z43k0ChKEeKFu939Pz1RFA" annotatedElement="_wHuA0KAdEeCF0uoVQbVQRg">
+ <body>An OTF based trace mechanism that tracks value changes</body>
+ </ownedComment>
+ <ownedComment xmi:id="_06dksChKEeKFu939Pz1RFA" annotatedElement="_I2OioPwkEeGWn-a9PUOYcA">
+ <body>LTTng based trace mechanism for port interception</body>
+ </ownedComment>
+ <ownedComment xmi:id="_LlPEIDdMEeKDRPyuWXNFNA" annotatedElement="_If04ACqLEeKGrchWittz_g">
+ <body>LTTng LW mechanism for operations</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_GVZxwLdwEd-CtfrGQre34Q" name="RTraceOTF">
+ <ownedAttribute xmi:id="_lBO5MPUPEeCn1-FCrfecFg" name="trace" visibility="public" type="_aF1w4DKeEd-WprEKTCaiMA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wNCqUPUPEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wNIJ4PUPEeCn1-FCrfecFg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_wNMbUPUPEeCn1-FCrfecFg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_wHuA0KAdEeCF0uoVQbVQRg" name="RTraceOTF_VC">
+ <ownedAttribute xmi:id="_pm5cwPUPEeCn1-FCrfecFg" name="traceVC" visibility="public" type="_aoSDwKAdEeCF0uoVQbVQRg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yevnMPUPEeCn1-FCrfecFg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yez4oPUPEeCn1-FCrfecFg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_ye3jAPUPEeCn1-FCrfecFg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_I2OioPwkEeGWn-a9PUOYcA" name="RTraceLTTNG">
+ <ownedAttribute xmi:id="_d7If0PwkEeGWn-a9PUOYcA" name="interceptor" visibility="public" type="_pwl_MPxWEeGOK9t90vpALA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gYc20PwkEeGWn-a9PUOYcA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gZTLYPwkEeGWn-a9PUOYcA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_gZWOsPwkEeGWn-a9PUOYcA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_vt7dACdbEeKGdt7FoegMYA" name="Copy_Of_RTraceLTTNG">
+ <ownedAttribute xmi:id="_vt7dASdbEeKGdt7FoegMYA" name="interceptor" visibility="public" type="_pwl_MPxWEeGOK9t90vpALA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vt7dAidbEeKGdt7FoegMYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vt7dAydbEeKGdt7FoegMYA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vt7dBCdbEeKGdt7FoegMYA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_vt7dBSdbEeKGdt7FoegMYA" name="tp" visibility="public" type="_rGPjgPxWEeGOK9t90vpALA">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vt7dBidbEeKGdt7FoegMYA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_vt7dBydbEeKGdt7FoegMYA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_vt7dCCdbEeKGdt7FoegMYA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_If04ACqLEeKGrchWittz_g" clientDependency="_riv0oC5vEeKMZ5P9cEChlg" name="LTTngLWRule">
+ <ownedAttribute xmi:id="_Avfe8C8PEeKVAPO2lpiVnA" name="instanceName" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BuA8sC8PEeKVAPO2lpiVnA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BuFOIC8PEeKVAPO2lpiVnA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_BuKtsC8PEeKVAPO2lpiVnA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_DGqhEC2jEeKEc8wNVBgHJg" name="operation1" specification="_eZ1RMCqLEeKGrchWittz_g">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::modellibs::tracing::acceleo::traceLTTng/]
+
+[template public anOperation(operation : Operation)]
+[operation.invokeTP()/]
+[/template]</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_eZ1RMCqLEeKGrchWittz_g" name="interceptOperation" method="_DGqhEC2jEeKEc8wNVBgHJg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_riv0oC5vEeKMZ5P9cEChlg" name="Dependency1" client="_If04ACqLEeKGrchWittz_g" supplier="_rGPjgPxWEeGOK9t90vpALA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_QOOpsPzOEeGKDvxFM1SZ_g" name="traceExtension">
+ <packagedElement xmi:type="uml:Package" xmi:id="_QApWIPzNEeGKDvxFM1SZ_g" name="lttng">
+ <packageMerge xmi:id="_kGXHMPzNEeGKDvxFM1SZ_g">
+ <mergedPackage href="pathmap://QML_CORE/core.uml#_m7SIwOUYEd-P08Bciq_LqQ"/>
+ </packageMerge>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rGPjgPxWEeGOK9t90vpALA" name="LTTngClassTP"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_VMJ8QPzOEeGKDvxFM1SZ_g" name="fixed">
+ <packagedElement xmi:type="uml:Package" xmi:id="_K5J34PzNEeGKDvxFM1SZ_g" name="otf">
+ <packagedElement xmi:type="uml:Usage" xmi:id="_7uQr8D4OEeC-VMxjm_qUAg" name="TraceInit => Thread (for ThreadId)" client="_apuYoDNwEd-1k-POY2IaLg">
+ <supplier xmi:type="uml:Class" href="pathmap://QML_CORE/OS-AL-core.uml#_-HeCsDj_Edy0Rd6V_tf1-Q"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_apuYoDNwEd-1k-POY2IaLg" clientDependency="_UcPagD1nEd-Bk-AHd6yyoA _7uQr8D4OEeC-VMxjm_qUAg" name="TraceInit">
+ <generalization xmi:id="_9zJj0DguEd-9wq2wHPy3lw">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
+ </generalization>
+ <ownedAttribute xmi:id="_vYRuQDj1Ed-nsvkE2JvSTg" name="writer" isStatic="true" type="_W0t44Dj1Ed-nsvkE2JvSTg" isUnique="false" aggregation="shared"/>
+ <ownedAttribute xmi:id="_ZZ8mwDwLEd-CbfVdCYNz6Q" name="manager" isStatic="true" type="_LjsBkDwLEd-CbfVdCYNz6Q" isUnique="false" aggregation="shared"/>
+ <ownedAttribute xmi:id="_28RZED4NEeC-VMxjm_qUAg" name="streamNr" isStatic="true">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_cy5msJ6oEeCNsP1Kjt4f_w" name="sema" isStatic="true">
+ <type xmi:type="uml:Class" href="pathmap://QML_CORE/OS-AL-core.uml#_D8njME_gEdy2tpS719xBwQ"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_czA7cJ6oEeCNsP1Kjt4f_w" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_czCJkJ6oEeCNsP1Kjt4f_w" value="1"/>
+ </ownedAttribute>
+ <interfaceRealization xmi:id="_UcPagD1nEd-Bk-AHd6yyoA" name="derived realization of ILifeCycle" client="_apuYoDNwEd-1k-POY2IaLg">
+ <supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/SystemInterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract href="pathmap://QML_CORE/SystemInterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ </interfaceRealization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ILWGsDgvEd-9wq2wHPy3lw" name="activate" specification="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <language>C/C++</language>
+ <body>const char *filename= &quot;trace.otf&quot;;
+
+//OTF_FileManager* manager;
+
+uint32_t streams= 1;
+
+/* file handles available */
+uint32_t files= 10;
+
+/* per-stream buffer size */
+uint32_t buffersize= 10*1024;
+
+/* compression on/off, test without compression to look at ASCII trace files */
+// int compression= 0;
+
+/*************************************
+* INIT *
+*************************************/
+manager= OTF_FileManager_open( files );
+// assert( NULL != manager );
+
+writer = OTF_Writer_open( filename, streams, manager );
+OTF_Writer_setBufferSizes( writer, buffersize );
+
+streamNr = 1;
+
+OTF_Writer_writeDefTimerResolution( writer,
+ streamNr /* uint32_t stream */,
+ 1e3 /* uint64_t ticksPerSecond */ );
+
+// initial post
+sema.post();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_uUZ2cDj1Ed-nsvkE2JvSTg" name="getWriter" specification="_RNVZoDj1Ed-nsvkE2JvSTg">
+ <language>C/C++</language>
+ <body>return writer;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_2f_-UD1oEd-Bk-AHd6yyoA" name="deactivate" specification="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <language>C/C++</language>
+ <body> </body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_W9k18ChjEeC5Ga5kAgjl0g" name="TraceInit" specification="_MR0d4ChjEeC5Ga5kAgjl0g">
+ <language>C/C++</language>
+ <body>// do not close in deactivate, since additional calls to OTF_write may occur later.
+OTF_Writer_close(writer);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_g2IBUD4NEeC-VMxjm_qUAg" name="getProcessID" specification="_uegYAD4MEeC-VMxjm_qUAg">
+ <language>C/C++</language>
+ <body>int id = OS_AL::ProcessingResources::Thread::getId ();
+for (int i = 0; i &lt; processSet.size (); i++) {
+ if (processSet.get(i) == id) {
+ return i+1;
+ }
+}
+// not known yet => add
+processSet.append(id);
+int processID = processSet.size();
+char name[16];
+sprintf(name, &quot;id: %x&quot;, id);
+OTF_Writer_writeDefProcess(writer, streamNr, processID, name, 0);
+// OS_AL name only valid for threads created with OS_AL
+// OTF_Writer_writeDefProcess(writer, streamNr, processID, OS_AL::ProcessingResources::Thread::getName().data(), 0);
+// not required
+// OTF_Writer_assignProcess(writer, processID, streamNr);
+// OTF_Writer_mapProcess(writer, processID);
+OTF_Writer_writeBeginProcess (writer, 0, processID);
+return processID;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_KUVkMJ6pEeCNsP1Kjt4f_w" name="wait" specification="_VIPBEJ6oEeCNsP1Kjt4f_w">
+ <language>C/C++</language>
+ <body>sema.wait();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_LNI0cJ6pEeCNsP1Kjt4f_w" name="post" specification="_Wm5-gJ6oEeCNsP1Kjt4f_w">
+ <language>C/C++</language>
+ <body>sema.post();</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_RNVZoDj1Ed-nsvkE2JvSTg" name="getWriter" isStatic="true" method="_uUZ2cDj1Ed-nsvkE2JvSTg">
+ <ownedParameter xmi:id="_v6J20Dj2Ed-nsvkE2JvSTg" name="ret" type="_W0t44Dj1Ed-nsvkE2JvSTg" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zsxM0Dj2Ed-nsvkE2JvSTg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zsya8Dj2Ed-nsvkE2JvSTg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="_zszCADj2Ed-nsvkE2JvSTg">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_Ucl_0D1nEd-Bk-AHd6yyoA" name="activate" method="_ILWGsDgvEd-9wq2wHPy3lw"/>
+ <ownedOperation xmi:id="_UdpIsD1nEd-Bk-AHd6yyoA" name="deactivate" method="_2f_-UD1oEd-Bk-AHd6yyoA"/>
+ <ownedOperation xmi:id="_MR0d4ChjEeC5Ga5kAgjl0g" name="TraceInit" method="_W9k18ChjEeC5Ga5kAgjl0g"/>
+ <ownedOperation xmi:id="_uegYAD4MEeC-VMxjm_qUAg" name="getProcessID" isStatic="true" method="_g2IBUD4NEeC-VMxjm_qUAg">
+ <ownedParameter xmi:id="_1PmRUD4MEeC-VMxjm_qUAg" name="ret" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/CORBA.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="_VIPBEJ6oEeCNsP1Kjt4f_w" name="wait" isStatic="true" method="_KUVkMJ6pEeCNsP1Kjt4f_w"/>
+ <ownedOperation xmi:id="_Wm5-gJ6oEeCNsP1Kjt4f_w" name="post" isStatic="true" method="_LNI0cJ6pEeCNsP1Kjt4f_w"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_IewAUDguEd-9wq2wHPy3lw" name="externtypes">
+ <packagedElement xmi:type="uml:Class" xmi:id="_W0t44Dj1Ed-nsvkE2JvSTg" name="OTF_Writer"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_LjsBkDwLEd-CbfVdCYNz6Q" name="OTF_FileManager"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_L90lEDYGEd-JF_b-mKqY4g" name="TraceTesting">
+ <ownedTemplateSignature xmi:id="_NJOoQDYGEd-JF_b-mKqY4g" parameter="_m8qNQDYKEd-JF_b-mKqY4g">
+ <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="_m8qNQDYKEd-JF_b-mKqY4g" parameteredElement="_pfAOMDYKEd-JF_b-mKqY4g">
+ <ownedParameteredElement xmi:type="uml:Enumeration" xmi:id="_pfAOMDYKEd-JF_b-mKqY4g" name="ParamEnumeration" templateParameter="_m8qNQDYKEd-JF_b-mKqY4g"/>
+ </ownedParameter>
+ </ownedTemplateSignature>
+ <packagedElement xmi:type="uml:Class" xmi:id="_QNXx4DYKEd-JF_b-mKqY4g" name="TraceInitB">
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_QNXx4TYKEd-JF_b-mKqY4g" name="initDefs" specification="_QNXx4jYKEd-JF_b-mKqY4g">
+ <language>C/C++</language>
+ <body>OTF_Writer_writeDefFunctionGroup (writer, 0, &quot;application functions&quot;);
+&lt;%for (ownedLiteral) {%>
+ OTF_Writer_writeDefFunction (writer, 0, &lt;%name%>, &quot;&lt;%name%>&quot;, 0, 0);
+&lt;%}%></body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_QNXx4jYKEd-JF_b-mKqY4g" name="initDefs" isStatic="true" method="_QNXx4TYKEd-JF_b-mKqY4g"/>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_NhImwPzNEeGKDvxFM1SZ_g" name="cout"/>
+ <packagedElement xmi:type="uml:Package" xmi:id="_i3FbMPzOEeGKDvxFM1SZ_g" name="lttng">
+ <packagedElement xmi:type="uml:Package" xmi:id="_nAkZEPzOEeGKDvxFM1SZ_g" name="externtypes">
+ <packagedElement xmi:type="uml:Class" xmi:id="_v-VBcPzSEeGKDvxFM1SZ_g" name="tracepoint"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_P2j04CmiEeKp-eCvZDLsaw" name="LTTngCreateDestroy">
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="__CHDcCmlEeKp-eCvZDLsaw" name="LTTngCreateDestroy" specification="_UvQpMCmiEeKp-eCvZDLsaw">
+ <language>C/C++</language>
+ <body>TRACEPOINT_EVENT([tpName/], createClass, [clazz.qualifiedName /])</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_B-fVACmmEeKp-eCvZDLsaw" name="LTTngCreateDestroy" specification="_VUW6UCmiEeKp-eCvZDLsaw">
+ <language>C/C++</language>
+ <body>TRACEPOINT_EVENT([tpName/], destroyClass, [clazz.qualifiedName /])</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_UvQpMCmiEeKp-eCvZDLsaw" name="LTTngCreateDestroy" method="__CHDcCmlEeKp-eCvZDLsaw"/>
+ <ownedOperation xmi:id="_VUW6UCmiEeKp-eCvZDLsaw" name="LTTngCreateDestroy" method="_B-fVACmmEeKp-eCvZDLsaw"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_C4FREDV7EeKGAYOVxzQeAg" name="InitLttng"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_HkxCkDY_EeKxVvAop17bHw" name="traceInterceptorPort">
+ <packageMerge xmi:id="_M9DV4DY_EeKxVvAop17bHw">
+ <mergedPackage href="pathmap://QML_CORE/core.uml#_gEZXADY7EeKvFqG4YPX3sg"/>
+ </packageMerge>
+ <packagedElement xmi:type="uml:Package" xmi:id="_5gDNYPwkEeGWn-a9PUOYcA" name="lttng">
+ <ownedComment xmi:id="_r8PXYPxWEeGOK9t90vpALA" annotatedElement="_pwl_MPxWEeGOK9t90vpALA">
+ <body>Interceptor</body>
+ </ownedComment>
+ <ownedComment xmi:id="_ttvxQPxWEeGOK9t90vpALA" annotatedElement="_rGPjgPxWEeGOK9t90vpALA">
+ <body>Trace Provider
+</body>
+ </ownedComment>
+ <packagedElement xmi:type="uml:Class" xmi:id="_pwl_MPxWEeGOK9t90vpALA" clientDependency="_BV2G4PzTEeGKDvxFM1SZ_g _9ygUUDHKEeKt1a2SZnJmwg _c0nqkDWGEeKGAYOVxzQeAg" name="LTTngInterceptor">
+ <generalization xmi:id="_1963sPxWEeGOK9t90vpALA" general="_dcP9gDaSEeKxVvAop17bHw"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qLhLMPxXEeGOK9t90vpALA" name="[name/]" specification="_YU5H4PxXEeGOK9t90vpALA">
+ <language>C/C++</language>
+ <body>[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::modellibs::tracing::acceleo::traceLTTng/]
+
+[template public anOperation(operation : Operation)]
+
+// create event with operationID/portID and pass call
+[operation.invokeTP()/]
+[if not (type = null)]return [/if]rconn->[operation.cppCall()/];
+[/template]</body>
+ </ownedBehavior>
+ <ownedOperation xmi:id="_YU5H4PxXEeGOK9t90vpALA" name="[name/]" method="_qLhLMPxXEeGOK9t90vpALA"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_BV2G4PzTEeGKDvxFM1SZ_g" name="Usage1" client="_pwl_MPxWEeGOK9t90vpALA" supplier="_v-VBcPzSEeGKDvxFM1SZ_g"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_gveqADHKEeKt1a2SZnJmwg" name="LTTngIntfTP"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_9ygUUDHKEeKt1a2SZnJmwg" name="Dependency1" client="_pwl_MPxWEeGOK9t90vpALA" supplier="_gveqADHKEeKt1a2SZnJmwg"/>
+ <packagedElement xmi:type="uml:Dependency" xmi:id="_c0nqkDWGEeKGAYOVxzQeAg" name="Dependency2" client="_pwl_MPxWEeGOK9t90vpALA" supplier="_C4FREDV7EeKGAYOVxzQeAg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_dcP9gDaSEeKxVvAop17bHw" name="TracePort" isAbstract="true">
+ <generalization xmi:id="_dcP9gTaSEeKxVvAop17bHw">
+ <general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_Zx2ZUA1jEd6tvthBDl600Q"/>
+ </generalization>
+ <ownedAttribute xmi:id="_dcP9gjaSEeKxVvAop17bHw" name="portName" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dcP9gzaSEeKxVvAop17bHw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dcP9hDaSEeKxVvAop17bHw" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_dcP9hTaSEeKxVvAop17bHw" name="instanceName">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dcP9hjaSEeKxVvAop17bHw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dcP9hzaSEeKxVvAop17bHw" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_H_B8gDKeEd-WprEKTCaiMA">
+ <eAnnotations xmi:id="_H_DxsDKeEd-WprEKTCaiMA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_-DLL0DKnEd-WprEKTCaiMA">
+ <eAnnotations xmi:id="_-DXZEDKnEd-WprEKTCaiMA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/FCMProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ </profileApplication>
+ <profileApplication xmi:id="_N6l98DguEd-9wq2wHPy3lw">
+ <eAnnotations xmi:id="_N6vH4DguEd-9wq2wHPy3lw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="http://papyrus/CppProfile/1#/"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://PapyrusCpp_PROFILES/PapyrusCpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ </profileApplication>
+ </uml:Model>
+ <l2:ModelLibrary xmi:id="_ICaAoDKeEd-WprEKTCaiMA" base_Package="_H-ZqYDKeEd-WprEKTCaiMA"/>
+ <FCM:Template xmi:id="_bKc-kDNZEd-0bO2vHbUkEA" base_Element="_aF1w7zKeEd-WprEKTCaiMA" kind="LoopOperations">
+ <formalParam xmi:type="uml:Interface" href="pathmap://QML_CORE/core.uml#_ZzlzMPfBEd2TbIfwytOyPA"/>
+ <templateParam xmi:type="uml:Interface" href="pathmap://QML_CORE/core.uml#_ZzlzMPfBEd2TbIfwytOyPA"/>
+ </FCM:Template>
+ <FCM:DerivedElement xmi:id="_Adb_0DgvEd-9wq2wHPy3lw">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
+ </FCM:DerivedElement>
+ <FCM:Singleton xmi:id="_AdBwIDgvEd-9wq2wHPy3lw" base_Class="_apuYoDNwEd-1k-POY2IaLg"/>
+ <Cpp:CppInclude xmi:id="_ZWEQwDj0Ed-nsvkE2JvSTg" body="#include &lt;otflib/otf.h>" base_class="_aF1w4DKeEd-WprEKTCaiMA"/>
+ <Cpp:CppExternClass xmi:id="_ZVArYDj1Ed-nsvkE2JvSTg" name="otflib/OTF_Writer.h" base_class="_W0t44Dj1Ed-nsvkE2JvSTg"/>
+ <Cpp:CppPtr xmi:id="_9n7OYDj2Ed-nsvkE2JvSTg" base_parameter="_v6J20Dj2Ed-nsvkE2JvSTg"/>
+ <FCM:DerivedElement xmi:id="_UdG9MD1nEd-Bk-AHd6yyoA" base_Element="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_UeZ9sD1nEd-Bk-AHd6yyoA" base_Element="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <Cpp:CppVirtual xmi:id="___fNAD1nEd-Bk-AHd6yyoA" base_operation="_UdpIsD1nEd-Bk-AHd6yyoA"/>
+ <Cpp:CppVirtual xmi:id="_AHNwMD1pEd-Bk-AHd6yyoA" base_operation="_Ucl_0D1nEd-Bk-AHd6yyoA"/>
+ <FCM:DerivedElement xmi:id="_Q44J0EI7Ed-BYfDlJlYJUQ" base_Element="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_Q5EXEEI7Ed-BYfDlJlYJUQ" base_Element="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_6f5KEEJEEd-Ps4Bfh0j9LQ" base_Element="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_6gni0EJEEd-Ps4Bfh0j9LQ" base_Element="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="__8ZM4EPiEd-NwdL0D_IutQ" base_Element="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="__8bpIEPiEd-NwdL0D_IutQ" base_Element="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_Md_SIEQYEd-RDttIPD8NUg" base_Element="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_MeJqMEQYEd-RDttIPD8NUg" base_Element="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_ibefIFKoEd-OfYmxqPWG5g" base_Element="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_ibg7YFKoEd-OfYmxqPWG5g" base_Element="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_KshoEFmvEd-9TNLvplUFDQ" base_Element="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_KskrYFmvEd-9TNLvplUFDQ" base_Element="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_JK7ncF2qEd-12d_h0i1xhQ" base_Element="_Ucl_0D1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:DerivedElement xmi:id="_JK-qwF2qEd-12d_h0i1xhQ" base_Element="_UdpIsD1nEd-Bk-AHd6yyoA">
+ <source xmi:type="uml:Operation" href="pathmap://QML_CORE/SystemInterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
+ </FCM:DerivedElement>
+ <FCM:CppLibrary xmi:id="_Sv6AMIKiEd-XA4A2KZ9L7Q" base_Package="_IewAUDguEd-9wq2wHPy3lw">
+ <libs>otf</libs>
+ <libPaths>/OTF-1.5/otflib/.libs</libPaths>
+ <includePaths>/OTF-1.5</includePaths>
+ <includes>otflib/includes.h</includes>
+ </FCM:CppLibrary>
+ <FCM:ContainerRule xmi:id="_ISo6gLdwEd-CtfrGQre34Q" base_Class="_GVZxwLdwEd-CtfrGQre34Q" extensionKind="InterceptAllPorts" interceptor="_35od4DKrEd-z5o2wSoJ16A">
+ <forConfig href="pathmap://QML_CORE/core.uml#_u6LqoH7eEd-FNNgSS03RxQ"/>
+ </FCM:ContainerRule>
+ <Cpp:CppExternClass xmi:id="_AGg3EPT8Ed-jjdbo8hMhwA" name="otflib/OTF_FileManager.h" base_class="_LjsBkDwLEd-CbfVdCYNz6Q"/>
+ <Cpp:CppInclude xmi:id="_mk_ccD5sEeC-VMxjm_qUAg" body="#include &lt;OS_AL/Sets/SetOf.h>&#xA;OS_AL::Sets::SetOf &lt;int> processSet;" base_class="_apuYoDNwEd-1k-POY2IaLg"/>
+ <FCM:ContainerRule xmi:id="_6FqQoKAdEeCF0uoVQbVQRg" base_Class="_wHuA0KAdEeCF0uoVQbVQRg" extensionKind="InterceptAllPorts" interceptor="_JvP0oKAeEeCF0uoVQbVQRg" propagate="true">
+ <forConfig href="pathmap://QML_CORE/core.uml#_u6LqoH7eEd-FNNgSS03RxQ"/>
+ </FCM:ContainerRule>
+ <FCM:Template xmi:id="_pplDQKAeEeCF0uoVQbVQRg" base_Element="_k4TsoKAeEeCF0uoVQbVQRg" kind="LoopOperations"/>
+ <FCM:InstanceConfigurator xmi:id="_nTMOYKbnEeC0_qP7CUZIiQ" base_Class="_kIcwsKbnEeC0_qP7CUZIiQ"/>
+ <FCM:UseInstanceConfigurator xmi:id="_plb90KbnEeC0_qP7CUZIiQ" base_Class="_aF1w4DKeEd-WprEKTCaiMA" configurator="_nUB1YC8HEeKwPrQVP28AQw"/>
+ <FCM:UseInstanceConfigurator xmi:id="_MmzO0KboEeC0_qP7CUZIiQ" base_Class="_aoSDwKAdEeCF0uoVQbVQRg" configurator="_nUB1YC8HEeKwPrQVP28AQw"/>
+ <FCM:InterceptionRule xmi:id="_RBO5IPUQEeCn1-FCrfecFg" interceptionKind="InterceptAllIn" base_Property="_lBO5MPUPEeCn1-FCrfecFg"/>
+ <FCM:InterceptionRule xmi:id="_TLg_YPUQEeCn1-FCrfecFg" interceptionKind="InterceptAllIn" base_Property="_pm5cwPUPEeCn1-FCrfecFg"/>
+ <FCM:Template xmi:id="_NDkWsBavEeGq1uSGvh4rcQ" base_Element="_35DgwBauEeGq1uSGvh4rcQ"/>
+ <FCM:InteractionComponent xmi:id="_7J88sG6FEeGqWMX2LwdLDw" base_Class="_aF1w4DKeEd-WprEKTCaiMA"/>
+ <FCM:InteractionComponent xmi:id="_-t6LoG6FEeGqWMX2LwdLDw" base_Class="_aoSDwKAdEeCF0uoVQbVQRg"/>
+ <FCM:ContainerRule xmi:id="_RWQC8PwkEeGWn-a9PUOYcA" base_Class="_I2OioPwkEeGWn-a9PUOYcA">
+ <forConfig href="pathmap://QML_CORE/core.uml#_u6LqoH7eEd-FNNgSS03RxQ"/>
+ </FCM:ContainerRule>
+ <FCM:InterceptionRule xmi:id="_m-L0sPwkEeGWn-a9PUOYcA" interceptionKind="InterceptAll" base_Property="_d7If0PwkEeGWn-a9PUOYcA"/>
+ <Cpp:CppInclude xmi:id="__rP4oPxWEeGOK9t90vpALA" header="[import org::eclipse::papyrus::qompass::modellibs::tracing::acceleo::traceLTTng/]&#xA;&#xA;[template public LTTngTP(clazz : Class)]&#xA;[clazz.declareTP()/]&#xA;[/template]" base_class="_rGPjgPxWEeGOK9t90vpALA" preBody="#define TRACEPOINT_CREATE_PROBES&#xA;#define TRACEPOINT_DEFINE"/>
+ <FCM:Template xmi:id="_bKW5IPxXEeGOK9t90vpALA" base_Element="_YU5H4PxXEeGOK9t90vpALA" kind="LoopOperations"/>
+ <FCM:CppLibrary xmi:id="_t_sHUPzOEeGKDvxFM1SZ_g" base_Package="_nAkZEPzOEeGKDvxFM1SZ_g">
+ <libs>lttng-ust</libs>
+ <libs>dl</libs>
+ </FCM:CppLibrary>
+ <Cpp:CppExternClass xmi:id="_1PAQ4PzSEeGKDvxFM1SZ_g" name="lttng/tracepoint.h" base_class="_v-VBcPzSEeGKDvxFM1SZ_g"/>
+ <FCM:Template xmi:id="_flfM8PzhEeGe5LUTfvP5hQ" base_Element="_rGPjgPxWEeGOK9t90vpALA"/>
+ <FCM:InteractionComponent xmi:id="__yL98PzhEeGe5LUTfvP5hQ" base_Class="_pwl_MPxWEeGOK9t90vpALA"/>
+ <Cpp:ManualGeneration xmi:id="_KSTlgCdaEeKGdt7FoegMYA" extensionBody="c" base_Class="_rGPjgPxWEeGOK9t90vpALA"/>
+ <FCM:InterceptionRule xmi:id="_vt_HYSdbEeKGdt7FoegMYA" interceptionKind="InterceptAllIn" base_Property="_vt7dASdbEeKGdt7FoegMYA"/>
+ <l2:Create xmi:id="_X1okQCmiEeKp-eCvZDLsaw" base_BehavioralFeature="_UvQpMCmiEeKp-eCvZDLsaw"/>
+ <l2:Destroy xmi:id="_ZJYEECmiEeKp-eCvZDLsaw" base_BehavioralFeature="_VUW6UCmiEeKp-eCvZDLsaw"/>
+ <FCM:ContainerRule xmi:id="_NtAukCqLEeKGrchWittz_g" base_Class="_If04ACqLEeKGrchWittz_g" kind="LightWeightOORule">
+ <forConfig href="pathmap://QML_CORE/core.uml#_u6LqoH7eEd-FNNgSS03RxQ"/>
+ </FCM:ContainerRule>
+ <FCM:Template xmi:id="_AhsuYCqMEeKGrchWittz_g" base_Element="_eZ1RMCqLEeKGrchWittz_g"/>
+ <FCM:InterceptionRule xmi:id="_IN6uwC2jEeKEc8wNVBgHJg" interceptionKind="InterceptAll" base_Operation="_eZ1RMCqLEeKGrchWittz_g"/>
+ <FCM:UseInstanceConfigurator xmi:id="_1yKFIC8CEeKwPrQVP28AQw" base_Class="_pwl_MPxWEeGOK9t90vpALA" configurator="_nTMOYKbnEeC0_qP7CUZIiQ"/>
+ <FCM:UseInstanceConfigurator xmi:id="_5FYwcC8CEeKwPrQVP28AQw" base_Class="_I2OioPwkEeGWn-a9PUOYcA" configurator="_nTMOYKbnEeC0_qP7CUZIiQ"/>
+ <FCM:UseInstanceConfigurator xmi:id="_gH1RQC8DEeKwPrQVP28AQw" base_Class="_If04ACqLEeKGrchWittz_g" configurator="_nTMOYKbnEeC0_qP7CUZIiQ"/>
+ <FCM:InstanceConfigurator xmi:id="_nUB1YC8HEeKwPrQVP28AQw" base_Class="_nUAnQC8HEeKwPrQVP28AQw"/>
+ <Cpp:CppInclude xmi:id="_gvf4IDHKEeKt1a2SZnJmwg" header="[import org::eclipse::papyrus::qompass::modellibs::tracing::acceleo::traceLTTng/]&#xA;&#xA;[template public LTTngTP(intf : Interface)]&#xA;[intf.declareTP()/]&#xA;[/template]" base_class="_gveqADHKEeKt1a2SZnJmwg" preBody="#define TRACEPOINT_CREATE_PROBES&#xA;#define TRACEPOINT_DEFINE"/>
+ <FCM:Template xmi:id="_gvnM4DHKEeKt1a2SZnJmwg" base_Element="_gveqADHKEeKt1a2SZnJmwg"/>
+ <Cpp:ManualGeneration xmi:id="_gvnz8DHKEeKt1a2SZnJmwg" extensionBody="c" base_Class="_gveqADHKEeKt1a2SZnJmwg"/>
+ <Cpp:ManualGeneration xmi:id="_WUbVADV7EeKGAYOVxzQeAg" extensionBody="c" base_Class="_C4FREDV7EeKGAYOVxzQeAg"/>
+ <Cpp:CppInclude xmi:id="_ZdHkQDV7EeKGAYOVxzQeAg" header="[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]&#xA;[import org::eclipse::papyrus::qompass::designer::core::acceleo::TransformationContext/]&#xA;&#xA;[template public LTTngTP(cl : Classifier)]&#xA;#include &lt;lttng/tracepoint.h>&#xA;&#xA;TRACEPOINT_MODEL_EMF_URI(UMLmodel, starting, &quot;[getSourceRoot().getURI()/]&quot;)&#xA;[/template]&#xA;" base_class="_C4FREDV7EeKGAYOVxzQeAg" preBody=""/>
+ <FCM:Template xmi:id="_HOvQ0DWSEeKGAYOVxzQeAg" base_Element="_C4FREDV7EeKGAYOVxzQeAg" kind="PassClassifier"/>
+</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/plugin.properties b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/plugin.properties
new file mode 100644
index 00000000000..3909dafe6fc
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass model library for tracing (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/plugin.xml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/plugin.xml
new file mode 100644
index 00000000000..59fc39dabaa
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/plugin.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ name="Tracing"
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="pathmap://QML_TRACE/"
+ target="platform:/plugin/org.eclipse.papyrus.qompass.modellibs.tracing/models/library/">
+ </mapping>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library
+ iconpath="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif"
+ name="Qompass model library: tracing"
+ path="pathmap://QML_TRACE/tracing.uml"
+ provider="CEA LIST">
+ </library>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.qompass.designer.core.instanceConfig">
+ <client
+ configuratorID="IConfiguratorTrace"
+ class="org.eclipse.papyrus.qompass.modellibs.tracing.IConfiguratorTrace">
+ </client>
+ <client
+ class="org.eclipse.papyrus.qompass.modellibs.tracing.IConfiguratorOTF"
+ configuratorID="IConfiguratorOTF">
+ </client>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.infra.services.tracepoints.traceMechanism">
+ <client
+ class="org.eclipse.papyrus.qompass.modellibs.tracing.QompassTraceMechanism"
+ traceMechID="org.eclipse.papyrus.qompass.modellibs.tracing.qompass">
+ </client>
+ </extension>
+ <extension point="org.eclipse.ui.newWizards">
+ <wizard
+ category="org.eclipse.ui.Examples/org.eclipse.papyrus.qompass.designer.examples"
+ class="org.eclipse.papyrus.qompass.modellibs.tracing.ClientServerTraceTestModelWizard"
+ finalPerspective="org.eclipse.papyrus.infra.core.perspective"
+ icon="platform:/plugin/org.eclipse.papyrus.qompass.designer.core/icons/Qompass-16x16.gif"
+ id="org.eclipse.papyrus.qompass.modellibs.tracing.newb.ClientServerTraceTest"
+ name="Qompass client/server example with tracing">
+ <selection class="org.eclipse.core.resources.IResource"/>
+ </wizard>
+ </extension>
+ <extension
+ point="org.eclipse.help.toc">
+ <toc file="help/tocconcepts.xml"/>
+ </extension>
+</plugin>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/Activator.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/Activator.java
new file mode 100644
index 00000000000..a9e29bfc7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/Activator.java
@@ -0,0 +1,51 @@
+package org.eclipse.papyrus.qompass.modellibs.tracing;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.modellibs.tracing"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/ClientServerTraceTestModelWizard.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/ClientServerTraceTestModelWizard.java
new file mode 100644
index 00000000000..44b716be54a
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/ClientServerTraceTestModelWizard.java
@@ -0,0 +1,11 @@
+package org.eclipse.papyrus.qompass.modellibs.tracing;
+
+import org.eclipse.papyrus.qompass.modellibs.core.ModelCopyWizard;
+
+
+public class ClientServerTraceTestModelWizard extends ModelCopyWizard {
+
+ public ClientServerTraceTestModelWizard () {
+ modelName = "ClientServerTraceTest";
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorOTF.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorOTF.java
new file mode 100644
index 00000000000..6dae4aa1244
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorOTF.java
@@ -0,0 +1,53 @@
+package org.eclipse.papyrus.qompass.modellibs.tracing;
+
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.IInstanceConfigurator;
+import org.eclipse.papyrus.qompass.designer.core.transformations.ContainerContext;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Property;
+
+
+public class IConfiguratorOTF implements IInstanceConfigurator {
+
+ static final String PROP_PORT_NAME = "portName";
+
+ static final String PROP_INSTANCE_NAME = "instanceName";
+
+ /**
+ * Configure the passed trace instance
+ *
+ * @see org.eclipse.papyrus.qompass.designer.gentools.core.extensions.IInstanceConfigurator
+ */
+ public void configureInstance(InstanceSpecification instance, Property componentPart, ContainerContext context) {
+ // The tracing code needs informations about the component instance and port.
+
+ DepPlanUtils.configureProperty(instance, PROP_INSTANCE_NAME, "\"" + instance.getName() + "\"");
+
+ // port in context => interception of port => provide information about port and interface
+ if(context.port != null) {
+ // obtain required or provided interface (TODO: will fail, if both are provided!)
+ Interface intf = PortUtils.getProvided(context.port);
+ if(intf == null) {
+ intf = PortUtils.getRequired(context.port);
+ }
+
+ DepPlanUtils.configureProperty(instance, PROP_PORT_NAME, "\"" + context.port.getName() + "\"");
+ if(intf != null) {
+ // this is specific for OTF:
+ // each container contains an attribute (id_<name>) for each operation. This is configured here,
+ // since we add instance information to the trace (is that useful??, seems like a hack)
+ for(Operation op : intf.getOperations()) {
+ String id = Utils.getTop(context.executorIS).getName() + "::Tracing::Trace::ID_" +
+ context.executorIS.getName().replace(".", "_") + "_" + op.getName();
+ DepPlanUtils.configureProperty(instance, "id_" + op.getName(), id);
+ }
+ }
+ }
+
+
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorTrace.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorTrace.java
new file mode 100644
index 00000000000..9e33f4bda66
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorTrace.java
@@ -0,0 +1,40 @@
+package org.eclipse.papyrus.qompass.modellibs.tracing;
+
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.IInstanceConfigurator;
+import org.eclipse.papyrus.qompass.designer.core.transformations.ContainerContext;
+import org.eclipse.papyrus.qompass.designer.core.transformations.ContainerTrafo;
+import org.eclipse.uml2.uml.InstanceSpecification;
+import org.eclipse.uml2.uml.Property;
+
+public class IConfiguratorTrace implements IInstanceConfigurator {
+
+ static final String PROP_PORT_NAME = "portName";
+
+ static final String PROP_INSTANCE_NAME = "instanceName";
+
+ /**
+ * Configure the passed trace instance
+ *
+ * @see org.eclipse.papyrus.qompass.designer.gentools.core.extensions.IInstanceConfigurator
+ */
+ public void configureInstance(InstanceSpecification instance, Property componentPart, ContainerContext context) {
+ // The tracing code needs informations about the component instance and port.
+
+ String instanceName = instance.getName();
+ int index = instanceName.lastIndexOf(".");
+ if(index != -1) {
+ String lastSegment = instanceName.substring(index + 1);
+ if(lastSegment.startsWith(ContainerTrafo.interceptorName)) {
+ instanceName = instanceName.substring(0, index);
+ }
+ }
+
+ DepPlanUtils.configureProperty(instance, PROP_INSTANCE_NAME, "\"" + instanceName + "\"");
+
+ // port in context => interception of port => provide information about port and interface
+ if(context.port != null) {
+ DepPlanUtils.configureProperty(instance, PROP_PORT_NAME, "\"" + context.port.getName() + "\"");
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/QompassTraceMechanism.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/QompassTraceMechanism.java
new file mode 100644
index 00000000000..0f0979541f7
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/QompassTraceMechanism.java
@@ -0,0 +1,181 @@
+package org.eclipse.papyrus.qompass.modellibs.tracing;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.infra.core.utils.ServiceUtilsForActionHandlers;
+import org.eclipse.papyrus.infra.services.tracepoints.ITraceMechanism;
+import org.eclipse.papyrus.infra.services.tracepoints.MarkerUtils;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceActions.TAOperation;
+import org.eclipse.papyrus.infra.services.tracepoints.TracepointConstants;
+import org.eclipse.papyrus.qompass.designer.core.Description;
+import org.eclipse.papyrus.qompass.designer.core.StUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+
+import FCM.ConfigOption;
+import FCM.ContainerRule;
+import FCM.RuleApplication;
+
+public class QompassTraceMechanism implements ITraceMechanism {
+
+ public static final String EC3M_TRACING_URI = "pathmap://QML_TRACE/tracing.uml";
+
+ public static final URI tracingURI = URI.createURI(EC3M_TRACING_URI);
+
+ public EList<String> getTraceMechanismIDs(EObject eObj) {
+ EList<String> ids = new BasicEList<String>();
+ // obtain list of all available container rules via Utils. Restrict to those doing tracing.
+ EList<ContainerRule> containerRules = getContainerRules(eObj);
+ for(ContainerRule containerRule : containerRules) {
+ if(isForTracing(containerRule)) {
+ Class clazz = containerRule.getBase_Class();
+ ids.add(clazz.getName());
+ }
+ }
+ if(ids.size() == 0) {
+ ids.add("dummy qompass rule");
+ }
+ return ids;
+ }
+
+ public String getTraceMechanismDescription(EObject eObj, String id) {
+ EList<ContainerRule> containerRules = getContainerRules(eObj);
+ for(ContainerRule containerRule : containerRules) {
+ if(isForTracing(containerRule)) {
+ Class clazz = containerRule.getBase_Class();
+ if(clazz.getName().equals(id)) {
+ return Description.getDescription(clazz);
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Apply the trace mechanism, i.e. set or unset the appropriate ContainerRule for tracing.
+ * Currently handles trace on class.
+ *
+ * Basic idea: always apply same container rule. But container rule expansion is different in function of set tracepoints.
+ * Need to unapply, if there is no longer a trace needing it.
+ */
+ public boolean applyTraceMechanism(EObject eObj, String id, int traceOption) {
+ Class clazzContext = getClassContext(eObj);
+ if(clazzContext == null) {
+ return false;
+ }
+ EList<ContainerRule> containerRules = getContainerRules(eObj);
+ for(ContainerRule containerRule : containerRules) {
+ if(isForTracing(containerRule)) {
+ Class clazz = containerRule.getBase_Class();
+
+ if(clazz.getName().equals(id)) {
+ if(traceOption == TAOperation.OnlyCall.ordinal()) {
+ // yes => what do we then (i.e. how is mapping done??)
+ }
+ RuleApplication ruleApplication = StUtils.applyApp(clazzContext, RuleApplication.class);
+ if((ruleApplication != null) && !ruleApplication.getContainerRule().contains(containerRule)) {
+ ruleApplication.getContainerRule().add(containerRule);
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ // QompassTraceMechanism
+
+ public boolean isForTracing(ContainerRule rule) {
+ for(ConfigOption co : rule.getForConfig()) {
+ // TODO: not very clean to used fixed string
+ if(co.getBase_Class().getName().equals("Trace")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Return the class (component) for which we need to apply a container rule
+ * to enable the tracing of the passed eObject. This eObject may be
+ * (1) A class, in this case it could be returned directly
+ * (2) An operation. In this case, the owning class is returned (caveat: operation might belong to an interface)
+ * (3) A property of the class (including ports).
+ *
+ * @param eObj
+ * see description above
+ * @return the class to a container rule may be applied
+ */
+ public Class getClassContext(EObject eObj) {
+ if(eObj instanceof Class) {
+ return (Class)eObj;
+ } else if(eObj instanceof Operation) {
+ return ((Operation)eObj).getClass_();
+ } else if(eObj instanceof Property) {
+ return ((Property)eObj).getClass_();
+ } else {
+ return null;
+ }
+ }
+
+ public EList<ContainerRule> getContainerRules(EObject eObj) {
+ if(eObj == null) {
+ // load rules of registered Tracing model library
+ try {
+ ModelSet ms = ServiceUtilsForActionHandlers.getInstance().getModelSet();
+ Resource rs = ms.getResource(tracingURI, true);
+ EList<EObject> contents = rs.getContents();
+ if((contents.size() > 0) && (contents.get(0) instanceof Package)) {
+ return Utils.getAllRules((Package)contents.get(0));
+ }
+ } catch (ServiceException e) {
+ System.err.println(e);
+ }
+ return new BasicEList<ContainerRule>();
+ } else {
+ Package top = Utils.getTop((Element)eObj);
+ return Utils.getAllRules(top);
+ }
+ }
+
+ public boolean configureTraceMechanisms() {
+ String config = "";
+ try {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+
+ if(root != null) {
+ Object tracePoints[] = root.findMarkers(TracepointConstants.tpOrbpMarker, true, IResource.DEPTH_INFINITE);
+ for(Object tracePointObj : tracePoints) {
+ if(tracePointObj instanceof IMarker) {
+ IMarker tracePoint = (IMarker)tracePointObj;
+ EObject eobj = MarkerUtils.getEObjectOfMarker(tracePoint);
+ if(MarkerUtils.isActive(tracePoint)) {
+ if(eobj instanceof NamedElement) {
+ config += ((NamedElement)eobj).getQualifiedName();
+ }
+ }
+ }
+ }
+ }
+ } catch (CoreException e) {
+ }
+ System.err.println(config);
+ return true;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/TraceUtils.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/TraceUtils.java
new file mode 100644
index 00000000000..e8b0e395785
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/TraceUtils.java
@@ -0,0 +1,45 @@
+package org.eclipse.papyrus.qompass.modellibs.tracing.acceleo;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
+import org.eclipse.papyrus.infra.services.tracepoints.MarkerUtils;
+import org.eclipse.papyrus.infra.services.tracepoints.TracepointConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+import org.eclipse.uml2.uml.Element;
+
+public class TraceUtils {
+
+ public static IMarker[] getMarkersForEObject(EObject eObject, String markerType) {
+ Resource resource = eObject.eResource();
+ IFile file = WorkspaceSynchronizer.getFile(resource);
+ if(file != null) {
+ try {
+ return file.findMarkers(markerType, true, IResource.DEPTH_INFINITE);
+ } catch (CoreException e) {
+ }
+ }
+ return new IMarker[0];
+ }
+
+ public static boolean hasTrace(Element eObject) {
+ IMarker markers[] = getMarkersForEObject(eObject, TracepointConstants.tpOrbpMarker);
+ for(IMarker marker : markers) {
+ // explicitly pass resourceSet of eObject we want to compare. Otherwise, the marker utils would
+ // load resources into its own resource set (leading to non-comparable eObjects)
+ EObject eObjOfMarker = MarkerUtils.getEObjectOfMarker(eObject.eResource().getResourceSet(), marker);
+ if(eObjOfMarker == eObject) {
+ return true;
+ }
+ }
+ // TODO: testing workaround (always return true for port based transformations)
+ if(TransformationContext.getPort() != null) {
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceCout.mtl b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceCout.mtl
new file mode 100644
index 00000000000..540bd60fa85
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceCout.mtl
@@ -0,0 +1,14 @@
+[module traceCout('http://www.eclipse.org/uml2/4.0.0/UML')]
+
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public traceOp(operation: Operation)]
+// declare operation & use directly. Problem: declaration can not be within the scope of an operation
+updateTimestamp ();
+cout "enter operation: " << [operation.name/] << " at " << timestamp.ticks() << " parameters: " <<
+ [for (parameter : Parameter | operation.ownedParameter)] "[parameter.name/] (of type [parameter.type.name/]): " << [parameter.name/] [/for] << endl;
+)
+[if not (type = null)] [type.cppType()/] ret = [/if]rconn->[operation.cppCall()/];
+[if not (type = null)] return ret; [/if]
+[/template]
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceLTTng.mtl b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceLTTng.mtl
new file mode 100644
index 00000000000..af7a3358147
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceLTTng.mtl
@@ -0,0 +1,172 @@
+[module traceLTTng('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::TransformationContext/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[query public hasTrace(element : Element) : Boolean =
+ invoke('org.eclipse.papyrus.qompass.modellibs.tracing.acceleo.TraceUtils',
+ 'hasTrace(org.eclipse.uml2.uml.Element)',
+ Sequence{element}) /]
+
+[template public declareTP(cl: Classifier)]
+#if !defined(HFILENAME_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
+#define HFILENAME_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <lttng/tracepoint.h>
+[for (operation : Operation | cl.getAllOperations())]
+[if hasTrace()]
+[declareTPop(tpName1(), operation)/]
+[/if]
+[/for]
+
+#undef TRACEPOINT_PROVIDER
+#define TRACEPOINT_PROVIDER [tpName1() /]
+
+#undef TRACEPOINT_INCLUDE_FILE
+#define TRACEPOINT_INCLUDE_FILE [trafoContextClassifier().getQualifiedName().replaceAll('::', '/') /].h
+
+#include <lttng/tracepoint-event.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+[/template]
+
+[template public declareTPop(tpName : String, operation : Operation)]
+#include <stdint.h>
+
+// declare trace point
+TRACEPOINT_EVENT([tpName1()/], [operation.tpName2()/],
+ TP_ARGS(const char *, instanceName[if (operation.parametersInInout()->size() > 0)], [/if][for (parameter : Parameter | operation.parametersInInout()) separator(', ')][flattenParNameAndType()/][/for]),
+ TP_FIELDS(
+ ctf_string(instanceName, instanceName)
+ [for (parameter : Parameter | operation.parametersInInout())]
+ [trafoContextClassifier().declareDependency(parameter.type)/][flattenCtfType(parameter.type, parameter.name)/]
+ [/for]
+ )
+)
+TRACEPOINT_MODEL_EMF_URI([tpName1()/], [operation.tpName2()/], "[operation.modelRef()/]")
+
+[/template]
+
+[template public declareCreateDestroy(tpName : String)]
+TRACEPOINT_EVENT([tpName/], createClass,
+ TP_ARGS(const char *, classURI),
+ TP_FIELDS(
+ ctf_string(classURI, classURI)
+ )
+)
+TRACEPOINT_EVENT([tpName/], destroyClass,
+ TP_ARGS(const char *, className),
+ TP_FIELDS(
+ ctf_string(xmdID, className)
+ )
+)
+[/template]
+
+
+[comment
+ The name that is used for the trace provider
+/]
+[template public tpName1()]
+[templateBinding().getNearestPackage().getQualifiedName().varName()/]
+[/template]
+
+
+[comment
+ The name that is used for the type
+/]
+[template public tpName2(operation : Operation)]
+[operation.name/]
+[/template]
+
+
+[comment
+ Reference either the port (if available in the context) or the operation that is traced
+/]
+[template public modelRef(operation : Operation) post(trim())]
+[if (trafoContextPort() = null)]
+ [operation.getSourceRoot().getURI()/]#[operation.xmlID()/]
+[else]
+ [operation.getSourceRoot().getURI()/]#[trafoContextPort().xmlID()/]
+[/if]
+[/template]
+
+[comment
+/]
+[template public declareTraceOp(operation : Operation)]
+[/template]
+
+[template public invokeTP(operation : Operation)]
+[if hasTrace()]
+// use (call) tracepoint
+tracepoint([tpName1()/], [operation.tpName2()/], instanceName[if (operation.parametersInInout()->size() > 0)], [/if][for (parameter : Parameter | operation.parametersInInout()) separator(', ')][flattenParName()/][/for]);
+[/if]
+[/template]
+
+
+[template flattenParNameAndType(parameter : Parameter) post(trim())]
+[if (type.oclIsTypeOf(DataType))]
+ [for (attribute : Property | type.oclAsType(DataType).attribute) separator(', ')][attribute.type.cppTypeWB()/], [parameter.name + '_' + attribute.name/][/for]
+[else]
+ [parameter.type.cppTypeWB()/], [parameter.name/]
+[/if]
+[/template]
+
+[template flattenParName(parameter : Parameter) post(trim())]
+[if (type.oclIsTypeOf(DataType))]
+ [for (attribute : Property | type.oclAsType(DataType).attribute) separator(', ')][parameter.name + '.' + attribute.name/][/for]
+[else]
+ [parameter.name/]
+[/if]
+[/template]
+
+
+[template flattenCtfType(type : Type, name : String) post(trim())]
+[if (type.oclIsTypeOf(DataType))]
+ [for (attribute : Property | type.oclAsType(DataType).attribute) separator('\n')][ctfType(attribute.type, name + '_' + attribute.name)/][/for]
+[else]
+ [ctfType(type, name)/]
+[/if]
+[/template]
+
+
+[template cppTypeWB(type : Type) post(trim())]
+[if
+ (type.qualifiedName = 'UMLPrimitiveTypes::Boolean') or
+ (type.qualifiedName = 'PrimitiveTypes::Boolean') or
+ (type.qualifiedName = 'CORBA::Boolean')]
+ /* bool */ unsigned char
+[else]
+ [cppType()/]
+[/if]
+[/template]
+
+
+[comment
+ Calculate the typename, defaulting to ctf_integer
+ TODO: treat pointer & ref stereotypes (can only evaulate on parameter or attribute, not on Type)
+/]
+[template public ctfType(type : Type, name : String) post(trim())]
+[if
+ (type.qualifiedName = 'CORBA::String') or
+ (type.qualifiedName = 'PrimitiveTypes::String') or
+ (type.qualifiedName = 'UMLPrimitiveTypes::String')]
+ ctf_string([name/], [name/])
+[elseif
+ (type.qualifiedName = 'CORBA::Float') or
+ (type.qualifiedName = 'CORBA::Double') or
+ (type.qualifiedName = 'AnsiCLibrary::float') or
+ (type.qualifiedName = 'AnsiCLibrary::double')]
+ ctf_float([type.cppType()/], [name/], [name/])
+[else]
+ ctf_integer([type.cppTypeWB()/], [name/], [name/])
+[/if]
+[/template]
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceOTF.mtl b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceOTF.mtl
new file mode 100644
index 00000000000..dbf20923f40
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/acceleo/traceOTF.mtl
@@ -0,0 +1,28 @@
+[module traceOTF('http://www.eclipse.org/uml2/4.0.0/UML')/]
+
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::UMLTool/]
+[import org::eclipse::papyrus::qompass::designer::core::acceleo::utils_cpp/]
+
+[template public traceOp(operation: Operation)]
+
+// <instance>_<port>_<operation>
+// easier: <component>_<port>_<operation>
+updateTimestamp ();
+if (!hasDeclaredFunctions) {
+ declareFunctions();
+ hasDeclaredFunctions = true;
+}
+Tracing::TraceInit::wait();
+int processID = Tracing::TraceInit::getProcessID();
+OTF_Writer * writer = Tracing::TraceInit::getWriter();
+OTF_Writer_writeEnter (writer, timestamp.ticks(), <%enumSvcPrefix%>::id_<%owner.varName%>_<%varName%>, processID, 0);
+OTF_Writer_writeEventComment (writer, timestamp.ticks(), processID, portName);
+OTF_Writer_writeEventComment (writer, timestamp.ticks(), processID, instanceName);
+Tracing::TraceInit::post();
+[if not (type = null)] [type.cppType()/] ret = [/if]rconn->[operation.cppCall()/];
+updateTimestamp ();
+Tracing::TraceInit::wait();
+OTF_Writer_writeLeave (writer, timestamp.ticks(), <%enumSvcPrefix%>::id_<%owner.varName%>_<%varName%>, processID, 0);
+Tracing::TraceInit::post();
+[if not (type = null)] return ret;[/if]
+[/template] \ No newline at end of file
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.classpath b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.classpath
new file mode 100644
index 00000000000..64c5e31b7a2
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.project b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.project
new file mode 100644
index 00000000000..657d2f7a65c
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.views.tracepoints</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ccd7816299a
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.views.tracepoints; singleton:=true
+Bundle-Version: 0.9.2.qualifier
+Bundle-Activator: org.eclipse.papyrus.views.tracepoints.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.infra.services.tracepoints;bundle-version="0.9.2",
+ org.eclipse.core.resources;bundle-version="3.7.0",
+ org.eclipse.emf.ecore;bundle-version="2.8.0",
+ org.eclipse.gef;bundle-version="3.8.0",
+ org.eclipse.uml2.uml;bundle-version="4.0.0",
+ org.eclipse.papyrus.infra.core;bundle-version="0.9.2",
+ org.eclipse.papyrus.infra.widgets;bundle-version="0.9.2",
+ org.eclipse.emf.transaction;bundle-version="1.4.0",
+ org.eclipse.gmf.runtime.common.core;bundle-version="1.4.1",
+ org.eclipse.gmf.runtime.common.ui;bundle-version="1.5.0"
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: %pluginProvider
+Bundle-Localization: plugin
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/about.html b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/build.properties b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/build.properties
new file mode 100644
index 00000000000..8c05b0ac6b9
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/,\
+ contexts.xml,\
+ about.html,\
+ plugin.properties
+src.includes = about.html
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/contexts.xml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/contexts.xml
new file mode 100644
index 00000000000..b3b18ae3d68
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/contexts.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<contexts>
+ <context id="viewer" title="Sample View">
+ <description>This is the context help for the sample view with a table viewer. It was generated by a PDE template.</description>
+ <topic href="/PLUGINS_ROOT/org.eclipse.platform.doc.isv/guide/ua_help_context.htm" label="Context-sensitive help">
+ <enablement>
+ <with variable="platform">
+ <test property="org.eclipse.core.runtime.isBundleInstalled" args="org.eclipse.platform.doc.isv"/>
+ </with>
+ </enablement>
+ </topic>
+ </context>
+</contexts>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/breakpoint_view.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/breakpoint_view.gif
new file mode 100644
index 00000000000..f529c5a4225
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/breakpoint_view.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/gotoobj_tsk.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/gotoobj_tsk.gif
new file mode 100644
index 00000000000..cf62b63ae3e
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/gotoobj_tsk.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/skip_brkp.gif b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/skip_brkp.gif
new file mode 100644
index 00000000000..c1751c3ff4f
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/icons/skip_brkp.gif
Binary files differ
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/plugin.properties b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/plugin.properties
new file mode 100644
index 00000000000..b02f21505bc
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus Tracepoint View (Incubation)
+pluginProvider=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/plugin.xml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/plugin.xml
new file mode 100644
index 00000000000..43cfbf7e29e
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/plugin.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ name="Tracepoints"
+ icon="icons/breakpoint_view.gif"
+ category="org.eclipse.papyrus.views.category"
+ class="org.eclipse.papyrus.views.tracepoints.views.TracepointView"
+ id="org.eclipse.papyrus.views.tracepoints.views.Tracepoints">
+ </view>
+ </extension>
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="org.eclipse.jdt.ui.JavaPerspective">
+ <view
+ ratio="0.5"
+ relative="org.eclipse.ui.views.TaskList"
+ relationship="right"
+ id="org.eclipse.papyrus.views.tracepoints.views.SampleView">
+ </view>
+ </perspectiveExtension>
+ </extension>
+ <extension
+ point="org.eclipse.help.contexts">
+ <contexts
+ file="contexts.xml">
+ </contexts>
+ </extension>
+
+</plugin>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/Activator.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/Activator.java
new file mode 100644
index 00000000000..e12d420e77b
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/Activator.java
@@ -0,0 +1,78 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.views.tracepoints;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.views.tracepoints"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path
+ *
+ * @param path
+ * the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return imageDescriptorFromPlugin(PLUGIN_ID, path);
+ }
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/views/TraceViewImages.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/views/TraceViewImages.java
new file mode 100644
index 00000000000..d1dc6b933aa
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/views/TraceViewImages.java
@@ -0,0 +1,44 @@
+/*****************************************************************************
+* Copyright (c) 2012 CEA LIST.
+*
+*
+ * All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+* Contributors:
+* Ansgar Radermacher (CEA LIST) - Initial API and implementation
+*
+*****************************************************************************/
+
+package org.eclipse.papyrus.views.tracepoints.views;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.papyrus.views.tracepoints.Activator;
+import org.eclipse.swt.graphics.Image;
+
+
+public class TraceViewImages {
+
+ public static ImageDescriptor getGotoObjID() {
+ org.eclipse.papyrus.infra.widgets.Activator widgetsActivator =
+ org.eclipse.papyrus.infra.widgets.Activator.getDefault();
+ return widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, "icons/gotoobj_tsk.gif");
+ }
+
+ public static ImageDescriptor getSkipAllID() {
+ org.eclipse.papyrus.infra.widgets.Activator widgetsActivator =
+ org.eclipse.papyrus.infra.widgets.Activator.getDefault();
+ return widgetsActivator.getImageDescriptor(Activator.PLUGIN_ID, "icons/skip_brkp.gif");
+ }
+
+ public static Image getSkipAllImage() {
+ if(skipAllImage == null) {
+ skipAllImage = getSkipAllID().createImage();
+ }
+ return skipAllImage;
+ }
+
+ protected static Image skipAllImage = null;
+}
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/views/TracepointView.java b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/views/TracepointView.java
new file mode 100644
index 00000000000..ace3d79213b
--- /dev/null
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/src/org/eclipse/papyrus/views/tracepoints/views/TracepointView.java
@@ -0,0 +1,521 @@
+/*****************************************************************************
+ * Copyright (c) 2012 CEA LIST.
+ *
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ansgar Radermacher (CEA LIST) - Initial API and implementation
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.views.tracepoints.views;
+
+
+import java.util.Map;
+
+import javax.swing.text.View;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.gef.GraphicalEditPart;
+import org.eclipse.gmf.runtime.common.ui.resources.FileChangeManager;
+import org.eclipse.gmf.runtime.common.ui.resources.IFileObserver;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.util.OpenStrategy;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ICheckStateProvider;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
+import org.eclipse.papyrus.infra.services.tracepoints.MarkerUtils;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceFunctions;
+import org.eclipse.papyrus.infra.services.tracepoints.TraceState;
+import org.eclipse.papyrus.infra.services.tracepoints.TracepointConstants;
+import org.eclipse.papyrus.infra.services.tracepoints.dialogs.TraceActionSelection;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.ide.IGotoMarker;
+import org.eclipse.ui.part.ViewPart;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+
+
+/**
+ * This sample class demonstrates how to plug-in a new
+ * workbench view. The view shows data obtained from the
+ * model. The sample creates a dummy model on the fly,
+ * but a real implementation would connect to the model
+ * available either in this or another plug-in (e.g. the workspace).
+ * The view is connected to the model using a content provider.
+ * <p>
+ * The view uses a label provider to define how model objects should be presented in the view. Each view can present the same model objects using
+ * different labels and icons, if needed. Alternatively, a single label provider can be shared between views in order to ensure that objects of the
+ * same type are presented in the same way everywhere.
+ * <p>
+ */
+
+public class TracepointView extends ViewPart implements ISelectionListener {
+
+ /**
+ * The ID of the view as specified by the extension.
+ */
+ public static final String ID = "org.eclipse.papyrus.views.tracepoints.views.Tracepoints";
+
+
+ private CheckboxTableViewer viewer;
+
+ protected Action actionDelete;
+
+ protected Action actionDeleteAll;
+
+ protected Action actionGoto;
+
+ protected Action actionSkip;
+
+ protected Action actionTraceSelect;
+
+ private Action doubleClickAction;
+
+ private IFileObserver fileObserver = null;
+
+ protected TraceActionSelection tas;
+
+ /**
+ * The content provider class is responsible for
+ * providing objects to the view. It can wrap
+ * existing objects in adapters or simply return
+ * objects as-is. These objects may be sensitive
+ * to the current input of the view, or ignore
+ * it and always show the same content
+ * (like Task List, for example).
+ */
+ class ViewContentProvider implements IStructuredContentProvider {
+
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {
+ }
+
+ public void dispose() {
+ }
+
+ public Object[] getElements(Object parent) {
+ try {
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ if(root != null) {
+ return root.findMarkers(TracepointConstants.tpOrbpMarker, true, IResource.DEPTH_INFINITE);
+ }
+ } catch (CoreException e) {
+ }
+ return new String[]{};
+ }
+ }
+
+
+
+ class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+ public ViewLabelProvider() {
+ this.traceImage = new TraceFunctions();
+ }
+
+ public String getColumnText(Object obj, int index) {
+ if(obj instanceof IMarker) {
+ EObject eobj = MarkerUtils.getEObjectOfMarker((IMarker)obj);
+ if(eobj instanceof NamedElement) {
+ return ((NamedElement)eobj).getQualifiedName();
+ } else if(eobj != null) {
+ return eobj.toString();
+ }
+ }
+ return getText(obj);
+
+ }
+
+ public Image getColumnImage(Object obj, int index) {
+ if(TraceState.skipAllTracepoints) {
+ return TraceViewImages.getSkipAllImage();
+ }
+ if(obj instanceof IMarker) {
+ IMarker marker = (IMarker)obj;
+ ImageDescriptor id = traceImage.getImageDescriptorForGE(marker);
+ if(id != null) {
+ // TODO: leaks!
+ return id.createImage();
+ }
+ }
+ return null;
+ }
+
+ private TraceFunctions traceImage;
+ }
+
+ class NameSorter extends ViewerSorter {
+ }
+
+ /**
+ * The constructor.
+ */
+ public TracepointView() {
+ }
+
+ /**
+ * This is a callback that will allow us
+ * to create the viewer and initialize it.
+ */
+ @Override
+ public void createPartControl(Composite parent) {
+ viewer = CheckboxTableViewer.newCheckList(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+ viewer.setContentProvider(new ViewContentProvider());
+ viewer.setLabelProvider(new ViewLabelProvider());
+ viewer.setCheckStateProvider(new ICheckStateProvider() {
+
+ public boolean isGrayed(Object element) {
+ return false;
+ }
+
+ public boolean isChecked(Object element) {
+ if(element instanceof IMarker) {
+ IMarker marker = (IMarker)element;
+ return marker.getAttribute(TracepointConstants.isActive, false);
+ }
+ return false;
+ }
+ });
+
+ viewer.setSorter(new NameSorter());
+ viewer.setInput(getViewSite());
+
+ getViewSite().getPage().addSelectionListener(this);
+
+
+ // Create the help context id for the viewer's control
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "org.eclipse.papyrus.views.tracepoints.viewer");
+ makeActions();
+ hookContextMenu();
+ hookDoubleClickAction();
+ contributeToActionBars();
+ viewer.addCheckStateListener(new ICheckStateListener() {
+
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ Object element = event.getElement();
+ boolean isChecked = event.getChecked();
+ if(element instanceof IMarker) {
+ IMarker marker = (IMarker)element;
+ try {
+ marker.setAttribute(TracepointConstants.isActive, isChecked);
+ switchUI();
+ } catch (CoreException e) {
+ }
+ }
+ }
+ });
+
+ fileObserver = new IFileObserver() {
+
+ public void handleMarkerDeleted(IMarker marker, @SuppressWarnings("rawtypes") Map attributes) {
+ switchUI();
+ }
+
+ public void handleMarkerChanged(IMarker marker) {
+ switchUI();
+ }
+
+ public void handleMarkerAdded(IMarker marker) {
+ switchUI();
+ }
+
+ // TODO need to handle?
+ public void handleFileRenamed(IFile oldFile, IFile file) {
+ }
+
+ public void handleFileMoved(IFile oldFile, IFile file) {
+ }
+
+ public void handleFileDeleted(IFile file) {
+ }
+
+ public void handleFileChanged(IFile file) {
+ }
+ };
+
+ FileChangeManager.getInstance().addFileObserver(fileObserver);
+ }
+
+ @Override
+ public void dispose() {
+ if(fileObserver != null) {
+ FileChangeManager.getInstance().addFileObserver(fileObserver);
+ }
+ super.dispose();
+ }
+
+ public void switchUI() {
+ Display.getDefault().asyncExec(new Runnable() {
+
+ public void run() {
+ // ... do any work that updates the screen ...
+ viewer.refresh();
+ }
+ });
+ }
+
+ private void hookContextMenu() {
+ MenuManager menuMgr = new MenuManager("#PopupMenu");
+ menuMgr.setRemoveAllWhenShown(true);
+ menuMgr.addMenuListener(new IMenuListener() {
+
+ public void menuAboutToShow(IMenuManager manager) {
+ TracepointView.this.fillContextMenu(manager);
+ }
+ });
+ Menu menu = menuMgr.createContextMenu(viewer.getControl());
+ viewer.getControl().setMenu(menu);
+ getSite().registerContextMenu(menuMgr, viewer);
+ }
+
+ private void contributeToActionBars() {
+ IActionBars bars = getViewSite().getActionBars();
+ fillLocalPullDown(bars.getMenuManager());
+ fillLocalToolBar(bars.getToolBarManager());
+ }
+
+ protected void fillLocalPullDown(IMenuManager manager) {
+ manager.add(actionDelete);
+ manager.add(new Separator());
+ manager.add(actionGoto);
+ }
+
+ protected void fillContextMenu(IMenuManager manager) {
+ manager.add(actionDelete);
+ manager.add(actionGoto);
+ // Other plug-ins can contribute there actions here
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ }
+
+ protected void fillLocalToolBar(IToolBarManager manager) {
+ manager.add(actionDelete);
+ manager.add(actionDeleteAll);
+ manager.add(actionGoto);
+ manager.add(actionSkip);
+ manager.add(actionTraceSelect);
+ }
+
+ protected void makeActions() {
+ actionSkip = new Action("Skip all", Action.AS_CHECK_BOX) {
+
+ @Override
+ public void run() {
+ TraceState.skipAllTracepoints = !TraceState.skipAllTracepoints;
+ switchUI();
+ }
+ };
+ actionSkip.setChecked(TraceState.skipAllTracepoints);
+
+ actionSkip.setImageDescriptor(TraceViewImages.getSkipAllID());
+ actionSkip.setToolTipText("Toggle skipping all trace/break points");
+
+ actionDelete = new Action("Delete") {
+
+ @Override
+ public void run() {
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ if(obj instanceof IMarker) {
+ IMarker marker = (IMarker)obj;
+ try {
+ marker.delete();
+ } catch (CoreException e) {
+ }
+ }
+ }
+ };
+ actionDelete.setToolTipText("Delete trace/breakpoint");
+ actionDelete.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_ELCL_REMOVE));
+
+ actionDeleteAll = new Action() {
+
+ @Override
+ public void run() {
+
+ IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+ if(root != null) {
+ try {
+ root.deleteMarkers(TracepointConstants.tpOrbpMarker, true, 0);
+ } catch (CoreException e) {
+ }
+ }
+ }
+ };
+ actionDeleteAll.setText("Delete all");
+ actionDeleteAll.setToolTipText("Delete all trace/breakpoint");
+ actionDeleteAll.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_ELCL_REMOVEALL));
+
+ actionGoto = new Action() {
+
+ @Override
+ public void run() {
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ if(obj instanceof IMarker) {
+ IMarker marker = (IMarker)obj;
+ boolean onlyNavigatoToActiveEditor = false;
+ IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+ if(onlyNavigatoToActiveEditor) {
+ IEditorPart part = activePage.getActiveEditor();
+ if(part instanceof IGotoMarker) {
+ ((IGotoMarker)part).gotoMarker(marker);
+ }
+ } else {
+ try {
+ IDE.openEditor(activePage, marker, OpenStrategy.activateOnOpen());
+ } catch (PartInitException e) {
+
+ }
+ }
+ }
+ }
+ };
+ actionGoto.setText("Goto");
+ actionGoto.setToolTipText("Navigate to trace/breakpoint");
+ actionGoto.setImageDescriptor(TraceViewImages.getGotoObjID());
+ doubleClickAction = actionGoto;
+
+ actionTraceSelect = new Action() {
+
+ @Override
+ public void run() {
+ ISelection selection = viewer.getSelection();
+ Object obj = ((IStructuredSelection)selection).getFirstElement();
+ if(obj instanceof IMarker) {
+ // EditorPart part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(input, null);
+ IMarker marker = (IMarker)obj;
+ EObject eobj = MarkerUtils.getEObjectOfMarker(marker);
+ if(eobj instanceof Element) {
+ TraceActionSelection tad = new TraceActionSelection(new Shell(), (IMarker)obj, (Element)eobj);
+ tad.open();
+ if(tad.getReturnCode() == IDialogConstants.OK_ID) {
+ Object[] result = tad.getResult();
+ int traceAction = (Integer)result[0];
+ String traceMechanism = (String)result[1];
+ try {
+ marker.setAttribute(TracepointConstants.traceAction, traceAction);
+ marker.setAttribute(TracepointConstants.traceMechanism, traceMechanism);
+ } catch (CoreException e) {
+ }
+ }
+ }
+ }
+ }
+
+ };
+ actionTraceSelect.setText("trace action");
+ actionTraceSelect.setToolTipText("Select trace action");
+ actionTraceSelect.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_TOOL_NEW_WIZARD));
+ }
+
+ protected void hookDoubleClickAction() {
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+
+ public void doubleClick(DoubleClickEvent event) {
+ doubleClickAction.run();
+ }
+ });
+ }
+
+ /**
+ * Passing the focus request to the viewer's control.
+ */
+ @Override
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart,
+ * org.eclipse.jface.viewers.ISelection)
+ */
+ // TODO: function not used currently
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+
+ IStructuredSelection sSelection = null;
+ if(selection instanceof IStructuredSelection) {
+ sSelection = (IStructuredSelection)selection;
+ }
+
+ // exclude case of an empty selection which is not a Tree selection, since changing views provokes an
+ // empty selection (selection gets lost, although same element remains selected)
+ if((selection != null) && (sSelection != null) && sSelection.isEmpty()) {
+ return;
+ }
+ currentElement = null;
+
+ // No available selection: switch to default panel
+ if((sSelection == null) || (sSelection.size() != 1)) {
+ switchUI();
+ return;
+ }
+
+ // Retrieve selected object
+ Object currentObject = sSelection.getFirstElement();
+ // If the object is an edit part, try to get semantic bridge
+ if(currentObject instanceof GraphicalEditPart) {
+ GraphicalEditPart editPart = (GraphicalEditPart)currentObject;
+ if(editPart.getModel() instanceof View) {
+ View view = (View)editPart.getModel();
+ if(view.getElement() instanceof Element) {
+ currentObject = view.getElement();
+ }
+ }
+ } else if(currentObject instanceof IAdaptable) {
+ // modisco ModelElementItem supports IAdaptable (cleaner than cast / dependency with modisco)
+ currentObject = ((IAdaptable)currentObject).getAdapter(EObject.class);
+ }
+
+ if(currentObject instanceof Element) {
+ currentElement = (Element)currentObject;
+ // switchUI();
+ }
+ }
+
+ protected Element currentElement;
+}

Back to the top